|
|
|
@ -10,12 +10,16 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase |
|
|
|
private readonly IBackgroundJobManager _backgroundJobManager; |
|
|
|
private readonly IDynamicBackgroundJobManager _dynamicBackgroundJobManager; |
|
|
|
private readonly IBackgroundJobStore _backgroundJobStore; |
|
|
|
private readonly IBackgroundJobExecuter _backgroundJobExecuter; |
|
|
|
private readonly DynamicJobExecutionTracker _tracker; |
|
|
|
|
|
|
|
public BackgroundJobManager_Tests() |
|
|
|
{ |
|
|
|
_backgroundJobManager = GetRequiredService<IBackgroundJobManager>(); |
|
|
|
_dynamicBackgroundJobManager = GetRequiredService<IDynamicBackgroundJobManager>(); |
|
|
|
_backgroundJobStore = GetRequiredService<IBackgroundJobStore>(); |
|
|
|
_backgroundJobExecuter = GetRequiredService<IBackgroundJobExecuter>(); |
|
|
|
_tracker = GetRequiredService<DynamicJobExecutionTracker>(); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
@ -35,7 +39,7 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task Should_Store_Jobs_With_JobName() |
|
|
|
public async Task Should_Enqueue_Typed_Job_By_Name() |
|
|
|
{ |
|
|
|
var jobName = BackgroundJobNameAttribute.GetName<MyJobArgs>(); |
|
|
|
var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync(jobName, new |
|
|
|
@ -50,7 +54,7 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task Should_Store_Async_Jobs_With_JobName() |
|
|
|
public async Task Should_Enqueue_Async_Typed_Job_By_Name() |
|
|
|
{ |
|
|
|
var jobName = BackgroundJobNameAttribute.GetName<MyAsyncJobArgs>(); |
|
|
|
var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync(jobName, new { Value = "42" }); |
|
|
|
@ -62,20 +66,36 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task Should_Store_Anonymous_Jobs() |
|
|
|
public async Task Should_Enqueue_Dynamic_Handler_Job() |
|
|
|
{ |
|
|
|
var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync("TestAnonymousJob", new { OrderId = "ORD-001" }); |
|
|
|
var jobIdAsString = await _dynamicBackgroundJobManager.EnqueueAsync("TestDynamicJob", new { OrderId = "ORD-001" }); |
|
|
|
jobIdAsString.ShouldNotBe(default); |
|
|
|
|
|
|
|
var jobInfo = await _backgroundJobStore.FindAsync(Guid.Parse(jobIdAsString)); |
|
|
|
jobInfo.ShouldNotBeNull(); |
|
|
|
jobInfo.JobName.ShouldBe(AnonymousJobArgs.JobNameConstant); |
|
|
|
jobInfo.JobArgs.ShouldContain("TestAnonymousJob"); |
|
|
|
jobInfo.JobArgs.ShouldContain("TestDynamicJob"); |
|
|
|
jobInfo.JobArgs.ShouldContain("ORD-001"); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task Should_Not_Wrap_If_Typed_Job_Exists_For_Same_Name() |
|
|
|
public async Task Should_Execute_Dynamic_Handler_Job() |
|
|
|
{ |
|
|
|
_tracker.ExecutedJsonData.ShouldBeEmpty(); |
|
|
|
|
|
|
|
await _backgroundJobExecuter.ExecuteAsync( |
|
|
|
new JobExecutionContext( |
|
|
|
ServiceProvider, |
|
|
|
typeof(AnonymousJobExecutorAsyncBackgroundJob), |
|
|
|
new AnonymousJobArgs("TestDynamicJob", "{\"OrderId\":\"ORD-001\"}") |
|
|
|
) |
|
|
|
); |
|
|
|
|
|
|
|
_tracker.ExecutedJsonData.ShouldContain(d => d.Contains("ORD-001")); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public async Task Should_Prefer_Typed_Job_Over_Dynamic_Handler() |
|
|
|
{ |
|
|
|
var typedJobName = BackgroundJobNameAttribute.GetName<MyJobArgs>(); |
|
|
|
_dynamicBackgroundJobManager.RegisterHandler(typedJobName, (_, _) => Task.CompletedTask); |
|
|
|
@ -100,12 +120,12 @@ public class BackgroundJobManager_Tests : BackgroundJobsTestBase |
|
|
|
[Fact] |
|
|
|
public void Should_Register_And_Unregister_Handler() |
|
|
|
{ |
|
|
|
_dynamicBackgroundJobManager.IsHandlerRegistered("TestDynamic").ShouldBeFalse(); |
|
|
|
_dynamicBackgroundJobManager.IsHandlerRegistered("TestRegister").ShouldBeFalse(); |
|
|
|
|
|
|
|
_dynamicBackgroundJobManager.RegisterHandler("TestDynamic", (_, _) => Task.CompletedTask); |
|
|
|
_dynamicBackgroundJobManager.IsHandlerRegistered("TestDynamic").ShouldBeTrue(); |
|
|
|
_dynamicBackgroundJobManager.RegisterHandler("TestRegister", (_, _) => Task.CompletedTask); |
|
|
|
_dynamicBackgroundJobManager.IsHandlerRegistered("TestRegister").ShouldBeTrue(); |
|
|
|
|
|
|
|
_dynamicBackgroundJobManager.UnregisterHandler("TestDynamic").ShouldBeTrue(); |
|
|
|
_dynamicBackgroundJobManager.IsHandlerRegistered("TestDynamic").ShouldBeFalse(); |
|
|
|
_dynamicBackgroundJobManager.UnregisterHandler("TestRegister").ShouldBeTrue(); |
|
|
|
_dynamicBackgroundJobManager.IsHandlerRegistered("TestRegister").ShouldBeFalse(); |
|
|
|
} |
|
|
|
} |
|
|
|
|