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();