public async void Test_ConsecutiveEnableEvents_AreOk() { var config = new SwitchToSensorBinding { SwitchId = SwitchId.NewId(), SensorId = SensorId.NewId() }; IReadOnlyCollection <SwitchToSensorBinding> configCollection = new [] { config }; var bindingsRepoMock = new Mock <ISwitchToSensorBindingsRepository>(MockBehavior.Strict); bindingsRepoMock.Setup(m => m.GetAll()).Returns(Task.FromResult(configCollection)); var handler = new BindingController(Mock.Of <IEventSender>(), bindingsRepoMock.Object); await handler.EnableBinding(config.SwitchId, config.SensorId); await handler.EnableBinding(config.SwitchId, config.SensorId); }
public async void TestWhenUnknownBinding_ThenError() { IReadOnlyCollection <SwitchToSensorBinding> config = new [] { new SwitchToSensorBinding { SwitchId = SwitchId.NewId(), SensorId = SensorId.NewId() } }; var bindingsRepoMock = new Mock <ISwitchToSensorBindingsRepository>(MockBehavior.Strict); bindingsRepoMock.Setup(m => m.GetAll()).Returns(Task.FromResult(config)); var publisherMock = new Mock <IEventSender>(MockBehavior.Strict); var handler = new BindingController(publisherMock.Object, bindingsRepoMock.Object); await Assert.ThrowsAsync <InvalidOperationException>(() => handler.EnableBinding(SwitchId.NewId(), SensorId.NewId())); await Assert.ThrowsAsync <InvalidOperationException>(() => handler.DisableBinding(SwitchId.NewId(), SensorId.NewId())); publisherMock.Verify(m => m.SendEvent(It.IsAny <IEvent>()), Times.Never); }
public async void TestWhenBindingReactivated_DeactivationPublishesTurnOff() { var config = new SwitchToSensorBinding { SwitchId = SwitchId.NewId(), SensorId = SensorId.NewId() }; IReadOnlyCollection <SwitchToSensorBinding> configCollection = new [] { config }; var bindingsRepoMock = new Mock <ISwitchToSensorBindingsRepository>(MockBehavior.Strict); bindingsRepoMock.Setup(m => m.GetAll()).Returns(Task.FromResult(configCollection)); var publisherMock = new Mock <IEventSender>(MockBehavior.Strict); publisherMock.Setup(m => m.SendEvent(It.Is <TurnOffEvent>(e => e.SwitchId == config.SwitchId))); var handler = new BindingController(publisherMock.Object, bindingsRepoMock.Object); await handler.DisableBinding(config.SwitchId, config.SensorId); await handler.EnableBinding(config.SwitchId, config.SensorId); await handler.ProcessSensorDeactivation(config.SensorId); publisherMock.Verify(m => m.SendEvent(It.IsAny <TurnOffEvent>()), Times.Once); }