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 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); }