From a57b67df8ed2204588a25caca86c9fdd0f54e9c5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 22:17:58 +0000 Subject: [PATCH 1/2] Initial plan From cc0939adba5a28361aa9799aa9c6cd89734972a0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Nov 2025 22:28:37 +0000 Subject: [PATCH 2/2] Add test coverage for UseScheduledTasks capability registration Co-authored-by: YunchuWang <12449837+YunchuWang@users.noreply.github.com> --- ...DurableTaskWorkerBuilderExtensionsTests.cs | 53 +++++++++++++++++++ .../ScheduledTasks.Tests.csproj | 2 +- 2 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 test/ScheduledTasks.Tests/Extension/DurableTaskWorkerBuilderExtensionsTests.cs 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 @@ - +