diff --git a/test/ScheduledTasks.Tests/Extension/DurableTaskWorkerBuilderExtensionsTests.cs b/test/ScheduledTasks.Tests/Extension/DurableTaskWorkerBuilderExtensionsTests.cs new file mode 100644 index 00000000..f6ca4bf6 --- /dev/null +++ b/test/ScheduledTasks.Tests/Extension/DurableTaskWorkerBuilderExtensionsTests.cs @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +using FluentAssertions; +using Microsoft.DurableTask.Worker; +using Microsoft.DurableTask.Worker.Grpc; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Moq; +using Xunit; +using P = Microsoft.DurableTask.Protobuf; + +namespace Microsoft.DurableTask.ScheduledTasks.Tests.Extension; + +public class DurableTaskWorkerBuilderExtensionsTests +{ + [Fact] + public void UseScheduledTasks_AddsScheduledTasksCapability() + { + // Arrange + ServiceCollection services = new(); + Mock mockBuilder = new(); + mockBuilder.Setup(b => b.Services).Returns(services); + mockBuilder.Setup(b => b.Name).Returns(Options.DefaultName); + + // Act + mockBuilder.Object.UseScheduledTasks(); + + // Assert + ServiceProvider provider = services.BuildServiceProvider(); + IOptions options = provider.GetRequiredService>(); + options.Value.Capabilities.Should().Contain(P.WorkerCapability.ScheduledTasks); + } + + [Fact] + public void UseScheduledTasks_WithNamedOptions_AddsScheduledTasksCapability() + { + // Arrange + ServiceCollection services = new(); + Mock mockBuilder = new(); + mockBuilder.Setup(b => b.Services).Returns(services); + mockBuilder.Setup(b => b.Name).Returns("CustomName"); + + // Act + mockBuilder.Object.UseScheduledTasks(); + + // Assert + ServiceProvider provider = services.BuildServiceProvider(); + IOptionsMonitor optionsMonitor = provider.GetRequiredService>(); + GrpcDurableTaskWorkerOptions options = optionsMonitor.Get("CustomName"); + options.Capabilities.Should().Contain(P.WorkerCapability.ScheduledTasks); + } +} diff --git a/test/ScheduledTasks.Tests/ScheduledTasks.Tests.csproj b/test/ScheduledTasks.Tests/ScheduledTasks.Tests.csproj index 33726a62..a4e1edce 100644 --- a/test/ScheduledTasks.Tests/ScheduledTasks.Tests.csproj +++ b/test/ScheduledTasks.Tests/ScheduledTasks.Tests.csproj @@ -10,7 +10,7 @@ - +