PageRenderTime 62ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/Framework/src/Ncqrs.Tests/NcqrsEnvironmentSpecs.cs

http://github.com/ncqrs/ncqrs
C# | 146 lines | 103 code | 34 blank | 9 comment | 0 complexity | d6f4dfd2ae2efa2cc959f96981f2e269 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, Apache-2.0
  1. using System;
  2. using FluentAssertions;
  3. using Ncqrs.Config;
  4. using Xunit;
  5. using Rhino.Mocks;
  6. using Xunit;
  7. namespace Ncqrs.Tests
  8. {
  9. public class NcqrsEnvironmentSpecs: IDisposable
  10. {
  11. public interface IFoo
  12. {}
  13. public class Foo : IFoo
  14. {}
  15. public interface IBar
  16. {}
  17. public void Dispose()
  18. {
  19. NcqrsEnvironment.Deconfigure();
  20. }
  21. [Fact]
  22. public void When_get_is_called_when_the_environmemt_is_not_configured_defaults_should_still_be_returned()
  23. {
  24. NcqrsEnvironment.Deconfigure();
  25. var defaultClock = new DateTimeBasedClock();
  26. NcqrsEnvironment.SetDefault<IClock>(defaultClock);
  27. NcqrsEnvironment.Get<IClock>().Should().Be(defaultClock);
  28. }
  29. [Fact]
  30. public void Configured_instance_should_over_rule_default()
  31. {
  32. var defaultClock = new DateTimeBasedClock();
  33. var configuredClock = MockRepository.GenerateMock<IClock>();
  34. IClock ingore;
  35. var configuration = MockRepository.GenerateMock<IEnvironmentConfiguration>();
  36. configuration.Stub((m) => m.TryGet(out ingore)).IgnoreArguments().OutRef(configuredClock).Return(true);
  37. NcqrsEnvironment.SetDefault<IClock>(defaultClock);
  38. NcqrsEnvironment.Configure(configuration);
  39. var result = NcqrsEnvironment.Get<IClock>();
  40. Assert.Same(configuredClock, result);
  41. Assert.NotSame(defaultClock, result);
  42. NcqrsEnvironment.Deconfigure();
  43. }
  44. [Fact]
  45. public void Removing_a_default_while_there_is_no_default_registered_should_not_throw_an_exception()
  46. {
  47. NcqrsEnvironment.RemoveDefault<IFoo>();
  48. NcqrsEnvironment.RemoveDefault<IFoo>();
  49. }
  50. [Fact]
  51. public void Setting_a_default_should_multiple_times_should_not_throw_an_exception()
  52. {
  53. var defaultFoo = MockRepository.GenerateMock<IFoo>();
  54. var newDefaultFoo = MockRepository.GenerateMock<IFoo>();
  55. NcqrsEnvironment.SetDefault<IFoo>(defaultFoo);
  56. NcqrsEnvironment.SetDefault<IFoo>(newDefaultFoo);
  57. NcqrsEnvironment.SetDefault<IFoo>(defaultFoo);
  58. NcqrsEnvironment.SetDefault<IFoo>(newDefaultFoo);
  59. }
  60. [Fact]
  61. public void Setting_a_default_should_override_the_exiting_default()
  62. {
  63. var defaultFoo = MockRepository.GenerateMock<IFoo>();
  64. var newDefaultFoo = MockRepository.GenerateMock<IFoo>();
  65. NcqrsEnvironment.SetDefault<IFoo>(defaultFoo);
  66. NcqrsEnvironment.SetDefault<IFoo>(newDefaultFoo);
  67. var result = NcqrsEnvironment.Get<IFoo>();
  68. result.Should().BeSameAs(newDefaultFoo);
  69. }
  70. [Fact]
  71. public void When_get_is_called_the_call_should_be_redirected_to_the_configuration()
  72. {
  73. NcqrsEnvironment.Deconfigure();
  74. // Arrange
  75. IFoo outParameter;
  76. var configuration = MockRepository.GenerateStub<IEnvironmentConfiguration>();
  77. configuration.Stub(x => x.TryGet(out outParameter)).Return(true).OutRef(new Foo());
  78. NcqrsEnvironment.Configure(configuration);
  79. // Act
  80. NcqrsEnvironment.Get<IFoo>();
  81. // Assert
  82. configuration.AssertWasCalled(x=>x.TryGet(out outParameter));
  83. }
  84. [Fact]
  85. public void When_get_is_called_the_call_should_return_what_the_environment_configuration_returned()
  86. {
  87. NcqrsEnvironment.Deconfigure();
  88. // Arrange
  89. IFoo outParameter;
  90. IFoo returnValue = new Foo();
  91. var configuration = MockRepository.GenerateStub<IEnvironmentConfiguration>();
  92. configuration.Stub(x => x.TryGet(out outParameter)).Return(true).OutRef(returnValue);
  93. NcqrsEnvironment.Configure(configuration);
  94. // Act
  95. var result = NcqrsEnvironment.Get<IFoo>();
  96. // Assert
  97. result.Should().Be(returnValue);
  98. }
  99. [Fact]
  100. public void When_get_is_called_but_the_source_did_not_return_an_intance_an_exception_should_be_thrown()
  101. {
  102. NcqrsEnvironment.Deconfigure();
  103. // Arrange
  104. var repository = new MockRepository();
  105. NcqrsEnvironment.Configure(repository.StrictMock<IEnvironmentConfiguration>());
  106. // Act
  107. Action act = () => NcqrsEnvironment.Get<IBar>();
  108. // Assert
  109. act.ShouldThrow<InstanceNotFoundInEnvironmentConfigurationException>();
  110. }
  111. }
  112. }