Add an architecture diagram for Aspire project (#1174)

* Add an architecture diagram for Aspire project

* .

* "WireMock.Net : " +

* .
This commit is contained in:
Stef Heyenrath
2024-10-04 19:30:47 +02:00
committed by GitHub
parent eb7e6c397f
commit 5e04ff1a42
4 changed files with 101 additions and 14 deletions

View File

@@ -2,20 +2,48 @@ using AspireApp1.AppHost;
var builder = DistributedApplication.CreateBuilder(args); var builder = DistributedApplication.CreateBuilder(args);
//IResourceBuilder<ProjectResource> apiService = builder.AddProject<Projects.AspireApp1_ApiService>("apiservice"); IResourceBuilder<ProjectResource> apiService = builder.AddProject<Projects.AspireApp1_ApiService>("apiservice");
var mappingsPath = Path.Combine(Directory.GetCurrentDirectory(), "WireMockMappings"); var mappingsPath = Path.Combine(Directory.GetCurrentDirectory(), "WireMockMappings");
Console.WriteLine($"MappingsPath: {mappingsPath}"); //IResourceBuilder<WireMockServerResource> apiService = builder
// .AddWireMock("apiservice", WireMockServerArguments.DefaultPort)
// .WithMappingsPath(mappingsPath)
// .WithReadStaticMappings()
// .WithApiMappingBuilder(WeatherForecastApiMock.BuildAsync);
var wiremock = builder //var apiServiceUsedForDocs = builder
.AddWireMock("apiservice", WireMockServerArguments.DefaultPort) // .AddWireMock("apiservice1", WireMockServerArguments.DefaultPort)
.WithMappingsPath(mappingsPath) // .WithApiMappingBuilder(adminApiBuilder =>
.WithReadStaticMappings() // {
.WithApiMappingBuilder(WeatherForecastApiMock.BuildAsync); // var summaries = new[]
// {
// "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
// };
// adminApiBuilder.Given(b => b
// .WithRequest(request => request
// .UsingGet()
// .WithPath("/weatherforecast2")
// )
// .WithResponse(response => response
// .WithHeaders(h => h.Add("Content-Type", "application/json"))
// .WithBodyAsJson(() => Enumerable.Range(1, 5).Select(index =>
// new WeatherForecast
// (
// DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
// Random.Shared.Next(-20, 55),
// "WireMock.Net : " + summaries[Random.Shared.Next(summaries.Length)]
// ))
// .ToArray())
// )
// );
// return Task.CompletedTask;
// });
builder.AddProject<Projects.AspireApp1_Web>("webfrontend") builder.AddProject<Projects.AspireApp1_Web>("webfrontend")
.WithExternalHttpEndpoints() .WithExternalHttpEndpoints()
.WithReference(wiremock); .WithReference(apiService);
builder.Build().Run(); builder.Build().Run();

View File

@@ -23,7 +23,7 @@ internal class WeatherForecastApiMock
( (
DateOnly.FromDateTime(DateTime.Now.AddDays(index)), DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
Random.Shared.Next(-20, 55), Random.Shared.Next(-20, 55),
summaries[Random.Shared.Next(summaries.Length)] "WireMock.Net 2 : " + summaries[Random.Shared.Next(summaries.Length)]
)) ))
.ToArray()) .ToArray())
) )

View File

@@ -11,27 +11,27 @@
{ {
"date": "2024-05-24", "date": "2024-05-24",
"temperatureC": -17, "temperatureC": -17,
"summary": "Balmy" "summary": "WireMock.Net 1 : Balmy"
}, },
{ {
"date": "2024-05-25", "date": "2024-05-25",
"temperatureC": -13, "temperatureC": -13,
"summary": "Mild" "summary": "WireMock.Net 1 : Mild"
}, },
{ {
"date": "2024-05-26", "date": "2024-05-26",
"temperatureC": 31, "temperatureC": 31,
"summary": "Bracing" "summary": "WireMock.Net 1 : Bracing"
}, },
{ {
"date": "2024-05-27", "date": "2024-05-27",
"temperatureC": 6, "temperatureC": 6,
"summary": "Hot" "summary": "WireMock.Net 1 : Hot"
}, },
{ {
"date": "2024-05-28", "date": "2024-05-28",
"temperatureC": -2, "temperatureC": -2,
"summary": "Mild" "summary": "WireMock.Net 1 : Mild"
} }
], ],
"Headers": { "Headers": {

View File

@@ -0,0 +1,59 @@
overview
```mermaid
classDiagram
class WireMockServerResource {
}
class ContainerResource {
}
class IResourceWithServiceDiscovery {
}
class IResourceWithEndpoints {
}
class WireMockServerArguments {
}
class EndpointReference {
}
class AdminApiMappingBuilder {
}
class IWireMockAdminApi {
}
class MappingModelBuilder {
}
class WireMockServerLifecycleHook {
}
class ResourceLoggerService {
}
class DistributedApplicationModel {
}
class IDistributedApplicationLifecycleHook {
}
WireMockServerResource --> ContainerResource : Inherits
WireMockServerResource --> IResourceWithServiceDiscovery : Implements
WireMockServerResource --> WireMockServerArguments : Uses
WireMockServerResource --> EndpointReference : Returns
WireMockServerArguments --> AdminApiMappingBuilder : Uses
AdminApiMappingBuilder --> MappingModelBuilder : Uses
AdminApiMappingBuilder --> IWireMockAdminApi : Uses
IResourceWithServiceDiscovery --> IResourceWithEndpoints : Inherits
WireMockServerLifecycleHook --> IDistributedApplicationLifecycleHook : Implements
WireMockServerLifecycleHook --> ResourceLoggerService : Uses
WireMockServerLifecycleHook --> DistributedApplicationModel : Uses
WireMockServerLifecycleHook --> WireMockServerResource : Uses
WireMockServerLifecycleHook --> IWireMockAdminApi : Uses
```