diff --git a/Directory.Packages.props b/Directory.Packages.props index 755ad3e7..5a081b85 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -30,7 +30,7 @@ - + @@ -60,4 +60,4 @@ - \ No newline at end of file + diff --git a/src/LinkDotNet.Blog.Web/Features/SimilarBlogPostJob.cs b/src/LinkDotNet.Blog.Web/Features/SimilarBlogPostJob.cs index 1b9917e9..6d8d0789 100644 --- a/src/LinkDotNet.Blog.Web/Features/SimilarBlogPostJob.cs +++ b/src/LinkDotNet.Blog.Web/Features/SimilarBlogPostJob.cs @@ -15,29 +15,19 @@ public class SimilarBlogPostJob : IJob { private readonly IRepository blogPostRepository; private readonly IRepository similarBlogPostRepository; - private readonly bool showSimilarPosts; public SimilarBlogPostJob( IRepository blogPostRepository, - IRepository similarBlogPostRepository, - IOptions applicationConfiguration) + IRepository similarBlogPostRepository) { - ArgumentNullException.ThrowIfNull(applicationConfiguration); - this.blogPostRepository = blogPostRepository; this.similarBlogPostRepository = similarBlogPostRepository; - showSimilarPosts = applicationConfiguration.Value.ShowSimilarPosts; } public async Task RunAsync(IJobExecutionContext context, CancellationToken token) { ArgumentNullException.ThrowIfNull(context); - if (!showSimilarPosts) - { - return; - } - var isInstantJobTriggered = context.Parameter is not null; var noJobPublished = context.ParentOutput is null or 0; if (noJobPublished && !isInstantJobTriggered) diff --git a/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs b/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs index a2f8eec6..1e825876 100644 --- a/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs +++ b/src/LinkDotNet.Blog.Web/RegistrationExtensions/BackgroundServiceRegistrationExtensions.cs @@ -2,6 +2,7 @@ using NCronJob; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Options; namespace LinkDotNet.Blog.Web.RegistrationExtensions; @@ -19,10 +20,13 @@ public static void AddBackgroundServices(this IServiceCollection services) { options .AddJob(p => p.WithCronExpression("* * * * *")) - .ExecuteWhen(s => s.RunJob()); + .ExecuteWhen(s => s.RunJob() + .OnlyIf((IOptions applicationConfiguration) => applicationConfiguration.Value.ShowSimilarPosts)); options.AddJob(p => p.WithCronExpression("0/10 * * * *")); - options.AddJob(); + options.AddJob(c => c + .WithName(nameof(SimilarBlogPostJob)) + .OnlyIf((IOptions applicationConfiguration) => applicationConfiguration.Value.ShowSimilarPosts)); }); } } diff --git a/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/SimilarBlogPostJobTests.cs b/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/SimilarBlogPostJobTests.cs index b6f441ae..fe77fc5f 100644 --- a/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/SimilarBlogPostJobTests.cs +++ b/tests/LinkDotNet.Blog.IntegrationTests/Web/Features/SimilarBlogPostJobTests.cs @@ -29,9 +29,8 @@ public async Task ShouldCalculateSimilarBlogPosts() await Repository.StoreAsync(blogPost1); await Repository.StoreAsync(blogPost2); await Repository.StoreAsync(blogPost3); - var config = Options.Create(new ApplicationConfigurationBuilder().WithShowSimilarPosts(true).Build()); - var job = new SimilarBlogPostJob(Repository, similarBlogPostRepository, config); + var job = new SimilarBlogPostJob(Repository, similarBlogPostRepository); var context = Substitute.For(); context.Parameter.Returns(true); await job.RunAsync(context, CancellationToken.None); @@ -40,26 +39,6 @@ public async Task ShouldCalculateSimilarBlogPosts() similarBlogPosts.Count.ShouldBe(3); } - [Fact] - public async Task ShouldNotCalculateWhenDisabledInApplicationConfiguration() - { - var blogPost1 = new BlogPostBuilder().WithTitle("Title 1").Build(); - var blogPost2 = new BlogPostBuilder().WithTitle("Title 2").Build(); - var blogPost3 = new BlogPostBuilder().WithTitle("Title 3").Build(); - await Repository.StoreAsync(blogPost1); - await Repository.StoreAsync(blogPost2); - await Repository.StoreAsync(blogPost3); - var config = Options.Create(new ApplicationConfigurationBuilder().WithShowSimilarPosts(false).Build()); - - var job = new SimilarBlogPostJob(Repository, similarBlogPostRepository, config); - var context = Substitute.For(); - context.Parameter.Returns(true); - await job.RunAsync(context, CancellationToken.None); - - var similarBlogPosts = await similarBlogPostRepository.GetAllAsync(); - similarBlogPosts.ShouldBeEmpty(); - } - [Fact] public async Task ShouldNotCalculateWhenNotTriggeredAsInstantJob() { @@ -69,9 +48,8 @@ public async Task ShouldNotCalculateWhenNotTriggeredAsInstantJob() await Repository.StoreAsync(blogPost1); await Repository.StoreAsync(blogPost2); await Repository.StoreAsync(blogPost3); - var config = Options.Create(new ApplicationConfigurationBuilder().WithShowSimilarPosts(true).Build()); - var job = new SimilarBlogPostJob(Repository, similarBlogPostRepository, config); + var job = new SimilarBlogPostJob(Repository, similarBlogPostRepository); await job.RunAsync(Substitute.For(), CancellationToken.None); var similarBlogPosts = await similarBlogPostRepository.GetAllAsync();