Skip to content

Commit

Permalink
Add more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
DamianEdwards committed May 26, 2024
1 parent 31ee7ba commit 05a6539
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
namespace Aspirant.Hosting;

/// <summary>
/// <c>PublishWith</c> extension methods for <see cref="IResourceBuilder{TResource}"/>.
/// Extension methods for <see cref="IResourceBuilder{TResource}"/>.
/// </summary>
public static class ResourceBuilderPublishWithExtensions
public static partial class ResourceBuilderExtensions
{
/// <summary>
/// Adds an annotation to the resource being built when <see cref="DistributedApplicationExecutionContext.IsPublishMode"/> is <c>true</c>.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,7 @@

namespace Aspirant.Hosting;

/// <summary>
/// <c>RunWith</c> extension methods for <see cref="IResourceBuilder{TResource}"/>.
/// </summary>
public static class ResourceBuilderRunWithExtensions
public static partial class ResourceBuilderExtensions
{
/// <summary>
/// Adds an annotation to the resource being built when <see cref="DistributedApplicationExecutionContext.IsRunMode"/> is <c>true</c>.
Expand Down
46 changes: 42 additions & 4 deletions tests/Aspirant.Hosting.UnitTests/RunWithTests.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System.Diagnostics.CodeAnalysis;
using Aspire.Hosting;
using Aspire.Hosting.ApplicationModel;
using Microsoft.Extensions.DependencyInjection;
Expand All @@ -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<TestAnnotation>()
.RunWithAnnotation(runWithAnnotation);

using var app = builder.Build();
var appModel = app.Services.GetRequiredService<DistributedApplicationModel>();
var resourceA = appModel.Resources.First(p => p.Name == "resourceA");

var annotations = resourceA.Annotations.OfType<TestAnnotation>();
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<TestAnnotation>()
.RunWithAnnotation(runWithAnnotation);

using var app = builder.Build();
var appModel = app.Services.GetRequiredService<DistributedApplicationModel>();
var resourceA = appModel.Resources.First(p => p.Name == "resourceA");

var annotations = resourceA.Annotations.OfType<TestAnnotation>();
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");

Expand All @@ -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");

Expand Down Expand Up @@ -56,10 +89,15 @@ private static Dictionary<string, object> 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
{

}
}

0 comments on commit 05a6539

Please sign in to comment.