コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }