diff --git a/src/Shared/Dapr/Core/IDaprSidecarResource.cs b/src/Shared/Dapr/Core/IDaprSidecarResource.cs index 8c084236..b611323f 100644 --- a/src/Shared/Dapr/Core/IDaprSidecarResource.cs +++ b/src/Shared/Dapr/Core/IDaprSidecarResource.cs @@ -8,6 +8,6 @@ namespace CommunityToolkit.Aspire.Hosting.Dapr; /// /// Represents a Dapr sidecar resource. /// -public interface IDaprSidecarResource : IResource +public interface IDaprSidecarResource : IResource, IResourceWithWaitSupport { } diff --git a/tests/CommunityToolkit.Aspire.Hosting.Dapr.Tests/WithDaprSidecarTests.cs b/tests/CommunityToolkit.Aspire.Hosting.Dapr.Tests/WithDaprSidecarTests.cs index ce9ce838..0156c49d 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.Dapr.Tests/WithDaprSidecarTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.Dapr.Tests/WithDaprSidecarTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Hosting; +using Aspire.Hosting.ApplicationModel; namespace CommunityToolkit.Aspire.Hosting.Dapr.Tests; @@ -60,4 +61,29 @@ public void OptionsCanBeConfiguredUsingCallback() Assert.Equal("appId", annotation.Options.AppId); } + + [Fact] + public void DaprSidecarSupportsWaitFor() + { + var builder = DistributedApplication.CreateBuilder(); + + builder.AddProject("service-a") + .WithDaprSidecar(); + + var sidecarResource = Assert.Single(builder.Resources.OfType()); + + // Verify that IDaprSidecarResource implements IResourceWithWaitSupport + Assert.IsAssignableFrom(sidecarResource); + + // Create a resource builder and use it with WaitFor + var sidecarResourceBuilder = builder.CreateResourceBuilder(sidecarResource); + + var serviceB = builder.AddProject("service-b") + .WaitFor(sidecarResourceBuilder); + + // Verify the wait annotation was added + Assert.NotNull(serviceB); + var waitAnnotation = Assert.Single(serviceB.Resource.Annotations.OfType()); + Assert.Equal(sidecarResource.Name, waitAnnotation.Resource.Name); + } }