Ejemplo n.º 1
0
        public async Task GivenTwoPendingExecutions_WhenFailingToPublish_ShouldReScheduled()
        {
            // Given
            var request    = new SchedulePendingRequest();
            var executions = new[]
            {
                JobExecution.New(Job.New("test", "test payload", true, DateTime.UtcNow, DateTime.UtcNow, "* * * * *"),
                                 DateTime.UtcNow),
                JobExecution.New(Job.New("test", "test payload", true, DateTime.UtcNow, DateTime.UtcNow, "* * * * *"),
                                 DateTime.UtcNow),
            };

            Mock.Get(_jobExecutionRepository)
            .SetupSequence(x => x.GetAndMarkPending(It.IsAny <int>(), It.IsAny <DateTime>(), CancellationToken.None))
            .ReturnsAsync(executions)
            .ReturnsAsync(Enumerable.Empty <JobExecution>());
            Mock.Get(_jobPublisher)
            .Setup(x => x.PublishManyAsync(It.IsAny <IEnumerable <JobExecution> >(), CancellationToken.None))
            .ReturnsAsync(false);

            // When
            await _handler.Handle(request, CancellationToken.None);

            // Then
            Mock.Get(_jobExecutionRepo)
            .Verify(x => x.UpdateManyAsync(It.IsAny <IEnumerable <JobExecution> >(), CancellationToken.None),
                    Times.Once);
        }
Ejemplo n.º 2
0
        public async Task GivenNoPendingExecutions_WhenHandling_ShouldReturnZeroScheduled()
        {
            // Given
            var request = new SchedulePendingRequest();

            Mock.Get(_jobExecutionRepository)
            .Setup(x => x.GetAndMarkPending(It.IsAny <int>(), It.IsAny <DateTime>(), CancellationToken.None))
            .ReturnsAsync(Enumerable.Empty <JobExecution>());

            // When
            var result = await _handler.Handle(request, CancellationToken.None);

            // Then
            result.NumScheduled.ShouldBe(0);
        }
Ejemplo n.º 3
0
        public async Task GivenNoPendingExecutions_WhenHandling_ShouldNotQueueExecutions()
        {
            // Given
            var request = new SchedulePendingRequest();

            Mock.Get(_jobExecutionRepository)
            .Setup(x => x.GetAndMarkPending(It.IsAny <int>(), It.IsAny <DateTime>(), CancellationToken.None))
            .ReturnsAsync(Enumerable.Empty <JobExecution>());

            // When
            await _handler.Handle(request, CancellationToken.None);

            // Then
            Mock.Get(_jobPublisher)
            .Verify(x => x.PublishManyAsync(It.IsAny <IEnumerable <JobExecution> >(), CancellationToken.None),
                    Times.Never);
        }
Ejemplo n.º 4
0
        public async Task GivenTwoPendingExecutions_WhenHandling_ShouldReturnTwoScheduled()
        {
            // Given
            var request    = new SchedulePendingRequest();
            var executions = new[]
            {
                JobExecution.New(Job.New("test", "test payload", true, DateTime.UtcNow, DateTime.UtcNow, "* * * * *"),
                                 DateTime.UtcNow),
                JobExecution.New(Job.New("test", "test payload", true, DateTime.UtcNow, DateTime.UtcNow, "* * * * *"),
                                 DateTime.UtcNow),
            };

            Mock.Get(_jobExecutionRepository)
            .SetupSequence(x => x.GetAndMarkPending(It.IsAny <int>(), It.IsAny <DateTime>(), CancellationToken.None))
            .ReturnsAsync(executions)
            .ReturnsAsync(Enumerable.Empty <JobExecution>());

            // When
            var result = await _handler.Handle(request, CancellationToken.None);

            // Then
            result.NumScheduled.ShouldBe(2);
        }