public async Task UpdateHueEndpointAsync_ScheduleNotApplicable_CalledExpected() { var appLifetimeMock = Mock.Of <IHostApplicationLifetime>(); var loggerMock = Mock.Of <ILogger <HueUpdaterService> >(); var activityStatusResolverMock = new Mock <IResolver <CIActivityStatus[], CIActivityStatus> >(); var buildStatusResolverMock = new Mock <IResolver <CIBuildStatus[], CIBuildStatus> >(); var hueAlertResolverMock = new Mock <IResolver <CIStatusChangeQuery, HueAlert> >(); var hueColorResolverMock = new Mock <IResolver <CIStatus, HueColor> >(); var hueInvokerMock = new Mock <IHueInvoker>(); var serializerMock = new Mock <ISerializer>(); var scheduleApplicabilityResolverMock = new Mock <IResolver <ScheduleQuery, bool> >(); var scheduleResolverMock = new Mock <IResolver <DateTime, (string Name, TimeRangeSettings Times)> >(); var activityStatusAggregatorMock = new Mock <IActivityStatusAggregator <Task <CIActivityStatus> > >(); var buildStatusAggregatorMock = new Mock <IBuildStatusAggregator <Task <CIBuildStatus> > >(); activityStatusResolverMock.Setup(m => m.Resolve(It.IsAny <CIActivityStatus[]>())).Returns(new CIActivityStatus()).Verifiable(); buildStatusResolverMock.Setup(m => m.Resolve(It.IsAny <CIBuildStatus[]>())).Returns(new CIBuildStatus()).Verifiable(); hueAlertResolverMock.Setup(m => m.Resolve(It.IsAny <CIStatusChangeQuery>())).Returns(new HueAlert()).Verifiable(); hueColorResolverMock.Setup(m => m.Resolve(It.IsAny <CIStatus>())).Returns(new HueColor()).Verifiable(); hueInvokerMock.Setup(m => m.PutAsync(It.IsAny <HueColor>())).ReturnsAsync(new ExpandoObject()).Verifiable(); hueInvokerMock.Setup(m => m.PutAsync(It.IsAny <HueAlert>())).ReturnsAsync(new ExpandoObject()).Verifiable(); hueInvokerMock.Setup(m => m.PutAsync(It.IsAny <HuePower>())).ReturnsAsync(new ExpandoObject()).Verifiable(); serializerMock.Setup(m => m.Deserialize <CIStatus>()).Returns(new CIStatus()).Verifiable(); serializerMock.Setup(m => m.Serialize(It.IsAny <CIStatus>())).Verifiable(); scheduleApplicabilityResolverMock.Setup(m => m.Resolve(It.IsAny <ScheduleQuery>())).Returns(false).Verifiable(); scheduleResolverMock.Setup(m => m.Resolve(It.IsAny <DateTime>())).Returns(("", new TimeRangeSettings())).Verifiable(); activityStatusAggregatorMock.Setup(m => m.GetActivityStatus()).ReturnsAsync(new CIActivityStatus()).Verifiable(); buildStatusAggregatorMock.Setup(m => m.GetBuildStatus()).ReturnsAsync(new CIBuildStatus()).Verifiable(); var sut = new HueUpdaterService( appLifetimeMock, loggerMock, activityStatusResolverMock.Object, buildStatusResolverMock.Object, hueAlertResolverMock.Object, hueColorResolverMock.Object, hueInvokerMock.Object, serializerMock.Object, scheduleApplicabilityResolverMock.Object, scheduleResolverMock.Object, new[] { activityStatusAggregatorMock.Object }, new[] { buildStatusAggregatorMock.Object } ); await sut.UpdateHueEndpointAsync(); activityStatusResolverMock.Verify(m => m.Resolve(It.IsAny <CIActivityStatus[]>()), Times.Never); buildStatusResolverMock.Verify(m => m.Resolve(It.IsAny <CIBuildStatus[]>()), Times.Never); hueAlertResolverMock.Verify(m => m.Resolve(It.IsAny <CIStatusChangeQuery>()), Times.Never); hueColorResolverMock.Verify(m => m.Resolve(It.IsAny <CIStatus>()), Times.Never); hueInvokerMock.Verify(m => m.PutAsync(It.IsAny <HueColor>()), Times.Never); hueInvokerMock.Verify(m => m.PutAsync(It.IsAny <HueAlert>()), Times.Never); hueInvokerMock.Verify(m => m.PutAsync(It.IsAny <HuePower>()), Times.Once); serializerMock.Verify(m => m.Deserialize <CIStatus>(), Times.Never); serializerMock.Verify(m => m.Serialize(It.IsAny <CIStatus>()), Times.Never); scheduleApplicabilityResolverMock.Verify(m => m.Resolve(It.IsAny <ScheduleQuery>()), Times.Once); scheduleResolverMock.Verify(m => m.Resolve(It.IsAny <DateTime>()), Times.Once); activityStatusAggregatorMock.Verify(m => m.GetActivityStatus(), Times.Never); buildStatusAggregatorMock.Verify(m => m.GetBuildStatus(), Times.Never); }
public async Task StartAsync_CalledExpected() { var appLifetimeMock = new Mock <IHostApplicationLifetime>(); var loggerMock = Mock.Of <ILogger <HueUpdaterService> >(); var activityStatusResolverMock = Mock.Of <IResolver <CIActivityStatus[], CIActivityStatus> >(); var buildStatusResolverMock = Mock.Of <IResolver <CIBuildStatus[], CIBuildStatus> >(); var hueAlertResolverMock = Mock.Of <IResolver <CIStatusChangeQuery, HueAlert> >(); var hueColorResolverMock = Mock.Of <IResolver <CIStatus, HueColor> >(); var hueInvokerMock = Mock.Of <IHueInvoker>(); var serializerMock = Mock.Of <ISerializer>(); var scheduleApplicabilityResolverMock = Mock.Of <IResolver <ScheduleQuery, bool> >(); var scheduleResolverMock = Mock.Of <IResolver <DateTime, (string Name, TimeRangeSettings Times)> >(); var activityStatusAggregatorMock = Mock.Of <IActivityStatusAggregator <Task <CIActivityStatus> > >(); var buildStatusAggregatorMock = Mock.Of <IBuildStatusAggregator <Task <CIBuildStatus> > >(); appLifetimeMock.Setup(m => m.StopApplication()).Verifiable(); var sut = new HueUpdaterService( appLifetimeMock.Object, loggerMock, activityStatusResolverMock, buildStatusResolverMock, hueAlertResolverMock, hueColorResolverMock, hueInvokerMock, serializerMock, scheduleApplicabilityResolverMock, scheduleResolverMock, new[] { activityStatusAggregatorMock }, new[] { buildStatusAggregatorMock } ); Func <Task> action = async() => await sut.StartAsync(new CancellationToken()); await action.Should().ThrowAsync <Exception>(); appLifetimeMock.Verify(m => m.StopApplication(), Times.Once); }