/src/Ninject.Tests/Unit/StartableStrategyTests.cs
C# | 81 lines | 67 code | 14 blank | 0 comment | 0 complexity | baf6d2a0ef8e38c6a139fda89e967089 MD5 | raw file
- using Moq;
- using Ninject.Activation;
- using Ninject.Activation.Strategies;
- using Xunit;
- using Xunit.Should;
- namespace Ninject.Tests.Unit.StartableStrategyTests
- {
- public class StartableStrategyContext
- {
- protected readonly StartableStrategy strategy;
- protected readonly Mock<IContext> contextMock;
- public StartableStrategyContext()
- {
- contextMock = new Mock<IContext>();
- strategy = new StartableStrategy();
- }
- }
- public class WhenActivateIsCalled : StartableStrategyContext
- {
- [Fact]
- public void StrategyStartsInstanceIfItIsStartable()
- {
- var instance = new StartableObject();
- var reference = new InstanceReference { Instance = instance };
- strategy.Activate(contextMock.Object, reference);
- instance.WasStarted.ShouldBeTrue();
- }
- [Fact]
- public void StrategyDoesNotAttemptToStartInstanceIfItIsNotStartable()
- {
- var instance = new object();
- var reference = new InstanceReference { Instance = instance };
- strategy.Activate(contextMock.Object, reference);
- }
- }
- public class WhenDeactivateIsCalled : StartableStrategyContext
- {
- [Fact]
- public void StrategyStopsInstanceIfItIsStartable()
- {
- var instance = new StartableObject();
- var reference = new InstanceReference { Instance = instance };
- strategy.Deactivate(contextMock.Object, reference);
- instance.WasStopped.ShouldBeTrue();
- }
- [Fact]
- public void StrategyDoesNotAttemptToInitializeInstanceIfItIsNotInitializable()
- {
- var instance = new object();
- var reference = new InstanceReference { Instance = instance };
- strategy.Deactivate(contextMock.Object, reference);
- }
- }
- public class StartableObject : IStartable
- {
- public bool WasStarted { get; set; }
- public bool WasStopped { get; set; }
- public void Start()
- {
- WasStarted = true;
- }
- public void Stop()
- {
- WasStopped = true;
- }
- }
- }