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

/src/Ninject.Test/Unit/PipelineTests.cs

http://github.com/ninject/ninject
C# | 94 lines | 78 code | 16 blank | 0 comment | 1 complexity | 2fe41b170fb7829f8989acf425723ed8 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause
  1. namespace Ninject.Tests.Unit.PipelineTests
  2. {
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using FluentAssertions;
  6. using Moq;
  7. using Ninject.Activation;
  8. using Ninject.Activation.Caching;
  9. using Ninject.Activation.Strategies;
  10. using Ninject.Infrastructure.Language;
  11. using Xunit;
  12. public class PipelineContext
  13. {
  14. protected readonly List<Mock<IActivationStrategy>> StrategyMocks = new List<Mock<IActivationStrategy>>();
  15. protected readonly Mock<IActivationCache> ActivationCacheMock;
  16. protected readonly Pipeline Pipeline;
  17. public PipelineContext()
  18. {
  19. this.StrategyMocks.Add(new Mock<IActivationStrategy>());
  20. this.StrategyMocks.Add(new Mock<IActivationStrategy>());
  21. this.StrategyMocks.Add(new Mock<IActivationStrategy>());
  22. this.ActivationCacheMock = new Mock<IActivationCache>();
  23. this.Pipeline = new Pipeline(this.StrategyMocks.Select(mock => mock.Object), this.ActivationCacheMock.Object);
  24. }
  25. }
  26. public class WhenPipelineIsCreated : PipelineContext
  27. {
  28. [Fact]
  29. public void HasListOfStrategies()
  30. {
  31. this.Pipeline.Strategies.Should().NotBeNull();
  32. for (int idx = 0; idx < this.StrategyMocks.Count; idx++)
  33. {
  34. this.Pipeline.Strategies[idx].Should().BeSameAs(this.StrategyMocks[idx].Object);
  35. }
  36. }
  37. }
  38. public class WhenActivateIsCalled : PipelineContext
  39. {
  40. [Fact]
  41. public void CallsActivateOnStrategies()
  42. {
  43. var contextMock = new Mock<IContext>();
  44. var reference = new InstanceReference();
  45. this.Pipeline.Activate(contextMock.Object, reference);
  46. this.StrategyMocks.Map(mock => mock.Verify(x => x.Activate(contextMock.Object, reference)));
  47. }
  48. [Fact]
  49. public void WhenAlreadyActivatedNothingHappens()
  50. {
  51. var contextMock = new Mock<IContext>();
  52. var reference = new InstanceReference();
  53. this.ActivationCacheMock.Setup(activationCache => activationCache.IsActivated(It.IsAny<object>())).Returns(true);
  54. this.Pipeline.Activate(contextMock.Object, reference);
  55. this.StrategyMocks.Map(mock => mock.Verify(x => x.Activate(contextMock.Object, reference), Times.Never()));
  56. }
  57. }
  58. public class WhenDeactivateIsCalled : PipelineContext
  59. {
  60. [Fact]
  61. public void CallsDeactivateOnStrategies()
  62. {
  63. var contextMock = new Mock<IContext>();
  64. var reference = new InstanceReference();
  65. this.Pipeline.Deactivate(contextMock.Object, reference);
  66. this.StrategyMocks.Map(mock => mock.Verify(x => x.Deactivate(contextMock.Object, reference)));
  67. }
  68. [Fact]
  69. public void WhenAlreadyDeactivatedNothingHappens()
  70. {
  71. var contextMock = new Mock<IContext>();
  72. var reference = new InstanceReference();
  73. this.ActivationCacheMock.Setup(activationCache => activationCache.IsDeactivated(It.IsAny<object>())).Returns(true);
  74. this.Pipeline.Deactivate(contextMock.Object, reference);
  75. this.StrategyMocks.Map(mock => mock.Verify(x => x.Deactivate(contextMock.Object, reference), Times.Never()));
  76. }
  77. }
  78. }