From 05a653925c25526cad024ccf9c15174732723b66 Mon Sep 17 00:00:00 2001 From: Damian Edwards Date: Sun, 26 May 2024 13:32:18 -0700 Subject: [PATCH] Add more tests --- ... ResourceBuilderExtensions.PublishWith.cs} | 4 +- ...s => ResourceBuilderExtensions.RunWith.cs} | 5 +- .../RunWithTests.cs | 46 +++++++++++++++++-- 3 files changed, 45 insertions(+), 10 deletions(-) rename src/Aspirant.Hosting/{ResourceBuilderPublishWithExtensions.cs => ResourceBuilderExtensions.PublishWith.cs} (98%) rename src/Aspirant.Hosting/{ResourceBuilderRunWithExtensions.cs => ResourceBuilderExtensions.RunWith.cs} (98%) diff --git a/src/Aspirant.Hosting/ResourceBuilderPublishWithExtensions.cs b/src/Aspirant.Hosting/ResourceBuilderExtensions.PublishWith.cs similarity index 98% rename from src/Aspirant.Hosting/ResourceBuilderPublishWithExtensions.cs rename to src/Aspirant.Hosting/ResourceBuilderExtensions.PublishWith.cs index 5e52ffb..1db1d86 100644 --- a/src/Aspirant.Hosting/ResourceBuilderPublishWithExtensions.cs +++ b/src/Aspirant.Hosting/ResourceBuilderExtensions.PublishWith.cs @@ -4,9 +4,9 @@ namespace Aspirant.Hosting; /// -/// PublishWith extension methods for . +/// Extension methods for . /// -public static class ResourceBuilderPublishWithExtensions +public static partial class ResourceBuilderExtensions { /// /// Adds an annotation to the resource being built when is true. diff --git a/src/Aspirant.Hosting/ResourceBuilderRunWithExtensions.cs b/src/Aspirant.Hosting/ResourceBuilderExtensions.RunWith.cs similarity index 98% rename from src/Aspirant.Hosting/ResourceBuilderRunWithExtensions.cs rename to src/Aspirant.Hosting/ResourceBuilderExtensions.RunWith.cs index 82d8bdf..72b7d4e 100644 --- a/src/Aspirant.Hosting/ResourceBuilderRunWithExtensions.cs +++ b/src/Aspirant.Hosting/ResourceBuilderExtensions.RunWith.cs @@ -3,10 +3,7 @@ namespace Aspirant.Hosting; -/// -/// RunWith extension methods for . -/// -public static class ResourceBuilderRunWithExtensions +public static partial class ResourceBuilderExtensions { /// /// Adds an annotation to the resource being built when is true. diff --git a/tests/Aspirant.Hosting.UnitTests/RunWithTests.cs b/tests/Aspirant.Hosting.UnitTests/RunWithTests.cs index 762d033..120b2e7 100644 --- a/tests/Aspirant.Hosting.UnitTests/RunWithTests.cs +++ b/tests/Aspirant.Hosting.UnitTests/RunWithTests.cs @@ -1,4 +1,3 @@ -using System.Diagnostics.CodeAnalysis; using Aspire.Hosting; using Aspire.Hosting.ApplicationModel; using Microsoft.Extensions.DependencyInjection; @@ -7,11 +6,45 @@ namespace Aspirant.Hosting.UnitTests; public class RunWithTests { + [Fact] + public void AnnotationAddedWhenRunning() + { + var builder = DistributedApplication.CreateBuilder(); + var runWithAnnotation = new TestAnnotation(); + var resource = builder.AddResource(new TestResource("resourceA")) + .WithAnnotation() + .RunWithAnnotation(runWithAnnotation); + + using var app = builder.Build(); + var appModel = app.Services.GetRequiredService(); + var resourceA = appModel.Resources.First(p => p.Name == "resourceA"); + + var annotations = resourceA.Annotations.OfType(); + Assert.Contains(runWithAnnotation, annotations); + } + + [Fact] + public void AnnotationNotAddedWhenPublishing() + { + var builder = DistributedApplication.CreateBuilder(["Publishing:Publisher=manifest"]); + var runWithAnnotation = new TestAnnotation(); + var resource = builder.AddResource(new TestResource("resourceA")) + .WithAnnotation() + .RunWithAnnotation(runWithAnnotation); + + using var app = builder.Build(); + var appModel = app.Services.GetRequiredService(); + var resourceA = appModel.Resources.First(p => p.Name == "resourceA"); + + var annotations = resourceA.Annotations.OfType(); + Assert.DoesNotContain(runWithAnnotation, annotations); + } + [Fact] public void SimpleEnvironmentWithNameAndValueAddedWhenRunning() { var builder = DistributedApplication.CreateBuilder(); - var resource = builder.AddResource(new ResourceA("resourceA")) + var resource = builder.AddResource(new TestResource("resourceA")) .WithEnvironment("first", "firstValue") .RunWithEnvironment("myName", "value"); @@ -27,7 +60,7 @@ public void SimpleEnvironmentWithNameAndValueAddedWhenRunning() public void SimpleEnvironmentWithNameAndValueNotAddedWhenPublishing() { var builder = DistributedApplication.CreateBuilder(["Publishing:Publisher=manifest"]); - var resource = builder.AddResource(new ResourceA("resourceA")) + var resource = builder.AddResource(new TestResource("resourceA")) .WithEnvironment("first", "firstValue") .RunWithEnvironment("myName", "value"); @@ -56,10 +89,15 @@ private static Dictionary MaterializeEnvironmentVariables(Distri return environmentVariables; } - private sealed class ResourceA(string name) : IResourceWithEnvironment + private sealed class TestResource(string name) : IResourceWithEnvironment { public string Name => name; public ResourceAnnotationCollection Annotations { get; } = []; } + + private sealed class TestAnnotation : IResourceAnnotation + { + + } }