public static async Task Ignores_other_request_statuses(RequestStatus requestStatus) { var nextWorkingDate = 23.December(2020); var mockDateCalculator = new Mock <IDateCalculator>(MockBehavior.Strict); mockDateCalculator.Setup(c => c.GetNextWorkingDate()).Returns(nextWorkingDate); var requests = new[] { new Request("user1", nextWorkingDate, requestStatus), new Request("user2", nextWorkingDate, requestStatus) }; var mockRequestRepository = new Mock <IRequestRepository>(MockBehavior.Strict); mockRequestRepository .Setup(r => r.GetRequests(nextWorkingDate, nextWorkingDate)) .ReturnsAsync(requests); mockRequestRepository .Setup(r => r.SaveRequests(It.IsAny <IReadOnlyCollection <Request> >(), It.IsAny <IReadOnlyCollection <User> >())) .Returns(Task.CompletedTask); var softInterruptionUpdater = new SoftInterruptionUpdater( mockDateCalculator.Object, mockRequestRepository.Object, CreateUserRepository.WithUsers(DefaultUsers)); await softInterruptionUpdater.Run(); mockRequestRepository.Verify(r => r.GetRequests(nextWorkingDate, nextWorkingDate), Times.Once); mockRequestRepository.Verify( r => r.SaveRequests(It.Is <IReadOnlyCollection <Request> >(actual => actual.Count == 0), DefaultUsers), Times.Once); }
public static void ScheduledTaskType_returns_SoftInterruptionUpdater() { var softInterruptionUpdater = new SoftInterruptionUpdater( Mock.Of <IDateCalculator>(), Mock.Of <IRequestRepository>(), Mock.Of <IUserRepository>()); Assert.Equal(ScheduledTaskType.SoftInterruptionUpdater, softInterruptionUpdater.ScheduledTaskType); }
public static void GetNextRunTime_uses_London_time_zone() { var dateCalculator = CreateDateCalculator(27.March(2020).At(11, 2, 0).Utc()); var actual = new SoftInterruptionUpdater( dateCalculator, Mock.Of <IRequestRepository>(), Mock.Of <IUserRepository>()).GetNextRunTime(); var expected = 30.March(2020).At(10, 2, 0).Utc(); Assert.Equal(expected, actual); }
public static void GetNextRunTime_returns_1102_am_on_next_working_day(int currentDay, int expectedNextDay) { var bankHolidays = new[] { 25.December(2020), 28.December(2020) }; var dateCalculator = CreateDateCalculator(currentDay.December(2020).At(11, 2, 0).Utc(), bankHolidays); var actual = new SoftInterruptionUpdater( dateCalculator, Mock.Of <IRequestRepository>(), Mock.Of <IUserRepository>()).GetNextRunTime(); var expected = expectedNextDay.December(2020).At(11, 2, 0).Utc(); Assert.Equal(expected, actual); }
public static async Task Updates_unallocated_requests_to_soft_interrupted() { var nextWorkingDate = 23.December(2020); var mockDateCalculator = new Mock <IDateCalculator>(MockBehavior.Strict); mockDateCalculator.Setup(c => c.GetNextWorkingDate()).Returns(nextWorkingDate); var requests = new[] { new Request("user1", nextWorkingDate, RequestStatus.Interrupted), new Request("user2", nextWorkingDate, RequestStatus.Interrupted) }; var mockRequestRepository = new Mock <IRequestRepository>(MockBehavior.Strict); mockRequestRepository .Setup(r => r.GetRequests(nextWorkingDate, nextWorkingDate)) .ReturnsAsync(requests); mockRequestRepository .Setup(r => r.SaveRequests(It.IsAny <IReadOnlyCollection <Request> >(), It.IsAny <IReadOnlyCollection <User> >())) .Returns(Task.CompletedTask); var softInterruptionUpdater = new SoftInterruptionUpdater( mockDateCalculator.Object, mockRequestRepository.Object, CreateUserRepository.WithUsers(DefaultUsers)); await softInterruptionUpdater.Run(); var expectedRequests = new[] { new Request("user1", nextWorkingDate, RequestStatus.SoftInterrupted), new Request("user2", nextWorkingDate, RequestStatus.SoftInterrupted) }; mockRequestRepository.Verify(r => r.GetRequests(nextWorkingDate, nextWorkingDate), Times.Once); mockRequestRepository.Verify(r => r.SaveRequests( It.Is <IReadOnlyCollection <Request> >(actual => CheckRequests(expectedRequests, actual.ToList())), DefaultUsers), Times.Once); }