diff --git a/Directory.Packages.props b/Directory.Packages.props
index fdeff9446..b1a258b46 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -23,9 +23,9 @@
-
+
-
+
@@ -41,50 +41,50 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
-
-
-
+
+
+
+
@@ -92,22 +92,21 @@
-
+
-
+
-
-
-
-
-
+
+
+
+
-
-
+
+
@@ -124,20 +123,20 @@
-
-
+
+
-
-
+
+
-
-
+
+
@@ -155,9 +154,9 @@
-
+
-
+
diff --git a/src/Analyzers.roslyn4.6/Rocket.Surgery.LaunchPad.Analyzers.roslyn4.6.csproj b/src/Analyzers.roslyn4.6/Rocket.Surgery.LaunchPad.Analyzers.roslyn4.6.csproj
index 41ea76edc..bd2b9103e 100644
--- a/src/Analyzers.roslyn4.6/Rocket.Surgery.LaunchPad.Analyzers.roslyn4.6.csproj
+++ b/src/Analyzers.roslyn4.6/Rocket.Surgery.LaunchPad.Analyzers.roslyn4.6.csproj
@@ -12,8 +12,7 @@
-
+
diff --git a/src/AspNetCore.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs b/src/AspNetCore.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs
index e54b1eb45..5bfd0f4e7 100644
--- a/src/AspNetCore.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs
+++ b/src/AspNetCore.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs
@@ -16,6 +16,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Application)]
public class NewtonsoftJsonConvention : IServiceConvention
{
private readonly FoundationOptions _options;
@@ -54,4 +55,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/AspNetCore.Spatial/Conventions/AspNetCoreSpatialConvention.cs b/src/AspNetCore.Spatial/Conventions/AspNetCoreSpatialConvention.cs
index 8cee33ac6..54158f607 100644
--- a/src/AspNetCore.Spatial/Conventions/AspNetCoreSpatialConvention.cs
+++ b/src/AspNetCore.Spatial/Conventions/AspNetCoreSpatialConvention.cs
@@ -12,6 +12,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Application)]
public class AspNetCoreSpatialConvention : IServiceConvention
{
///
diff --git a/src/AspNetCore/Conventions/AspNetCoreConvention.cs b/src/AspNetCore/Conventions/AspNetCoreConvention.cs
index c739bcfd5..16163ebdc 100644
--- a/src/AspNetCore/Conventions/AspNetCoreConvention.cs
+++ b/src/AspNetCore/Conventions/AspNetCoreConvention.cs
@@ -15,6 +15,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Application)]
public class AspNetCoreConvention : IServiceConvention
{
internal static void PopulateDefaultParts(
@@ -123,4 +124,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
}
);
}
-}
\ No newline at end of file
+}
diff --git a/src/AspNetCore/Conventions/AspNetCoreConventionInstrumentationConvention.cs b/src/AspNetCore/Conventions/AspNetCoreConventionInstrumentationConvention.cs
index a15a0e056..e69973eb9 100644
--- a/src/AspNetCore/Conventions/AspNetCoreConventionInstrumentationConvention.cs
+++ b/src/AspNetCore/Conventions/AspNetCoreConventionInstrumentationConvention.cs
@@ -16,6 +16,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention(typeof(AspNetCoreConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class AspNetCoreConventionInstrumentationConvention : IOpenTelemetryConvention
{
///
@@ -24,4 +25,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
builder.WithTracing(b => b.AddAspNetCoreInstrumentation(options => options.RecordException = true));
builder.WithMetrics(b => b.AddAspNetCoreInstrumentation());
}
-}
\ No newline at end of file
+}
diff --git a/src/AspNetCore/Conventions/AspNetCoreValidationBehaviorConvention.cs b/src/AspNetCore/Conventions/AspNetCoreValidationBehaviorConvention.cs
index ba798704a..731aa07f1 100644
--- a/src/AspNetCore/Conventions/AspNetCoreValidationBehaviorConvention.cs
+++ b/src/AspNetCore/Conventions/AspNetCoreValidationBehaviorConvention.cs
@@ -13,6 +13,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[BeforeConvention(typeof(Foundation.Conventions.FluentValidationConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class AspNetCoreValidationBehaviorConvention : ISetupConvention
{
///
diff --git a/src/AspNetCore/Conventions/FluentValidationConvention.cs b/src/AspNetCore/Conventions/FluentValidationConvention.cs
index 545708aa2..2b8f1a4f9 100644
--- a/src/AspNetCore/Conventions/FluentValidationConvention.cs
+++ b/src/AspNetCore/Conventions/FluentValidationConvention.cs
@@ -26,6 +26,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention(typeof(AspNetCoreConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public partial class FluentValidationConvention : IServiceConvention
{
private static void AddFluentValidationRules(IServiceCollection services)
@@ -133,4 +134,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
// AddFluentValidationRules(services);
}
-}
\ No newline at end of file
+}
diff --git a/src/AspNetCore/Conventions/ProblemDetailsConvention.cs b/src/AspNetCore/Conventions/ProblemDetailsConvention.cs
index 2873135a0..b94437753 100644
--- a/src/AspNetCore/Conventions/ProblemDetailsConvention.cs
+++ b/src/AspNetCore/Conventions/ProblemDetailsConvention.cs
@@ -24,6 +24,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention(typeof(AspNetCoreConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class ProblemDetailsConvention : IServiceConvention
{
///
@@ -82,4 +83,4 @@ out var clientErrorData
}
);
}
-}
\ No newline at end of file
+}
diff --git a/src/AspNetCore/Conventions/RestfulConvention.cs b/src/AspNetCore/Conventions/RestfulConvention.cs
index 4b067ea47..48aec863d 100644
--- a/src/AspNetCore/Conventions/RestfulConvention.cs
+++ b/src/AspNetCore/Conventions/RestfulConvention.cs
@@ -17,6 +17,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention(typeof(AspNetCoreConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class RestfulConvention : IServiceConvention
{
///
diff --git a/src/AspNetCore/Conventions/SwashbuckleConvention.cs b/src/AspNetCore/Conventions/SwashbuckleConvention.cs
index 0e6779959..22319a353 100644
--- a/src/AspNetCore/Conventions/SwashbuckleConvention.cs
+++ b/src/AspNetCore/Conventions/SwashbuckleConvention.cs
@@ -24,6 +24,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention(typeof(AspNetCoreConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public partial class SwashbuckleConvention : IServiceConvention
{
[LoggerMessage(
@@ -139,4 +140,4 @@ string schemaIdSelector(Type type)
}
);
}
-}
\ No newline at end of file
+}
diff --git a/src/AspNetCore/Conventions/SystemJsonTextConvention.cs b/src/AspNetCore/Conventions/SystemJsonTextConvention.cs
index b296fb314..6bbbf4490 100644
--- a/src/AspNetCore/Conventions/SystemJsonTextConvention.cs
+++ b/src/AspNetCore/Conventions/SystemJsonTextConvention.cs
@@ -18,6 +18,7 @@ namespace Rocket.Surgery.LaunchPad.AspNetCore.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention(typeof(AspNetCoreConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class SystemJsonTextConvention : IServiceConvention
{
private readonly FoundationOptions _options;
@@ -56,4 +57,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
.Create(nameof(HttpJsonOptions))
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs b/src/Foundation.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs
index 40a0825bc..530ae2373 100644
--- a/src/Foundation.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs
+++ b/src/Foundation.NewtonsoftJson/Conventions/NewtonsoftJsonConvention.cs
@@ -17,6 +17,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class NewtonsoftJsonConvention : IServiceConvention, ISerilogConvention
{
///
@@ -44,4 +45,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/DefaultConvention.cs b/src/Foundation/Conventions/DefaultConvention.cs
index 9a49800f0..76a0422b3 100644
--- a/src/Foundation/Conventions/DefaultConvention.cs
+++ b/src/Foundation/Conventions/DefaultConvention.cs
@@ -12,6 +12,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class DefaultConvention : IServiceConvention
{
///
diff --git a/src/Foundation/Conventions/FluentValidationConvention.cs b/src/Foundation/Conventions/FluentValidationConvention.cs
index 1a4405174..b8d1d4e9e 100644
--- a/src/Foundation/Conventions/FluentValidationConvention.cs
+++ b/src/Foundation/Conventions/FluentValidationConvention.cs
@@ -23,6 +23,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
[ExportConvention]
[AfterConvention(typeof(MediatRConvention))]
[AfterConvention(typeof(HealthChecksConvention))]
+[ConventionCategory(ConventionCategory.Core)]
public class FluentValidationConvention : IServiceConvention
{
private readonly FoundationOptions _options;
@@ -90,4 +91,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
ServiceDescriptor.Describe(typeof(IStreamPipelineBehavior<,>), typeof(ValidationStreamPipelineBehavior<,>), _options.MediatorLifetime)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/HealthChecksConvention.cs b/src/Foundation/Conventions/HealthChecksConvention.cs
index c3550c2bf..6b014159a 100644
--- a/src/Foundation/Conventions/HealthChecksConvention.cs
+++ b/src/Foundation/Conventions/HealthChecksConvention.cs
@@ -13,6 +13,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class HealthChecksConvention : IServiceConvention
{
///
diff --git a/src/Foundation/Conventions/InstrumentationConvention.cs b/src/Foundation/Conventions/InstrumentationConvention.cs
index 5ef29f59e..568fc5574 100644
--- a/src/Foundation/Conventions/InstrumentationConvention.cs
+++ b/src/Foundation/Conventions/InstrumentationConvention.cs
@@ -14,6 +14,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class InstrumentationConvention : IOpenTelemetryConvention
{
///
@@ -22,4 +23,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
builder.WithTracing(b => b.AddHttpClientInstrumentation(x => x.RecordException = true));
builder.WithMetrics(b => b.AddRuntimeInstrumentation().AddHttpClientInstrumentation());
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/MediatRConvention.cs b/src/Foundation/Conventions/MediatRConvention.cs
index cf649e1b1..1e550e367 100644
--- a/src/Foundation/Conventions/MediatRConvention.cs
+++ b/src/Foundation/Conventions/MediatRConvention.cs
@@ -13,6 +13,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class MediatRConvention : IServiceConvention
{
private readonly FoundationOptions _options;
@@ -52,4 +53,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
}
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/OptionsConvention.cs b/src/Foundation/Conventions/OptionsConvention.cs
index 40d0326bc..8bcbb05fe 100644
--- a/src/Foundation/Conventions/OptionsConvention.cs
+++ b/src/Foundation/Conventions/OptionsConvention.cs
@@ -10,6 +10,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
/// A convention that registers any options POCOs that are found with the
///
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class OptionsConvention : IServiceConvention
{
private readonly MethodInfo _configureMethod;
@@ -37,4 +38,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
_configureMethod.MakeGenericMethod(options).Invoke(null, [services, attribute.OptionsName, configuration.GetSection(attribute.ConfigurationKey),]);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/ServiceDiscoveryConvention.cs b/src/Foundation/Conventions/ServiceDiscoveryConvention.cs
index 13866f843..3a4d16bbe 100644
--- a/src/Foundation/Conventions/ServiceDiscoveryConvention.cs
+++ b/src/Foundation/Conventions/ServiceDiscoveryConvention.cs
@@ -10,19 +10,28 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
-public class ServiceDiscoveryConvention : IServiceConvention
+[ConventionCategory(ConventionCategory.Core)]
+public class ServiceDiscoveryCoreConvention : IServiceConvention
{
///
public void Register(IConventionContext context, IConfiguration configuration, IServiceCollection services)
{
services.AddServiceDiscovery();
+ services.ConfigureHttpClientDefaults(http => http.AddServiceDiscovery());
+ }
+}
- services.ConfigureHttpClientDefaults(
- http =>
- {
- http.AddStandardResilienceHandler();
- http.AddServiceDiscovery();
- }
- );
+///
+/// Service conventions using service discovery
+///
+[PublicAPI]
+[ExportConvention]
+[ConventionCategory(ConventionCategory.Application)]
+public class ServiceDiscoveryConvention : IServiceConvention
+{
+ ///
+ public void Register(IConventionContext context, IConfiguration configuration, IServiceCollection services)
+ {
+ services.ConfigureHttpClientDefaults(http => http.AddStandardResilienceHandler());
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/SystemTextJsonConvention.cs b/src/Foundation/Conventions/SystemTextJsonConvention.cs
index b7acf4c61..4e1a76ced 100644
--- a/src/Foundation/Conventions/SystemTextJsonConvention.cs
+++ b/src/Foundation/Conventions/SystemTextJsonConvention.cs
@@ -18,6 +18,7 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SystemTextJsonConvention : IServiceConvention, ISerilogConvention
{
///
@@ -49,4 +50,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Foundation/Conventions/NodaTimeConvention.cs b/src/Foundation/Conventions/TimeConvention.cs
similarity index 87%
rename from src/Foundation/Conventions/NodaTimeConvention.cs
rename to src/Foundation/Conventions/TimeConvention.cs
index 9492879aa..bb59a8d1a 100644
--- a/src/Foundation/Conventions/NodaTimeConvention.cs
+++ b/src/Foundation/Conventions/TimeConvention.cs
@@ -16,7 +16,8 @@ namespace Rocket.Surgery.LaunchPad.Foundation.Conventions;
///
[PublicAPI]
[ExportConvention]
-public class NodaTimeConvention : IServiceConvention, ISerilogConvention
+[ConventionCategory(ConventionCategory.Core)]
+public class TimeConvention : IServiceConvention, ISerilogConvention
{
private readonly FoundationOptions _options;
@@ -24,7 +25,7 @@ public class NodaTimeConvention : IServiceConvention, ISerilogConvention
/// Create the NodaTime convention
///
///
- public NodaTimeConvention(FoundationOptions? options = null)
+ public TimeConvention(FoundationOptions? options = null)
{
_options = options ?? new FoundationOptions();
}
@@ -45,7 +46,8 @@ public void Register(IConventionContext context, IConfiguration configuration, I
{
ArgumentNullException.ThrowIfNull(context);
+ services.TryAddSingleton(TimeProvider.System);
services.TryAddSingleton(SystemClock.Instance);
services.TryAddSingleton(new DateTimeZoneCache(_options.DateTimeZoneSource));
}
-}
\ No newline at end of file
+}
diff --git a/src/Grpc/Conventions/GrpcConvention.cs b/src/Grpc/Conventions/GrpcConvention.cs
index 171cf8cd7..4b2cfa4dd 100644
--- a/src/Grpc/Conventions/GrpcConvention.cs
+++ b/src/Grpc/Conventions/GrpcConvention.cs
@@ -14,6 +14,7 @@ namespace Rocket.Surgery.LaunchPad.Grpc.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Application)]
public class GrpcConvention : IServiceConvention
{
///
diff --git a/src/Hosting/Conventions/DefaultTelemetryConvention.cs b/src/Hosting/Conventions/DefaultTelemetryConvention.cs
new file mode 100644
index 000000000..1fb13ee50
--- /dev/null
+++ b/src/Hosting/Conventions/DefaultTelemetryConvention.cs
@@ -0,0 +1,29 @@
+using System.Reflection;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Hosting;
+using OpenTelemetry;
+using OpenTelemetry.Resources;
+using Rocket.Surgery.Conventions;
+using Rocket.Surgery.LaunchPad.Telemetry;
+
+namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
+
+[ExportConvention]
+[AfterConvention]
+[ConventionCategory(ConventionCategory.Core)]
+internal class DefaultTelemetryConvention : IOpenTelemetryConvention
+{
+ public void Register(IConventionContext context, IConfiguration configuration, IOpenTelemetryBuilder builder)
+ {
+ builder.ConfigureResource(
+ z => z
+ .AddTelemetrySdk()
+ .AddService(
+ configuration["OTEL_SERVICE_NAME"] ?? context.Get()?.ApplicationName ?? "unknown",
+ "Syndicates",
+ Assembly.GetExecutingAssembly().GetCustomAttribute()?.InformationalVersion,
+ serviceInstanceId: configuration["WEBSITE_SITE_NAME"]
+ )
+ );
+ }
+}
diff --git a/src/Hosting/Conventions/EnvironmentLoggingConvention.cs b/src/Hosting/Conventions/EnvironmentLoggingConvention.cs
index 79382afcd..064a1d3f2 100644
--- a/src/Hosting/Conventions/EnvironmentLoggingConvention.cs
+++ b/src/Hosting/Conventions/EnvironmentLoggingConvention.cs
@@ -13,6 +13,7 @@ namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class EnvironmentLoggingConvention : ISerilogConvention
{
///
@@ -34,4 +35,4 @@ LoggerConfiguration loggerConfiguration
loggerConfiguration.Enrich.WithProperty(nameof(environment.EnvironmentName), environment.EnvironmentName);
loggerConfiguration.Enrich.WithProperty(nameof(environment.ApplicationName), environment.ApplicationName);
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Conventions/HostingConvention.cs b/src/Hosting/Conventions/HostingConvention.cs
index ee3fd31b9..d5a0f45d9 100644
--- a/src/Hosting/Conventions/HostingConvention.cs
+++ b/src/Hosting/Conventions/HostingConvention.cs
@@ -1,35 +1,17 @@
-using System.Reflection;
-using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-using OpenTelemetry;
-using OpenTelemetry.Resources;
using Rocket.Surgery.Conventions;
using Rocket.Surgery.Conventions.DependencyInjection;
-using Rocket.Surgery.LaunchPad.Telemetry;
namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
[ExportConvention]
[AfterConvention]
-internal class HostingConvention : IServiceConvention, IOpenTelemetryConvention
+[ConventionCategory(ConventionCategory.Application)]
+internal class HostingConvention : IServiceConvention
{
- public void Register(IConventionContext context, IConfiguration configuration, IOpenTelemetryBuilder builder)
- {
- builder.ConfigureResource(
- z => z
- .AddTelemetrySdk()
- .AddService(
- configuration["OTEL_SERVICE_NAME"] ?? context.Get()?.ApplicationName ?? "unknown",
- "Syndicates",
- Assembly.GetExecutingAssembly().GetCustomAttribute()?.InformationalVersion,
- serviceInstanceId: configuration["WEBSITE_SITE_NAME"]
- )
- );
- }
-
public void Register(IConventionContext context, IConfiguration configuration, IServiceCollection services)
{
services.AddHostedService();
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Conventions/OpenTelemetryConvention.cs b/src/Hosting/Conventions/OpenTelemetryConvention.cs
index 1bac4b438..13bc657b5 100644
--- a/src/Hosting/Conventions/OpenTelemetryConvention.cs
+++ b/src/Hosting/Conventions/OpenTelemetryConvention.cs
@@ -13,6 +13,7 @@ namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class OpenTelemetryConvention : IServiceAsyncConvention
{
///
@@ -28,4 +29,4 @@ await services
.ApplyConventionsAsync(context, cancellationToken)
.ConfigureAwait(false);
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Conventions/SerilogConsoleLoggingConvention.cs b/src/Hosting/Conventions/SerilogConsoleLoggingConvention.cs
index ba3c376b5..24e7c5b12 100644
--- a/src/Hosting/Conventions/SerilogConsoleLoggingConvention.cs
+++ b/src/Hosting/Conventions/SerilogConsoleLoggingConvention.cs
@@ -16,6 +16,7 @@ namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention]
+[ConventionCategory(ConventionCategory.Core)]
public sealed class SerilogConsoleLoggingConvention : ISerilogConvention
{
private readonly LaunchPadLoggingOptions _options;
@@ -50,4 +51,4 @@ LoggerConfiguration loggerConfiguration
)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Conventions/SerilogDebugLoggingConvention.cs b/src/Hosting/Conventions/SerilogDebugLoggingConvention.cs
index 795ec6809..be4d47770 100644
--- a/src/Hosting/Conventions/SerilogDebugLoggingConvention.cs
+++ b/src/Hosting/Conventions/SerilogDebugLoggingConvention.cs
@@ -15,6 +15,7 @@ namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
[PublicAPI]
[ExportConvention]
[AfterConvention]
+[ConventionCategory(ConventionCategory.Core)]
public sealed class SerilogDebugLoggingConvention : ISerilogConvention
{
private readonly LaunchPadLoggingOptions _options;
@@ -48,4 +49,4 @@ LoggerConfiguration loggerConfiguration
)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Hosting/Conventions/SerilogHostingConvention.cs b/src/Hosting/Conventions/SerilogHostingConvention.cs
index b92598fa5..d1b50dd30 100644
--- a/src/Hosting/Conventions/SerilogHostingConvention.cs
+++ b/src/Hosting/Conventions/SerilogHostingConvention.cs
@@ -21,6 +21,7 @@ namespace Rocket.Surgery.LaunchPad.Hosting.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SerilogHostingConvention : IHostApplicationConvention, IHostCreatedConvention
{
private void CustomAddSerilog(
@@ -109,4 +110,4 @@ private class NullEnricher : ILogEventEnricher
{
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory) { }
}
-}
\ No newline at end of file
+}
diff --git a/src/HotChocolate/Conventions/GraphqlConvention.cs b/src/HotChocolate/Conventions/GraphqlConvention.cs
index e797d5ba8..f30fe0233 100644
--- a/src/HotChocolate/Conventions/GraphqlConvention.cs
+++ b/src/HotChocolate/Conventions/GraphqlConvention.cs
@@ -17,6 +17,7 @@ namespace Rocket.Surgery.LaunchPad.HotChocolate.Conventions;
[PublicAPI]
[ExportConvention]
[BeforeConvention(typeof(HotChocolateConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class GraphqlConvention : IServiceConvention
{
private readonly FoundationOptions _foundationOptions;
diff --git a/src/HotChocolate/Conventions/HotChocolateConvention.cs b/src/HotChocolate/Conventions/HotChocolateConvention.cs
index 91aafec82..bb9061501 100644
--- a/src/HotChocolate/Conventions/HotChocolateConvention.cs
+++ b/src/HotChocolate/Conventions/HotChocolateConvention.cs
@@ -17,7 +17,8 @@ namespace Rocket.Surgery.LaunchPad.HotChocolate.Conventions;
///
[PublicAPI]
[ExportConvention]
-[AfterConvention(typeof(NodaTimeConvention))]
+[AfterConvention(typeof(TimeConvention))]
+[ConventionCategory(ConventionCategory.Application)]
public class HotChocolateConvention : IServiceConvention
{
///
diff --git a/src/HotChocolate/Conventions/InstrumentationConvention.cs b/src/HotChocolate/Conventions/InstrumentationConvention.cs
index fa5bbd62a..4ce7d5905 100644
--- a/src/HotChocolate/Conventions/InstrumentationConvention.cs
+++ b/src/HotChocolate/Conventions/InstrumentationConvention.cs
@@ -14,6 +14,7 @@ namespace Rocket.Surgery.LaunchPad.HotChocolate.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Application)]
public class InstrumentationConvention : IOpenTelemetryConvention
{
///
@@ -21,4 +22,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
{
builder.WithTracing(b => b.AddHotChocolateInstrumentation());
}
-}
\ No newline at end of file
+}
diff --git a/src/Serilog/Conventions/ConfigureOptionsLoggingConvention.cs b/src/Serilog/Conventions/ConfigureOptionsLoggingConvention.cs
index 29b1badcf..d279928a7 100644
--- a/src/Serilog/Conventions/ConfigureOptionsLoggingConvention.cs
+++ b/src/Serilog/Conventions/ConfigureOptionsLoggingConvention.cs
@@ -13,6 +13,7 @@ namespace Rocket.Surgery.LaunchPad.Serilog.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class ConfigureOptionsLoggingConvention : ISerilogConvention
{
///
@@ -44,4 +45,4 @@ LoggerConfiguration loggerConfiguration
post.PostConfigure(Options.DefaultName, loggerConfiguration);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Serilog/Conventions/SerilogEnrichEnvironmentLoggingConvention.cs b/src/Serilog/Conventions/SerilogEnrichEnvironmentLoggingConvention.cs
index 0de02e072..52646b31a 100644
--- a/src/Serilog/Conventions/SerilogEnrichEnvironmentLoggingConvention.cs
+++ b/src/Serilog/Conventions/SerilogEnrichEnvironmentLoggingConvention.cs
@@ -11,6 +11,7 @@ namespace Rocket.Surgery.LaunchPad.Serilog.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SerilogEnrichEnvironmentLoggingConvention : ISerilogConvention
{
///
@@ -36,4 +37,4 @@ LoggerConfiguration loggerConfiguration
.Enrich.WithProcessName()
.Enrich.WithThreadId();
}
-}
\ No newline at end of file
+}
diff --git a/src/Serilog/Conventions/SerilogEnrichLoggingConvention.cs b/src/Serilog/Conventions/SerilogEnrichLoggingConvention.cs
index 42d706f9a..fa7779077 100644
--- a/src/Serilog/Conventions/SerilogEnrichLoggingConvention.cs
+++ b/src/Serilog/Conventions/SerilogEnrichLoggingConvention.cs
@@ -12,6 +12,7 @@ namespace Rocket.Surgery.LaunchPad.Serilog.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SerilogEnrichLoggingConvention : ISerilogConvention
{
///
@@ -34,4 +35,4 @@ LoggerConfiguration loggerConfiguration
.Enrich.FromLogContext()
.Enrich.WithExceptionDetails();
}
-}
\ No newline at end of file
+}
diff --git a/src/Serilog/Conventions/SerilogEnrichSpansConvention.cs b/src/Serilog/Conventions/SerilogEnrichSpansConvention.cs
index 550d17c4b..d550be922 100644
--- a/src/Serilog/Conventions/SerilogEnrichSpansConvention.cs
+++ b/src/Serilog/Conventions/SerilogEnrichSpansConvention.cs
@@ -12,6 +12,7 @@ namespace Rocket.Surgery.LaunchPad.Serilog.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SerilogEnrichSpansConvention : ISerilogConvention
{
///
@@ -40,4 +41,4 @@ LoggerConfiguration loggerConfiguration
}
);
}
-}
\ No newline at end of file
+}
diff --git a/src/Serilog/Conventions/SerilogReadFromConfigurationConvention.cs b/src/Serilog/Conventions/SerilogReadFromConfigurationConvention.cs
index 0909a443a..5bd7fca62 100644
--- a/src/Serilog/Conventions/SerilogReadFromConfigurationConvention.cs
+++ b/src/Serilog/Conventions/SerilogReadFromConfigurationConvention.cs
@@ -15,6 +15,7 @@ namespace Rocket.Surgery.LaunchPad.Serilog.Conventions;
[PublicAPI]
[LiveConvention]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SerilogReadFromConfigurationConvention : ISerilogConvention, IConfigurationConvention
{
///
@@ -57,4 +58,4 @@ LoggerConfiguration loggerConfiguration
loggerConfiguration.ReadFrom.Configuration(configuration);
}
-}
\ No newline at end of file
+}
diff --git a/src/Serilog/SerilogAbstractionsHostBuilderExtensions.cs b/src/Serilog/SerilogAbstractionsHostBuilderExtensions.cs
index d29ba6418..1009342a1 100644
--- a/src/Serilog/SerilogAbstractionsHostBuilderExtensions.cs
+++ b/src/Serilog/SerilogAbstractionsHostBuilderExtensions.cs
@@ -18,10 +18,17 @@ public static class SerilogAbstractionsHostBuilderExtensions
///
/// The container.
/// The delegate.
+ ///
+ ///
/// IConventionHostBuilder.
- public static ConventionContextBuilder ConfigureSerilog(this ConventionContextBuilder container, Action @delegate)
+ public static ConventionContextBuilder ConfigureSerilog(
+ this ConventionContextBuilder container,
+ Action @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
+ )
{
- return ConfigureSerilog(container, (_, _, _, logger) => @delegate(logger));
+ return ConfigureSerilog(container, (_, _, _, logger) => @delegate(logger), priority, category);
}
///
@@ -29,13 +36,17 @@ public static ConventionContextBuilder ConfigureSerilog(this ConventionContextBu
///
/// The container.
/// The delegate.
+ ///
+ ///
/// IConventionHostBuilder.
public static ConventionContextBuilder ConfigureSerilog(
this ConventionContextBuilder container,
- Action @delegate
+ Action @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
)
{
- return ConfigureSerilog(container, (_, configuration, services, logger) => @delegate(configuration, services, logger));
+ return ConfigureSerilog(container, (_, configuration, services, logger) => @delegate(configuration, services, logger), priority, category);
}
///
@@ -43,13 +54,17 @@ Action @delegate
///
/// The container.
/// The delegate.
+ ///
+ ///
/// IConventionHostBuilder.
public static ConventionContextBuilder ConfigureSerilog(
this ConventionContextBuilder container,
- Action @delegate
+ Action @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
)
{
- return ConfigureSerilog(container, (_, _, services, logger) => @delegate(services, logger));
+ return ConfigureSerilog(container, (_, _, services, logger) => @delegate(services, logger), priority, category);
}
///
@@ -57,13 +72,20 @@ Action @delegate
///
/// The container.
/// The delegate.
+ ///
+ ///
/// IConventionHostBuilder.
- public static ConventionContextBuilder ConfigureSerilog(this ConventionContextBuilder container, SerilogConvention @delegate)
+ public static ConventionContextBuilder ConfigureSerilog(
+ this ConventionContextBuilder container,
+ SerilogConvention @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
+ )
{
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(@delegate);
- container.AppendDelegate(@delegate);
+ container.AppendDelegate(@delegate, priority, category);
return container;
}
-}
\ No newline at end of file
+}
diff --git a/src/Spatial.NewtonsoftJson/Conventions/SpactialNewtonsoftJsonConvention.cs b/src/Spatial.NewtonsoftJson/Conventions/SpactialNewtonsoftJsonConvention.cs
index 46c8c586e..b017de4a5 100644
--- a/src/Spatial.NewtonsoftJson/Conventions/SpactialNewtonsoftJsonConvention.cs
+++ b/src/Spatial.NewtonsoftJson/Conventions/SpactialNewtonsoftJsonConvention.cs
@@ -14,6 +14,7 @@ namespace Rocket.Surgery.LaunchPad.Spatial.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SpatialNewtonsoftJsonConvention : IServiceConvention
{
///
diff --git a/src/Spatial/Conventions/SpatialConvention.cs b/src/Spatial/Conventions/SpatialConvention.cs
index df35018e3..311fedb08 100644
--- a/src/Spatial/Conventions/SpatialConvention.cs
+++ b/src/Spatial/Conventions/SpatialConvention.cs
@@ -16,6 +16,7 @@ namespace Rocket.Surgery.LaunchPad.Spatial.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class SpatialConvention : IServiceConvention, ISerilogConvention
{
///
@@ -35,4 +36,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
(options, factory) => options.ConfigureGeoJsonForLaunchPad(factory)
);
}
-}
\ No newline at end of file
+}
diff --git a/src/StrawberryShake.Spatial/Conventions/StrawberryShakeSpatialConvention.cs b/src/StrawberryShake.Spatial/Conventions/StrawberryShakeSpatialConvention.cs
index 599156d42..a251cfe47 100644
--- a/src/StrawberryShake.Spatial/Conventions/StrawberryShakeSpatialConvention.cs
+++ b/src/StrawberryShake.Spatial/Conventions/StrawberryShakeSpatialConvention.cs
@@ -11,6 +11,7 @@ namespace Rocket.Surgery.LaunchPad.StrawberryShake.Spatial.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class StrawberryShakeSpatialConvention : IServiceConvention
{
///
@@ -19,4 +20,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
services.AddSingleton();
// services.AddSerializer();
}
-}
\ No newline at end of file
+}
diff --git a/src/StrawberryShake/Conventions/StrawberryShakeConvention.cs b/src/StrawberryShake/Conventions/StrawberryShakeConvention.cs
index 14e861fc5..062463688 100644
--- a/src/StrawberryShake/Conventions/StrawberryShakeConvention.cs
+++ b/src/StrawberryShake/Conventions/StrawberryShakeConvention.cs
@@ -11,6 +11,7 @@ namespace Rocket.Surgery.LaunchPad.StrawberryShake.Conventions;
///
[PublicAPI]
[ExportConvention]
+[ConventionCategory(ConventionCategory.Core)]
public class StrawberryShakeConvention : IServiceConvention
{
///
@@ -28,4 +29,4 @@ public void Register(IConventionContext context, IConfiguration configuration, I
services.AddSingleton();
services.AddSingleton();
}
-}
\ No newline at end of file
+}
diff --git a/src/Telemetry/RocketSurgeryOpenTelemetryExtensions.cs b/src/Telemetry/RocketSurgeryOpenTelemetryExtensions.cs
index 6f64f0cb2..5b55a7555 100644
--- a/src/Telemetry/RocketSurgeryOpenTelemetryExtensions.cs
+++ b/src/Telemetry/RocketSurgeryOpenTelemetryExtensions.cs
@@ -56,13 +56,18 @@ public static async ValueTask ApplyConventionsAsync(
/// The container.
/// The delegate.
/// IConventionHostBuilder.
- public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionContextBuilder container, OpenTelemetryConvention @delegate)
+ public static ConventionContextBuilder ConfigureOpenTelemetry(
+ this ConventionContextBuilder container,
+ OpenTelemetryConvention @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
+ )
{
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(@delegate);
- container.AppendDelegate(@delegate);
+ container.AppendDelegate(@delegate, priority, category);
return container;
}
@@ -73,13 +78,18 @@ public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionCon
/// The container.
/// The delegate.
/// IConventionHostBuilder.
- public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionContextBuilder container, Action @delegate)
+ public static ConventionContextBuilder ConfigureOpenTelemetry(
+ this ConventionContextBuilder container,
+ Action @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
+ )
{
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(@delegate);
- container.AppendDelegate(@delegate);
+ container.AppendDelegate(@delegate, priority, category);
return container;
}
@@ -89,13 +99,18 @@ public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionCon
/// The container.
/// The delegate.
/// IConventionHostBuilder.
- public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionContextBuilder container, OpenTelemetryAsyncConvention @delegate)
+ public static ConventionContextBuilder ConfigureOpenTelemetry(
+ this ConventionContextBuilder container,
+ OpenTelemetryAsyncConvention @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
+ )
{
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(@delegate);
- container.AppendDelegate(@delegate);
+ container.AppendDelegate(@delegate, priority, category);
return container;
}
@@ -105,13 +120,18 @@ public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionCon
/// The container.
/// The delegate.
/// IConventionHostBuilder.
- public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionContextBuilder container, Func @delegate)
+ public static ConventionContextBuilder ConfigureOpenTelemetry(
+ this ConventionContextBuilder container,
+ Func @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
+ )
{
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(@delegate);
- container.AppendDelegate(new OpenTelemetryAsyncConvention((_, _, builder, _) => @delegate(builder)));
+ container.AppendDelegate(new OpenTelemetryAsyncConvention((_, _, builder, _) => @delegate(builder)), priority, category);
return container;
}
@@ -123,14 +143,16 @@ public static ConventionContextBuilder ConfigureOpenTelemetry(this ConventionCon
/// IConventionHostBuilder.
public static ConventionContextBuilder ConfigureOpenTelemetry(
this ConventionContextBuilder container,
- Func @delegate
+ Func @delegate,
+ int priority = 0,
+ ConventionCategory? category = null
)
{
ArgumentNullException.ThrowIfNull(container);
ArgumentNullException.ThrowIfNull(@delegate);
- container.AppendDelegate(new OpenTelemetryAsyncConvention((_, _, builder, token) => @delegate(builder, token)));
+ container.AppendDelegate(new OpenTelemetryAsyncConvention((_, _, builder, token) => @delegate(builder, token)), priority, category);
return container;
}
-}
\ No newline at end of file
+}
diff --git a/src/Testing/FakeClockConvention.cs b/src/Testing/FakeTimeConvention.cs
similarity index 56%
rename from src/Testing/FakeClockConvention.cs
rename to src/Testing/FakeTimeConvention.cs
index df77a64fc..97fd26d5b 100644
--- a/src/Testing/FakeClockConvention.cs
+++ b/src/Testing/FakeTimeConvention.cs
@@ -1,7 +1,9 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using Microsoft.Extensions.Time.Testing;
using NodaTime;
-using NodaTime.Testing;
+using NodaTime.Extensions;
using Rocket.Surgery.Conventions;
using Rocket.Surgery.Conventions.DependencyInjection;
using Rocket.Surgery.LaunchPad.Foundation.Conventions;
@@ -14,8 +16,9 @@ namespace Rocket.Surgery.LaunchPad.Testing;
[PublicAPI]
[UnitTestConvention]
[ExportConvention]
-[BeforeConvention(typeof(NodaTimeConvention))]
-public class FakeClockConvention : IServiceConvention
+[BeforeConvention(typeof(TimeConvention))]
+[ConventionCategory(ConventionCategory.Core)]
+public class FakeTimeConvention : IServiceConvention
{
private readonly int _unixTimeSeconds;
private readonly Duration _advanceBy;
@@ -25,7 +28,7 @@ public class FakeClockConvention : IServiceConvention
///
///
///
- public FakeClockConvention(int? unixTimeSeconds = null, Duration? advanceBy = null)
+ public FakeTimeConvention(int? unixTimeSeconds = null, Duration? advanceBy = null)
{
_unixTimeSeconds = unixTimeSeconds ?? 1577836800;
_advanceBy = advanceBy ?? Duration.FromSeconds(1);
@@ -34,7 +37,9 @@ public FakeClockConvention(int? unixTimeSeconds = null, Duration? advanceBy = nu
///
public void Register(IConventionContext context, IConfiguration configuration, IServiceCollection services)
{
- services.AddSingleton(new FakeClock(Instant.FromUnixTimeSeconds(_unixTimeSeconds), _advanceBy));
- services.AddSingleton(provider => provider.GetRequiredService());
+ services.RemoveAll();
+ services.AddSingleton(new FakeTimeProvider(DateTimeOffset.FromUnixTimeSeconds(_unixTimeSeconds)) { AutoAdvanceAmount = _advanceBy.ToTimeSpan(), });
+ services.AddSingleton(sp => sp.GetRequiredService());
+ services.AddSingleton(s => s.GetRequiredService().ToClock());
}
-}
\ No newline at end of file
+}
diff --git a/src/Testing/Rocket.Surgery.LaunchPad.Testing.csproj b/src/Testing/Rocket.Surgery.LaunchPad.Testing.csproj
index e26f21450..5690eceef 100644
--- a/src/Testing/Rocket.Surgery.LaunchPad.Testing.csproj
+++ b/src/Testing/Rocket.Surgery.LaunchPad.Testing.csproj
@@ -5,6 +5,7 @@
$(PackageTags)
+
diff --git a/test/Analyzers.Tests/Analyzers.Tests.csproj b/test/Analyzers.Tests/Analyzers.Tests.csproj
index 3ccd3663e..940637c69 100644
--- a/test/Analyzers.Tests/Analyzers.Tests.csproj
+++ b/test/Analyzers.Tests/Analyzers.Tests.csproj
@@ -4,7 +4,6 @@
$(DefineConstants);ROSLYN_CURRENT;ROSLYN4_8
-
diff --git a/test/Analyzers.Tests/snapshots/ControllerActionBodyGeneratorTests.Should_Error_If_Controller_Is_Not_Partial.verified.txt b/test/Analyzers.Tests/snapshots/ControllerActionBodyGeneratorTests.Should_Error_If_Controller_Is_Not_Partial.verified.txt
index c30160459..dadb5e41c 100644
--- a/test/Analyzers.Tests/snapshots/ControllerActionBodyGeneratorTests.Should_Error_If_Controller_Is_Not_Partial.verified.txt
+++ b/test/Analyzers.Tests/snapshots/ControllerActionBodyGeneratorTests.Should_Error_If_Controller_Is_Not_Partial.verified.txt
@@ -7,8 +7,8 @@
WarningLevel: 0,
Location: Input2.cs: (11,64)-(11,75),
HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS0751),
- MessageFormat: A partial method must be declared within a partial type,
- Message: A partial method must be declared within a partial type,
+ MessageFormat: A partial member must be declared within a partial type,
+ Message: A partial member must be declared within a partial type,
Category: Compiler,
CustomTags: [
Compiler,
@@ -39,8 +39,8 @@
WarningLevel: 0,
Location: Input2.cs: (14,51)-(14,60),
HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS0751),
- MessageFormat: A partial method must be declared within a partial type,
- Message: A partial method must be declared within a partial type,
+ MessageFormat: A partial member must be declared within a partial type,
+ Message: A partial member must be declared within a partial type,
Category: Compiler,
CustomTags: [
Compiler,
diff --git a/test/Analyzers.Tests/snapshots/GraphqlMutationActionBodyGeneratorTests.Should_Error_If_Class_Is_Not_Partial.verified.txt b/test/Analyzers.Tests/snapshots/GraphqlMutationActionBodyGeneratorTests.Should_Error_If_Class_Is_Not_Partial.verified.txt
index ea02b7e03..58c266473 100644
--- a/test/Analyzers.Tests/snapshots/GraphqlMutationActionBodyGeneratorTests.Should_Error_If_Class_Is_Not_Partial.verified.txt
+++ b/test/Analyzers.Tests/snapshots/GraphqlMutationActionBodyGeneratorTests.Should_Error_If_Class_Is_Not_Partial.verified.txt
@@ -7,8 +7,8 @@
WarningLevel: 0,
Location: Input1.cs: (8,50)-(8,61),
HelpLink: https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS0751),
- MessageFormat: A partial method must be declared within a partial type,
- Message: A partial method must be declared within a partial type,
+ MessageFormat: A partial member must be declared within a partial type,
+ Message: A partial member must be declared within a partial type,
Category: Compiler,
CustomTags: [
Compiler,
diff --git a/test/Extensions.Tests/FakeClockConventionTests.cs b/test/Extensions.Tests/FakeTimeConventionTests.cs
similarity index 84%
rename from test/Extensions.Tests/FakeClockConventionTests.cs
rename to test/Extensions.Tests/FakeTimeConventionTests.cs
index 1f3fc286b..8cfd3c16b 100644
--- a/test/Extensions.Tests/FakeClockConventionTests.cs
+++ b/test/Extensions.Tests/FakeTimeConventionTests.cs
@@ -2,21 +2,20 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using NodaTime;
-using NodaTime.Testing;
using Rocket.Surgery.Conventions;
using Rocket.Surgery.LaunchPad.Foundation;
using Rocket.Surgery.LaunchPad.Testing;
namespace Extensions.Tests;
-public class FakeClockConventionTests(ITestOutputHelper testOutputHelper) : ConventionFakeTest(testOutputHelper)
+public class FakeTimeConventionTests(ITestOutputHelper testOutputHelper) : ConventionFakeTest(testOutputHelper)
{
[Fact]
public async Task Clock_Convention_Default()
{
await Init(x => { x.Set(HostType.UnitTest); });
var clock = Container.GetRequiredService();
- clock.Should().BeOfType();
+ clock.Should().BeAssignableTo();
clock.GetCurrentInstant().Should().Be(Instant.FromUnixTimeSeconds(1577836800));
clock.GetCurrentInstant().Should().Be(Instant.FromUnixTimeSeconds(1577836800) + Duration.FromSeconds(1));
}
@@ -24,10 +23,10 @@ public async Task Clock_Convention_Default()
[Fact]
public async Task Clock_Convention_Override()
{
- await Init(x => { x.AppendConvention(new FakeClockConvention(0, Duration.FromMinutes(1))); });
+ await Init(x => { x.AppendConvention(new FakeTimeConvention(0, Duration.FromMinutes(1))); });
var clock = ServiceProvider.GetRequiredService();
- clock.Should().BeOfType();
+ clock.Should().BeAssignableTo();
clock.GetCurrentInstant().Should().Be(Instant.FromUnixTimeSeconds(0));
clock.GetCurrentInstant().Should().Be(Instant.FromUnixTimeSeconds(0) + Duration.FromMinutes(1));
}
@@ -56,4 +55,4 @@ private class OptionsB
{
public required string B { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/DurationTests.cs b/test/Extensions.Tests/Mapping/DurationTests.cs
index ae53823e4..e7d5687dc 100644
--- a/test/Extensions.Tests/Mapping/DurationTests.cs
+++ b/test/Extensions.Tests/Mapping/DurationTests.cs
@@ -13,7 +13,8 @@ public partial class DurationTests(ITestOutputHelper testOutputHelper) : MapperT
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(result, new Mapper(), TimeSpan.FromHours(1), Duration.FromMinutes(44))
- .UseHashedParameters(result.ToString());
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -57,4 +58,4 @@ private class Foo4
{
public TimeSpan? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/Helpers/MapperTestBase.cs b/test/Extensions.Tests/Mapping/Helpers/MapperTestBase.cs
index 0795b6cef..411ebc0a0 100644
--- a/test/Extensions.Tests/Mapping/Helpers/MapperTestBase.cs
+++ b/test/Extensions.Tests/Mapping/Helpers/MapperTestBase.cs
@@ -6,11 +6,11 @@ public abstract class MapperTestBase(ITestOutputHelper testOutputHelper) : AutoF
{
protected SettingsTask VerifyMethod(MethodResult result, object mapper, params object[] instances)
{
- return Verify(result.Map(mapper, instances)).UseHashedParameters(result.ToString());
+ return Verify(result.Map(mapper, instances)).UseParameters(result.ToString()).HashParameters();
}
protected SettingsTask VerifyEachMethod(MethodResult result, object mapper, params object[] instances)
{
- return Verify(result.MapEach(mapper, instances)).UseHashedParameters(result.ToString());
+ return Verify(result.MapEach(mapper, instances)).UseParameters(result.ToString()).HashParameters();
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/InstantTests.cs b/test/Extensions.Tests/Mapping/InstantTests.cs
index fc110e9c0..ae1bffb99 100644
--- a/test/Extensions.Tests/Mapping/InstantTests.cs
+++ b/test/Extensions.Tests/Mapping/InstantTests.cs
@@ -15,13 +15,14 @@ public partial class InstantTests(ITestOutputHelper testOutputHelper) : MapperTe
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- _fakeTimeProvider.GetUtcNow(),
- _fakeTimeProvider.GetUtcNow().UtcDateTime,
- Instant.FromDateTimeOffset(_fakeTimeProvider.GetUtcNow())
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ _fakeTimeProvider.GetUtcNow(),
+ _fakeTimeProvider.GetUtcNow().UtcDateTime,
+ Instant.FromDateTimeOffset(_fakeTimeProvider.GetUtcNow())
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -97,4 +98,4 @@ private class Foo6
{
public DateTimeOffset? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/JsonElementConverterTests.cs b/test/Extensions.Tests/Mapping/JsonElementConverterTests.cs
index 9aa3909cf..d31681257 100644
--- a/test/Extensions.Tests/Mapping/JsonElementConverterTests.cs
+++ b/test/Extensions.Tests/Mapping/JsonElementConverterTests.cs
@@ -20,33 +20,34 @@ public Task Maps_All_Methods(MethodResult result)
var stub = A.Fake>();
A.CallTo(() => stub.CurrentValue).Returns(new());
return VerifyEachMethod(
- result,
- new Mapper(stub),
- string.Empty,
- "null",
- "[]",
- "{}",
- "\"1234\"",
- "1234",
- "[1234,5678]",
- "{\"a\":1234}",
- ""u8.ToArray(),
- "null"u8.ToArray(),
- "[]"u8.ToArray(),
- "{}"u8.ToArray(),
- "\"1234\""u8.ToArray(),
- "1234"u8.ToArray(),
- "[1234,5678]"u8.ToArray(),
- "{\"a\":1234}"u8.ToArray(),
- JsonDocument.Parse("null").RootElement,
- JsonDocument.Parse("[]").RootElement,
- JsonDocument.Parse("{}").RootElement,
- JsonDocument.Parse("\"1234\"").RootElement,
- JsonDocument.Parse("1234").RootElement,
- JsonDocument.Parse("[1234,5678]").RootElement,
- JsonDocument.Parse("{\"a\":1234}").RootElement
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(stub),
+ string.Empty,
+ "null",
+ "[]",
+ "{}",
+ "\"1234\"",
+ "1234",
+ "[1234,5678]",
+ "{\"a\":1234}",
+ ""u8.ToArray(),
+ "null"u8.ToArray(),
+ "[]"u8.ToArray(),
+ "{}"u8.ToArray(),
+ "\"1234\""u8.ToArray(),
+ "1234"u8.ToArray(),
+ "[1234,5678]"u8.ToArray(),
+ "{\"a\":1234}"u8.ToArray(),
+ JsonDocument.Parse("null").RootElement,
+ JsonDocument.Parse("[]").RootElement,
+ JsonDocument.Parse("{}").RootElement,
+ JsonDocument.Parse("\"1234\"").RootElement,
+ JsonDocument.Parse("1234").RootElement,
+ JsonDocument.Parse("[1234,5678]").RootElement,
+ JsonDocument.Parse("{\"a\":1234}").RootElement
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -83,4 +84,4 @@ private class JsonElementA
{
public JsonElement Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/LocalDateTests.cs b/test/Extensions.Tests/Mapping/LocalDateTests.cs
index 21cdc853e..297e7b6ab 100644
--- a/test/Extensions.Tests/Mapping/LocalDateTests.cs
+++ b/test/Extensions.Tests/Mapping/LocalDateTests.cs
@@ -14,13 +14,14 @@ public partial class LocalDateTests(ITestOutputHelper testOutputHelper) : Mapper
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- _fakeTimeProvider.GetLocalNow().DateTime,
- DateOnly.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime),
- LocalDate.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime)
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ _fakeTimeProvider.GetLocalNow().DateTime,
+ DateOnly.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime),
+ LocalDate.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime)
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -63,4 +64,4 @@ private class Foo6
{
public DateOnly? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/LocalDateTimeTests.cs b/test/Extensions.Tests/Mapping/LocalDateTimeTests.cs
index f1c350229..377ec242d 100644
--- a/test/Extensions.Tests/Mapping/LocalDateTimeTests.cs
+++ b/test/Extensions.Tests/Mapping/LocalDateTimeTests.cs
@@ -17,12 +17,13 @@ public partial class LocalDateTimeTests(ITestOutputHelper testOutputHelper) : Ma
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- _fakeTimeProvider.GetLocalNow().DateTime,
- LocalDateTime.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime)
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ _fakeTimeProvider.GetLocalNow().DateTime,
+ LocalDateTime.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime)
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -66,4 +67,4 @@ private class Foo4
{
public DateTime? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/LocalTimeTests.cs b/test/Extensions.Tests/Mapping/LocalTimeTests.cs
index 91ed0e984..b9bac23f0 100644
--- a/test/Extensions.Tests/Mapping/LocalTimeTests.cs
+++ b/test/Extensions.Tests/Mapping/LocalTimeTests.cs
@@ -14,13 +14,14 @@ public partial class LocalTimeTests(ITestOutputHelper testOutputHelper) : Mapper
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- _fakeTimeProvider.GetLocalNow().DateTime,
- TimeOnly.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime),
- LocalTime.FromTimeOnly(TimeOnly.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime))
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ _fakeTimeProvider.GetLocalNow().DateTime,
+ TimeOnly.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime),
+ LocalTime.FromTimeOnly(TimeOnly.FromDateTime(_fakeTimeProvider.GetLocalNow().DateTime))
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -63,4 +64,4 @@ private class Foo6
{
public TimeOnly? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/OffsetDateTimeTests.cs b/test/Extensions.Tests/Mapping/OffsetDateTimeTests.cs
index d8db5dd22..c5cbda3cc 100644
--- a/test/Extensions.Tests/Mapping/OffsetDateTimeTests.cs
+++ b/test/Extensions.Tests/Mapping/OffsetDateTimeTests.cs
@@ -15,12 +15,13 @@ public partial class OffsetDateTimeTests(ITestOutputHelper testOutputHelper) : M
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- _fakeTimeProvider.GetLocalNow(),
- OffsetDateTime.FromDateTimeOffset(_fakeTimeProvider.GetLocalNow())
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ _fakeTimeProvider.GetLocalNow(),
+ OffsetDateTime.FromDateTimeOffset(_fakeTimeProvider.GetLocalNow())
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -64,4 +65,4 @@ private class Foo4
{
public DateTimeOffset? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/OffsetTests.cs b/test/Extensions.Tests/Mapping/OffsetTests.cs
index 41da220d4..c4dc01709 100644
--- a/test/Extensions.Tests/Mapping/OffsetTests.cs
+++ b/test/Extensions.Tests/Mapping/OffsetTests.cs
@@ -15,12 +15,13 @@ public partial class OffsetTests(ITestOutputHelper testOutputHelper) : MapperTes
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- Offset.FromHours(11),
- TimeSpan.FromHours(10)
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ Offset.FromHours(11),
+ TimeSpan.FromHours(10)
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -64,4 +65,4 @@ private class Foo4
{
public TimeSpan? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/Mapping/PeriodTests.cs b/test/Extensions.Tests/Mapping/PeriodTests.cs
index f0cb16e3f..83beb24fc 100644
--- a/test/Extensions.Tests/Mapping/PeriodTests.cs
+++ b/test/Extensions.Tests/Mapping/PeriodTests.cs
@@ -15,12 +15,13 @@ public partial class PeriodTests(ITestOutputHelper testOutputHelper) : MapperTes
public Task Maps_All_Methods(MethodResult result)
{
return VerifyMethod(
- result,
- new Mapper(),
- Period.FromMonths(10),
- "P5M"
- )
- .UseHashedParameters(result.ToString());
+ result,
+ new Mapper(),
+ Period.FromMonths(10),
+ "P5M"
+ )
+ .UseParameters(result.ToString())
+ .HashParameters();
}
[Mapper]
@@ -41,4 +42,4 @@ private class Foo3
{
public string? Bar { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/test/Extensions.Tests/MediatRTests.cs b/test/Extensions.Tests/MediatRTests.cs
index 34f3190ed..987814902 100644
--- a/test/Extensions.Tests/MediatRTests.cs
+++ b/test/Extensions.Tests/MediatRTests.cs
@@ -16,7 +16,7 @@ public class MediatRTests(ITestOutputHelper outputHelper) : AutoFakeTest(outputH
public async Task Test1()
{
#pragma warning disable CS8620 // Argument cannot be used for parameter due to differences in the nullability of reference types.
- var builder = new ConventionContextBuilder(new Dictionary