public async Task Schedule_ManyJobs_ShouldScheduleCorrectly() { // Arrange var builder = new ParameterizedJobBuilder <TestJob, string>(_jobsAdderMock.Object, "HALLO", _globalObsoleteInterval); var scheduledJob = new JobMetadata(); var secondJobDelay = TimeSpan.FromSeconds(27); var thirdJobDelay = TimeSpan.FromMinutes(20); _jobsAdderMock.Setup(a => a.AddEnqueueJob(It.IsAny <JobMetadata>())) .Returns(Task.CompletedTask) .Callback((JobMetadata job) => scheduledJob = job); // Act await builder .Next <TestJob, string>("HALLO2") .WithDelay(secondJobDelay) .Next <TestJob, string>("HALLO3") .WithDelay(thirdJobDelay) .Schedule(); // Assert var firstJob = scheduledJob; Assert.Equal(firstJob.ObsoleteInterval, _globalObsoleteInterval); Assert.Equal(firstJob.Delay, TimeSpan.Zero); Assert.NotNull(firstJob.NextJob); var secondJob = firstJob.NextJob; Assert.Equal(secondJob.ObsoleteInterval, _globalObsoleteInterval); Assert.Equal(secondJob.Delay, secondJobDelay); Assert.NotNull(secondJob.NextJob); var thirdJob = secondJob.NextJob; Assert.Equal(thirdJob.ObsoleteInterval, _globalObsoleteInterval); Assert.Equal(thirdJob.Delay, thirdJobDelay); Assert.Null(thirdJob.NextJob); _jobsAdderMock.Verify(a => a.AddEnqueueJob(It.IsAny <JobMetadata>()), Times.Once); _jobsAdderMock.VerifyNoOtherCalls(); }
public async Task Schedule_NoPropertiesHaveBeenPassed_ShouldScheduleWithDefault() { // Arrange var builder = new ParameterizedJobBuilder <TestJob, string>(_jobsAdderMock.Object, "HALLO", _globalObsoleteInterval); var scheduledJob = new JobMetadata(); _jobsAdderMock.Setup(a => a.AddEnqueueJob(It.IsAny <JobMetadata>())) .Returns(Task.CompletedTask) .Callback((JobMetadata job) => scheduledJob = job); // Act await builder.Schedule(); // Assert Assert.Equal(scheduledJob.StartAt, DateTime.UtcNow, TimeSpan.FromMilliseconds(500)); _jobsAdderMock.Verify(a => a.AddEnqueueJob(It.IsAny <JobMetadata>()), Times.Once); _jobsAdderMock.VerifyNoOtherCalls(); }
public async Task Schedule_SetFailedStrategy_SaveInJobMetadata() { // Arrange var scheduledJob = new JobMetadata(); const int maxRepeatCount = 5; var builder = new ParameterizedJobBuilder <TestJob, string>(_jobsAdderMock.Object, "HALLO", _globalObsoleteInterval) .AddRepeatStrategy <DefaultRepeatStrategy>() .MaxRepeatCount(maxRepeatCount); _jobsAdderMock.Setup(a => a.AddEnqueueJob(It.IsAny <JobMetadata>())) .Returns(Task.CompletedTask) .Callback((JobMetadata job) => scheduledJob = job); // Act await builder.Schedule(); // Assert Assert.Equal(typeof(DefaultRepeatStrategy), scheduledJob.RepeatStrategy); Assert.Equal(scheduledJob.MaxRepeatCount, maxRepeatCount); _jobsAdderMock.Verify(a => a.AddEnqueueJob(It.IsAny <JobMetadata>()), Times.Once); _jobsAdderMock.VerifyNoOtherCalls(); }