public async Task StopAsync_StopsServices() { // Arrange var logger = new Mock <ILogger <ShawarmaExecutor> >().Object; var stateProvider = new ApplicationStateProvider(new Mock <ILogger <ApplicationStateProvider> >().Object); var service = new Mock <IShawarmaService>(); service .Setup(m => m.StopAsync(CancellationToken.None)) .Returns(Task.CompletedTask); var services = new[] { service.Object }; var executor = new ShawarmaExecutor(stateProvider, services, logger); // Act await executor.StopAsync(CancellationToken.None); // Assert service .Verify(m => m.StopAsync(CancellationToken.None), Times.Once); }
public async Task StartAsync_MonitorsForChanges() { // Arrange var logger = new Mock <ILogger <ShawarmaExecutor> >().Object; var stateProvider = new ApplicationStateProvider(new Mock <ILogger <ApplicationStateProvider> >().Object); var service = new Mock <IShawarmaService>(); service .Setup(m => m.UpdateStateAsync(It.IsAny <ApplicationState>(), CancellationToken.None)) .Returns(Task.CompletedTask); service .Setup(m => m.StopAsync(CancellationToken.None)) .Returns(Task.CompletedTask); var services = new[] { service.Object }; var executor = new ShawarmaExecutor(stateProvider, services, logger); // Act await executor.StartAsync(CancellationToken.None); service.Invocations.Clear(); await stateProvider.SetApplicationStateAsync(new ApplicationState { Status = ApplicationStatus.Active }); await stateProvider.SetApplicationStateAsync(new ApplicationState { Status = ApplicationStatus.Inactive }); await Task.Delay(100); // Assert service .Verify(m => m.UpdateStateAsync(It.IsAny <ApplicationState>(), CancellationToken.None), Times.Exactly(2)); service .Verify(m => m.StopAsync(CancellationToken.None), Times.Never); }