From b744c8ecd39b5313505d312766e2ebfc41e2175f Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Apr 2026 06:15:57 +0000 Subject: [PATCH 1/6] Optimize test performance: collection fixtures, parallel execution, disable analyzers - Share one WebApplicationFactory per test assembly via collection fixtures instead of spinning up a separate factory per test class - Add test.runsettings with MaxCpuCount=0 for parallel assembly execution - Disable analyzers and Roslynator in test projects via Directory.Build.targets - Exclude Benchmarks project from dotnet test (IsTestProject=false) - Import root targets in modules/Directory.Build.targets for proper inheritance --- Directory.Build.props | 2 + Directory.Build.targets | 10 +++ .../SimpleModule.Agents/AgentChatService.cs | 6 +- .../Emitters/LocalizationExtensionsEmitter.cs | 9 +-- .../KnowledgeIndexingHostedService.cs | 7 +- .../SimpleModule.Rag/VectorKnowledgeStore.cs | 1 - .../Integration/AdminPermissionsTests.cs | 3 +- .../Integration/AdminRolesEndpointTests.cs | 3 +- .../Integration/AdminUsersEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ .../BackgroundJobsEndpointTests.cs | 3 +- .../BackgroundJobsViewEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ modules/Directory.Build.targets | 1 + .../Integration/FeatureFlagEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 6 ++ .../LocalizationModule.cs | 4 +- .../Middleware/LocaleResolutionMiddleware.cs | 17 +++-- .../Services/JsonStringLocalizer.cs | 3 +- .../Services/JsonStringLocalizerFactory.cs | 3 +- .../Services/TranslationLoader.cs | 67 ++++++++++++++----- .../InertiaTranslationPropsTests.cs | 13 +++- .../IntegrationTestCollection.cs | 6 ++ .../Unit/JsonStringLocalizerFactoryTests.cs | 8 +-- .../Unit/JsonStringLocalizerTests.cs | 30 +++++---- .../Unit/LocaleResolutionMiddlewareTests.cs | 66 ++++++++++-------- .../Unit/TranslationLoaderTests.cs | 32 ++++----- .../MarketplaceBrowseEndpointTests.cs | 3 +- .../Integration/MarketplaceEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ .../Integration/ClientManagementTests.cs | 3 +- .../Integration/ConnectEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ .../Integration/OrdersEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ .../IntegrationTestCollection.cs | 6 ++ .../PageEndpointTests.cs | 3 +- .../ProductsBrowseEndpointTests.cs | 3 +- .../Integration/ProductsEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ .../IntegrationTestCollection.cs | 6 ++ .../RateLimitingEndpointTests.cs | 3 +- .../Integration/MenuEndpointTests.cs | 2 +- .../Integration/SettingsEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 6 ++ .../Integration/ConnectEndpointTests.cs | 3 +- .../Integration/UsersEndpointTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ test.runsettings | 8 +++ .../SimpleModule.Benchmarks.csproj | 2 + .../Inertia/InertiaResultTests.cs | 3 +- .../Infrastructure/ModuleOptionsTests.cs | 3 +- .../WebApplicationFactoryTests.cs | 3 +- .../IntegrationTestCollection.cs | 6 ++ .../Fixtures/IntegrationTestCollection.cs | 12 ++++ .../SimpleModule.Tests.Shared.csproj | 4 ++ 56 files changed, 322 insertions(+), 124 deletions(-) create mode 100644 Directory.Build.targets create mode 100644 modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs create mode 100644 modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs create mode 100644 modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs create mode 100644 modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs create mode 100644 modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs create mode 100644 modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs create mode 100644 modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs create mode 100644 modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs create mode 100644 modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs create mode 100644 modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs create mode 100644 modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs create mode 100644 modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs create mode 100644 test.runsettings create mode 100644 tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs create mode 100644 tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs diff --git a/Directory.Build.props b/Directory.Build.props index 29edb511..9e579562 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -16,6 +16,8 @@ true true + + $(MSBuildThisFileDirectory)test.runsettings diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 00000000..3f31d0af --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,10 @@ + + + + false + false + + + + + diff --git a/framework/SimpleModule.Agents/AgentChatService.cs b/framework/SimpleModule.Agents/AgentChatService.cs index 188270e1..c37b358c 100644 --- a/framework/SimpleModule.Agents/AgentChatService.cs +++ b/framework/SimpleModule.Agents/AgentChatService.cs @@ -56,11 +56,7 @@ public async IAsyncEnumerable ChatStreamAsync( ? new FunctionInvokingChatClient(chatClient) : chatClient; await foreach ( - var update in client.GetStreamingResponseAsync( - messages, - chatOptions, - cancellationToken - ) + var update in client.GetStreamingResponseAsync(messages, chatOptions, cancellationToken) ) { foreach (var content in update.Contents) diff --git a/framework/SimpleModule.Generator/Emitters/LocalizationExtensionsEmitter.cs b/framework/SimpleModule.Generator/Emitters/LocalizationExtensionsEmitter.cs index c7e7a85f..14b6e969 100644 --- a/framework/SimpleModule.Generator/Emitters/LocalizationExtensionsEmitter.cs +++ b/framework/SimpleModule.Generator/Emitters/LocalizationExtensionsEmitter.cs @@ -35,9 +35,7 @@ public void Emit(SourceProductionContext context, DiscoveryData data) foreach (var module in data.Modules) { - sb.AppendLine( - $" typeof({module.FullyQualifiedName}).Assembly," - ); + sb.AppendLine($" typeof({module.FullyQualifiedName}).Assembly,"); } sb.AppendLine(" };"); @@ -45,6 +43,9 @@ public void Emit(SourceProductionContext context, DiscoveryData data) sb.AppendLine(" }"); sb.AppendLine("}"); - context.AddSource("LocalizationExtensions.g.cs", SourceText.From(sb.ToString(), Encoding.UTF8)); + context.AddSource( + "LocalizationExtensions.g.cs", + SourceText.From(sb.ToString(), Encoding.UTF8) + ); } } diff --git a/framework/SimpleModule.Rag/KnowledgeIndexingHostedService.cs b/framework/SimpleModule.Rag/KnowledgeIndexingHostedService.cs index 4fd01176..bb0c4bda 100644 --- a/framework/SimpleModule.Rag/KnowledgeIndexingHostedService.cs +++ b/framework/SimpleModule.Rag/KnowledgeIndexingHostedService.cs @@ -36,12 +36,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) { using var sourceScope = serviceProvider.CreateScope(); var scopedStore = sourceScope.ServiceProvider.GetRequiredService(); - await IndexSourceAsync( - scopedStore, - source, - sourceScope.ServiceProvider, - stoppingToken - ); + await IndexSourceAsync(scopedStore, source, sourceScope.ServiceProvider, stoppingToken); }); await Task.WhenAll(tasks); } diff --git a/framework/SimpleModule.Rag/VectorKnowledgeStore.cs b/framework/SimpleModule.Rag/VectorKnowledgeStore.cs index 943c8796..61b4b940 100644 --- a/framework/SimpleModule.Rag/VectorKnowledgeStore.cs +++ b/framework/SimpleModule.Rag/VectorKnowledgeStore.cs @@ -57,7 +57,6 @@ public async Task> SearchAsync( if (!await collection.CollectionExistsAsync(cancellationToken)) return []; - var queryEmbeddings = await embeddingGenerator.GenerateAsync( [query], cancellationToken: cancellationToken diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs index c889f305..f595d9e4 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs @@ -10,7 +10,8 @@ namespace Admin.Tests.Integration; -public class AdminPermissionsTests : IClassFixture +[Collection("Integration")] +public class AdminPermissionsTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs index 261aba6b..82d6228b 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs @@ -9,7 +9,8 @@ namespace Admin.Tests.Integration; -public class AdminRolesEndpointTests : IClassFixture +[Collection("Integration")] +public class AdminRolesEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs index f49af68f..a95fd3c4 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs @@ -9,7 +9,8 @@ namespace Admin.Tests.Integration; -public class AdminUsersEndpointTests : IClassFixture +[Collection("Integration")] +public class AdminUsersEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs new file mode 100644 index 00000000..2157f023 --- /dev/null +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs @@ -0,0 +1,6 @@ +using SimpleModule.Tests.Shared.Fixtures; +using Xunit; + +[CollectionDefinition("Integration")] +public sealed class IntegrationTestCollection + : ICollectionFixture; diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs index 5303beb1..a1e97134 100644 --- a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs @@ -8,7 +8,8 @@ namespace BackgroundJobs.Tests.Integration; -public class BackgroundJobsEndpointTests : IClassFixture +[Collection("Integration")] +public class BackgroundJobsEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs index 4031577f..b9d12957 100644 --- a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs @@ -5,7 +5,8 @@ namespace BackgroundJobs.Tests.Integration; -public class BackgroundJobsViewEndpointTests : IClassFixture +[Collection("Integration")] +public class BackgroundJobsViewEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs new file mode 100644 index 00000000..2157f023 --- /dev/null +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs @@ -0,0 +1,6 @@ +using SimpleModule.Tests.Shared.Fixtures; +using Xunit; + +[CollectionDefinition("Integration")] +public sealed class IntegrationTestCollection + : ICollectionFixture; diff --git a/modules/Directory.Build.targets b/modules/Directory.Build.targets index 746a4a27..ee16ea74 100644 --- a/modules/Directory.Build.targets +++ b/modules/Directory.Build.targets @@ -1,4 +1,5 @@ + + 0 + true + + diff --git a/tests/SimpleModule.Benchmarks/SimpleModule.Benchmarks.csproj b/tests/SimpleModule.Benchmarks/SimpleModule.Benchmarks.csproj index 3a728fa8..cf3d0e6f 100644 --- a/tests/SimpleModule.Benchmarks/SimpleModule.Benchmarks.csproj +++ b/tests/SimpleModule.Benchmarks/SimpleModule.Benchmarks.csproj @@ -3,6 +3,8 @@ net10.0 Exe false + + false diff --git a/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs b/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs index 2a16e0d5..34e8a2da 100644 --- a/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs +++ b/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs @@ -7,7 +7,8 @@ namespace SimpleModule.Core.Tests.Inertia; -public class InertiaResultTests : IClassFixture +[Collection("Integration")] +public class InertiaResultTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs b/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs index e47932e0..61e18109 100644 --- a/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs +++ b/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs @@ -18,7 +18,8 @@ namespace SimpleModule.Core.Tests.Infrastructure; /// resolved with their default values. Also verifies that overrides from the host /// app's Configure{Module}() calls are applied correctly. /// -public class ModuleOptionsTests : IClassFixture +[Collection("Integration")] +public class ModuleOptionsTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs b/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs index c9eea162..5e39db9c 100644 --- a/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs +++ b/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs @@ -16,7 +16,8 @@ namespace SimpleModule.Core.Tests.Infrastructure; /// missing DbContext replacements, and service resolution deadlocks that /// would silently hang every integration test. /// -public class WebApplicationFactoryTests : IClassFixture +[Collection("Integration")] +public class WebApplicationFactoryTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs b/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs new file mode 100644 index 00000000..2157f023 --- /dev/null +++ b/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs @@ -0,0 +1,6 @@ +using SimpleModule.Tests.Shared.Fixtures; +using Xunit; + +[CollectionDefinition("Integration")] +public sealed class IntegrationTestCollection + : ICollectionFixture; diff --git a/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs b/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs new file mode 100644 index 00000000..8cedb1c8 --- /dev/null +++ b/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs @@ -0,0 +1,12 @@ +using SimpleModule.Tests.Shared.Fixtures; +using Xunit; + +/// +/// Shares a single across all test classes +/// in the same assembly that are decorated with [Collection("Integration")]. +/// This avoids spinning up a separate WebApplicationFactory per test class. +/// Copy this definition into each test assembly that uses the collection. +/// +[CollectionDefinition("Integration")] +public sealed class IntegrationTestCollection + : ICollectionFixture; diff --git a/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj b/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj index 23a317f3..abe26d58 100644 --- a/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj +++ b/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj @@ -13,6 +13,10 @@ + + + + From 215808bc437ac9f7c96744b0b8cdea5d869ca268 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Apr 2026 06:34:21 +0000 Subject: [PATCH 2/6] Fix flaky Stop_LogsAreDrainedToo test by preventing data loss on shutdown The main loop passed stoppingToken to FlushBatchAsync. If StopAsync cancelled the token mid-flush (during ToDictionaryAsync or SaveChangesAsync), entries already consumed from the channel were lost. Use CancellationToken.None for in-loop flushes, matching the drain path that already does this. --- .../Services/ProgressFlushService.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/Services/ProgressFlushService.cs b/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/Services/ProgressFlushService.cs index af3bf93a..8d7a4090 100644 --- a/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/Services/ProgressFlushService.cs +++ b/modules/BackgroundJobs/src/SimpleModule.BackgroundJobs/Services/ProgressFlushService.cs @@ -42,7 +42,10 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken) if (batch.Count > 0) { - await FlushBatchAsync(batch, opts.MaxLogEntries, stoppingToken); + // Use CancellationToken.None: entries were already consumed from the + // channel, so the flush must complete to avoid data loss if StopAsync + // cancels stoppingToken mid-save. + await FlushBatchAsync(batch, opts.MaxLogEntries, CancellationToken.None); } } } From 5635275059abd67c8a6e78ae8abe6905458ef6f0 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Apr 2026 07:00:41 +0000 Subject: [PATCH 3/6] Keep analyzers enabled in test projects, suppress CA1711 for xUnit collection fixtures Reverts analyzer disabling (RunAnalyzers/EnforceCodeStyleInBuild) to maintain code quality checks in test projects. Only removes Roslynator from test projects. Adds CA1711 pragma suppression to IntegrationTestCollection files since the 'Collection' suffix is an xUnit naming convention. --- Directory.Build.targets | 6 +----- .../SimpleModule.Admin.Tests/IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../SimpleModule.Orders.Tests/IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../IntegrationTestCollection.cs | 2 ++ .../SimpleModule.Users.Tests/IntegrationTestCollection.cs | 2 ++ tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs | 2 ++ .../Fixtures/IntegrationTestCollection.cs | 2 ++ 15 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 3f31d0af..f8f378b2 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,9 +1,5 @@ - - - false - false - + diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs b/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs +++ b/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs b/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs +++ b/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs +++ b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs +++ b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs b/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs +++ b/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs b/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs +++ b/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs b/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs +++ b/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs b/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs +++ b/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs b/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs +++ b/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs b/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs +++ b/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs b/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs index 2157f023..54d071cd 100644 --- a/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs +++ b/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs @@ -1,6 +1,8 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 diff --git a/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs b/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs index 8cedb1c8..8620172c 100644 --- a/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs +++ b/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs @@ -7,6 +7,8 @@ /// This avoids spinning up a separate WebApplicationFactory per test class. /// Copy this definition into each test assembly that uses the collection. /// +#pragma warning disable CA1711 // xUnit collection fixture naming convention [CollectionDefinition("Integration")] public sealed class IntegrationTestCollection : ICollectionFixture; +#pragma warning restore CA1711 From a2bbbee6aa016345c3c0d5e4185b1eed874e585b Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Apr 2026 07:11:17 +0000 Subject: [PATCH 4/6] Simplify: add missing EmailDbContext init, use constant for collection name, move CA1711 to editorconfig - Add EnsureTablesCreated (was missing after ReplaceDbContext) - Define TestCollections.Integration constant to replace raw "Integration" string in 36+ locations (prevents silent typo mismatches) - Suppress CA1711 globally in .editorconfig instead of per-file pragmas - Fix stale comment in Tests.Shared.csproj about linked compile --- .editorconfig | 3 +++ .../Integration/AdminPermissionsTests.cs | 2 +- .../Integration/AdminRolesEndpointTests.cs | 2 +- .../Integration/AdminUsersEndpointTests.cs | 2 +- .../SimpleModule.Admin.Tests/IntegrationTestCollection.cs | 4 +--- .../Integration/BackgroundJobsEndpointTests.cs | 2 +- .../Integration/BackgroundJobsViewEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../Integration/FeatureFlagEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../Integration/InertiaTranslationPropsTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../Integration/MarketplaceBrowseEndpointTests.cs | 2 +- .../Integration/MarketplaceEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../Integration/ClientManagementTests.cs | 2 +- .../Integration/ConnectEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../Integration/OrdersEndpointTests.cs | 2 +- .../SimpleModule.Orders.Tests/IntegrationTestCollection.cs | 4 +--- .../IntegrationTestCollection.cs | 4 +--- .../SimpleModule.PageBuilder.Tests/PageEndpointTests.cs | 2 +- .../Integration/ProductsBrowseEndpointTests.cs | 2 +- .../Integration/ProductsEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../IntegrationTestCollection.cs | 4 +--- .../RateLimitingEndpointTests.cs | 2 +- .../Integration/MenuEndpointTests.cs | 2 +- .../Integration/SettingsEndpointTests.cs | 2 +- .../IntegrationTestCollection.cs | 4 +--- .../Integration/ConnectEndpointTests.cs | 2 +- .../Integration/UsersEndpointTests.cs | 2 +- .../SimpleModule.Users.Tests/IntegrationTestCollection.cs | 4 +--- tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs | 2 +- .../Infrastructure/ModuleOptionsTests.cs | 2 +- .../Infrastructure/WebApplicationFactoryTests.cs | 2 +- tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs | 4 +--- .../Fixtures/IntegrationTestCollection.cs | 6 ++---- .../Fixtures/SimpleModuleWebApplicationFactory.cs | 1 + tests/SimpleModule.Tests.Shared/Fixtures/TestCollections.cs | 6 ++++++ .../SimpleModule.Tests.Shared.csproj | 2 +- 41 files changed, 49 insertions(+), 67 deletions(-) create mode 100644 tests/SimpleModule.Tests.Shared/Fixtures/TestCollections.cs diff --git a/.editorconfig b/.editorconfig index bbab7044..c18ce75a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -127,6 +127,9 @@ dotnet_diagnostic.CA1724.severity = none # CA2007 — consider calling ConfigureAwait (not needed in ASP.NET Core) dotnet_diagnostic.CA2007.severity = none +# CA1711 — identifiers should not have incorrect suffix (xUnit collections, EventHandler, Permission) +dotnet_diagnostic.CA1711.severity = none + # CA1716 — identifiers should not match keywords dotnet_diagnostic.CA1716.severity = none diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs index f595d9e4..ee7b911c 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminPermissionsTests.cs @@ -10,7 +10,7 @@ namespace Admin.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class AdminPermissionsTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs index 82d6228b..5809a927 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminRolesEndpointTests.cs @@ -9,7 +9,7 @@ namespace Admin.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class AdminRolesEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs index a95fd3c4..96b31068 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/Integration/AdminUsersEndpointTests.cs @@ -9,7 +9,7 @@ namespace Admin.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class AdminUsersEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs b/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs +++ b/modules/Admin/tests/SimpleModule.Admin.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs index a1e97134..9b2aad5a 100644 --- a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsEndpointTests.cs @@ -8,7 +8,7 @@ namespace BackgroundJobs.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class BackgroundJobsEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs index b9d12957..4fb85fd6 100644 --- a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/Integration/BackgroundJobsViewEndpointTests.cs @@ -5,7 +5,7 @@ namespace BackgroundJobs.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class BackgroundJobsViewEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs +++ b/modules/BackgroundJobs/tests/SimpleModule.BackgroundJobs.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/Integration/FeatureFlagEndpointTests.cs b/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/Integration/FeatureFlagEndpointTests.cs index 78f49145..1eba7092 100644 --- a/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/Integration/FeatureFlagEndpointTests.cs +++ b/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/Integration/FeatureFlagEndpointTests.cs @@ -7,7 +7,7 @@ namespace FeatureFlags.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class FeatureFlagEndpointTests(SimpleModuleWebApplicationFactory factory) { private static readonly string[] ViewPermission = [FeatureFlagsPermissions.View]; diff --git a/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs b/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs +++ b/modules/FeatureFlags/tests/SimpleModule.FeatureFlags.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/Localization/tests/SimpleModule.Localization.Tests/Integration/InertiaTranslationPropsTests.cs b/modules/Localization/tests/SimpleModule.Localization.Tests/Integration/InertiaTranslationPropsTests.cs index 5162f650..3af6fa9b 100644 --- a/modules/Localization/tests/SimpleModule.Localization.Tests/Integration/InertiaTranslationPropsTests.cs +++ b/modules/Localization/tests/SimpleModule.Localization.Tests/Integration/InertiaTranslationPropsTests.cs @@ -6,7 +6,7 @@ namespace SimpleModule.Localization.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class InertiaTranslationPropsTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs b/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs +++ b/modules/Localization/tests/SimpleModule.Localization.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceBrowseEndpointTests.cs b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceBrowseEndpointTests.cs index 5b11ae5e..f7271aa3 100644 --- a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceBrowseEndpointTests.cs +++ b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceBrowseEndpointTests.cs @@ -4,7 +4,7 @@ namespace SimpleModule.Marketplace.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class MarketplaceBrowseEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceEndpointTests.cs b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceEndpointTests.cs index ee829b3a..7549b4df 100644 --- a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceEndpointTests.cs +++ b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/Integration/MarketplaceEndpointTests.cs @@ -4,7 +4,7 @@ namespace SimpleModule.Marketplace.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class MarketplaceEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs +++ b/modules/Marketplace/tests/SimpleModule.Marketplace.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ClientManagementTests.cs b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ClientManagementTests.cs index f099e61e..43f0a1b8 100644 --- a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ClientManagementTests.cs +++ b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ClientManagementTests.cs @@ -9,7 +9,7 @@ namespace OpenIddict.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class ClientManagementTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ConnectEndpointTests.cs b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ConnectEndpointTests.cs index 64495533..d461376b 100644 --- a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ConnectEndpointTests.cs +++ b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/Integration/ConnectEndpointTests.cs @@ -5,7 +5,7 @@ namespace OpenIddict.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class ConnectEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs +++ b/modules/OpenIddict/tests/SimpleModule.OpenIddict.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/Orders/tests/SimpleModule.Orders.Tests/Integration/OrdersEndpointTests.cs b/modules/Orders/tests/SimpleModule.Orders.Tests/Integration/OrdersEndpointTests.cs index 59b27154..71dba6f6 100644 --- a/modules/Orders/tests/SimpleModule.Orders.Tests/Integration/OrdersEndpointTests.cs +++ b/modules/Orders/tests/SimpleModule.Orders.Tests/Integration/OrdersEndpointTests.cs @@ -7,7 +7,7 @@ namespace Orders.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class OrdersEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs b/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs +++ b/modules/Orders/tests/SimpleModule.Orders.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs b/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs +++ b/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/PageEndpointTests.cs b/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/PageEndpointTests.cs index f9f334ff..58c0c634 100644 --- a/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/PageEndpointTests.cs +++ b/modules/PageBuilder/tests/SimpleModule.PageBuilder.Tests/PageEndpointTests.cs @@ -7,7 +7,7 @@ namespace PageBuilder.Tests; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class PageEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsBrowseEndpointTests.cs b/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsBrowseEndpointTests.cs index 6decffa6..fd06b544 100644 --- a/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsBrowseEndpointTests.cs +++ b/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsBrowseEndpointTests.cs @@ -7,7 +7,7 @@ namespace SimpleModule.Products.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class ProductsBrowseEndpointTests { private readonly HttpClient _client; diff --git a/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsEndpointTests.cs b/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsEndpointTests.cs index 662a2eee..bc02f670 100644 --- a/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsEndpointTests.cs +++ b/modules/Products/tests/SimpleModule.Products.Tests/Integration/ProductsEndpointTests.cs @@ -7,7 +7,7 @@ namespace Products.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class ProductsEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs b/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs +++ b/modules/Products/tests/SimpleModule.Products.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs b/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs +++ b/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/RateLimitingEndpointTests.cs b/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/RateLimitingEndpointTests.cs index 8ea64a4a..666eec39 100644 --- a/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/RateLimitingEndpointTests.cs +++ b/modules/RateLimiting/tests/SimpleModule.RateLimiting.Tests/RateLimitingEndpointTests.cs @@ -5,7 +5,7 @@ namespace SimpleModule.RateLimiting.Tests; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class RateLimitingEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/MenuEndpointTests.cs b/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/MenuEndpointTests.cs index f9cd1dfb..f179e9fc 100644 --- a/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/MenuEndpointTests.cs +++ b/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/MenuEndpointTests.cs @@ -6,7 +6,7 @@ namespace Settings.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class MenuEndpointTests(SimpleModuleWebApplicationFactory factory) { [Fact] diff --git a/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/SettingsEndpointTests.cs b/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/SettingsEndpointTests.cs index c9fe2dce..4350f4a5 100644 --- a/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/SettingsEndpointTests.cs +++ b/modules/Settings/tests/SimpleModule.Settings.Tests/Integration/SettingsEndpointTests.cs @@ -7,7 +7,7 @@ namespace Settings.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class SettingsEndpointTests(SimpleModuleWebApplicationFactory factory) { [Fact] diff --git a/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs b/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs +++ b/modules/Settings/tests/SimpleModule.Settings.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/modules/Users/tests/SimpleModule.Users.Tests/Integration/ConnectEndpointTests.cs b/modules/Users/tests/SimpleModule.Users.Tests/Integration/ConnectEndpointTests.cs index 91a0493a..5268ecfb 100644 --- a/modules/Users/tests/SimpleModule.Users.Tests/Integration/ConnectEndpointTests.cs +++ b/modules/Users/tests/SimpleModule.Users.Tests/Integration/ConnectEndpointTests.cs @@ -4,7 +4,7 @@ namespace Users.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class ConnectEndpointTests { private readonly HttpClient _unauthenticatedClient; diff --git a/modules/Users/tests/SimpleModule.Users.Tests/Integration/UsersEndpointTests.cs b/modules/Users/tests/SimpleModule.Users.Tests/Integration/UsersEndpointTests.cs index 76012277..a89b3567 100644 --- a/modules/Users/tests/SimpleModule.Users.Tests/Integration/UsersEndpointTests.cs +++ b/modules/Users/tests/SimpleModule.Users.Tests/Integration/UsersEndpointTests.cs @@ -8,7 +8,7 @@ namespace Users.Tests.Integration; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class UsersEndpointTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs b/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs +++ b/modules/Users/tests/SimpleModule.Users.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs b/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs index 34e8a2da..9bb98389 100644 --- a/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs +++ b/tests/SimpleModule.Core.Tests/Inertia/InertiaResultTests.cs @@ -7,7 +7,7 @@ namespace SimpleModule.Core.Tests.Inertia; -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class InertiaResultTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs b/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs index 61e18109..e2943663 100644 --- a/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs +++ b/tests/SimpleModule.Core.Tests/Infrastructure/ModuleOptionsTests.cs @@ -18,7 +18,7 @@ namespace SimpleModule.Core.Tests.Infrastructure; /// resolved with their default values. Also verifies that overrides from the host /// app's Configure{Module}() calls are applied correctly. /// -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class ModuleOptionsTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs b/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs index 5e39db9c..458beb49 100644 --- a/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs +++ b/tests/SimpleModule.Core.Tests/Infrastructure/WebApplicationFactoryTests.cs @@ -16,7 +16,7 @@ namespace SimpleModule.Core.Tests.Infrastructure; /// missing DbContext replacements, and service resolution deadlocks that /// would silently hang every integration test. /// -[Collection("Integration")] +[Collection(TestCollections.Integration)] public class WebApplicationFactoryTests { private readonly SimpleModuleWebApplicationFactory _factory; diff --git a/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs b/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs index 54d071cd..8c4a61db 100644 --- a/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs +++ b/tests/SimpleModule.Core.Tests/IntegrationTestCollection.cs @@ -1,8 +1,6 @@ using SimpleModule.Tests.Shared.Fixtures; using Xunit; -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs b/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs index 8620172c..2655c1aa 100644 --- a/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs +++ b/tests/SimpleModule.Tests.Shared/Fixtures/IntegrationTestCollection.cs @@ -3,12 +3,10 @@ /// /// Shares a single across all test classes -/// in the same assembly that are decorated with [Collection("Integration")]. +/// in the same assembly that are decorated with [Collection(TestCollections.Integration)]. /// This avoids spinning up a separate WebApplicationFactory per test class. /// Copy this definition into each test assembly that uses the collection. /// -#pragma warning disable CA1711 // xUnit collection fixture naming convention -[CollectionDefinition("Integration")] +[CollectionDefinition(TestCollections.Integration)] public sealed class IntegrationTestCollection : ICollectionFixture; -#pragma warning restore CA1711 diff --git a/tests/SimpleModule.Tests.Shared/Fixtures/SimpleModuleWebApplicationFactory.cs b/tests/SimpleModule.Tests.Shared/Fixtures/SimpleModuleWebApplicationFactory.cs index 7cbcd34e..7fe277a6 100644 --- a/tests/SimpleModule.Tests.Shared/Fixtures/SimpleModuleWebApplicationFactory.cs +++ b/tests/SimpleModule.Tests.Shared/Fixtures/SimpleModuleWebApplicationFactory.cs @@ -173,6 +173,7 @@ private void EnsureModuleDatabasesCreated() EnsureTablesCreated(sp); EnsureTablesCreated(sp); EnsureTablesCreated(sp); + EnsureTablesCreated(sp); EnsureTablesCreated(sp); } diff --git a/tests/SimpleModule.Tests.Shared/Fixtures/TestCollections.cs b/tests/SimpleModule.Tests.Shared/Fixtures/TestCollections.cs new file mode 100644 index 00000000..62ca8e4e --- /dev/null +++ b/tests/SimpleModule.Tests.Shared/Fixtures/TestCollections.cs @@ -0,0 +1,6 @@ +namespace SimpleModule.Tests.Shared.Fixtures; + +public static class TestCollections +{ + public const string Integration = "Integration"; +} diff --git a/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj b/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj index abe26d58..70fcbcc2 100644 --- a/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj +++ b/tests/SimpleModule.Tests.Shared/SimpleModule.Tests.Shared.csproj @@ -14,7 +14,7 @@ - + From cf876fc8feaea268a622efdf95a871b85d2e4a29 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Apr 2026 07:36:40 +0000 Subject: [PATCH 5/6] Exclude CLI tests from default dotnet test (15min scaffolding tests) Cli.Tests spawns dotnet build on generated projects, taking ~15 minutes. Exclude from default run (same as LoadTests/Benchmarks). Run explicitly: dotnet test tests/SimpleModule.Cli.Tests --- tests/SimpleModule.Cli.Tests/SimpleModule.Cli.Tests.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/SimpleModule.Cli.Tests/SimpleModule.Cli.Tests.csproj b/tests/SimpleModule.Cli.Tests/SimpleModule.Cli.Tests.csproj index 6fc0cc61..c62f3dc2 100644 --- a/tests/SimpleModule.Cli.Tests/SimpleModule.Cli.Tests.csproj +++ b/tests/SimpleModule.Cli.Tests/SimpleModule.Cli.Tests.csproj @@ -3,6 +3,8 @@ net10.0 false Exe + + false From cfc859d63afeb460a92da5c65bf5a957412000b9 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 4 Apr 2026 08:22:36 +0000 Subject: [PATCH 6/6] Regenerate i18n keys for Email and RateLimiting modules --- .../src/SimpleModule.Email/Locales/keys.ts | 156 +++++++++--------- .../SimpleModule.RateLimiting/Locales/keys.ts | 15 ++ 2 files changed, 93 insertions(+), 78 deletions(-) create mode 100644 modules/RateLimiting/src/SimpleModule.RateLimiting/Locales/keys.ts diff --git a/modules/Email/src/SimpleModule.Email/Locales/keys.ts b/modules/Email/src/SimpleModule.Email/Locales/keys.ts index a169312f..65bc6cd3 100644 --- a/modules/Email/src/SimpleModule.Email/Locales/keys.ts +++ b/modules/Email/src/SimpleModule.Email/Locales/keys.ts @@ -1,110 +1,110 @@ export const EmailKeys = { - Templates: { - Title: 'Templates.Title', - Description: 'Templates.Description', - NewTemplate: 'Templates.NewTemplate', - ColName: 'Templates.ColName', - ColSlug: 'Templates.ColSlug', - ColSubject: 'Templates.ColSubject', - ColHtml: 'Templates.ColHtml', - ColActions: 'Templates.ColActions', - EditButton: 'Templates.EditButton', - DeleteButton: 'Templates.DeleteButton', - EmptyTitle: 'Templates.EmptyTitle', - EmptyDescription: 'Templates.EmptyDescription', - DeleteDialog: { - Title: 'Templates.DeleteDialog.Title', - Confirm: 'Templates.DeleteDialog.Confirm', - DeleteButton: 'Templates.DeleteDialog.DeleteButton', - }, - CancelButton: 'Templates.CancelButton', - Yes: 'Templates.Yes', - No: 'Templates.No', - FilterSearch: 'Templates.FilterSearch', - FilterApply: 'Templates.FilterApply', - Showing: 'Templates.Showing', - Of: 'Templates.Of', - Previous: 'Templates.Previous', - Next: 'Templates.Next', - }, CreateTemplate: { - Title: 'CreateTemplate.Title', - Description: 'CreateTemplate.Description', - CardTitle: 'CreateTemplate.CardTitle', + BodyLabel: 'CreateTemplate.BodyLabel', + BodyPlaceholder: 'CreateTemplate.BodyPlaceholder', Breadcrumb: 'CreateTemplate.Breadcrumb', BreadcrumbTemplates: 'CreateTemplate.BreadcrumbTemplates', + CancelButton: 'CreateTemplate.CancelButton', + CardTitle: 'CreateTemplate.CardTitle', + Description: 'CreateTemplate.Description', + IsHtmlLabel: 'CreateTemplate.IsHtmlLabel', NameLabel: 'CreateTemplate.NameLabel', SlugLabel: 'CreateTemplate.SlugLabel', SlugPlaceholder: 'CreateTemplate.SlugPlaceholder', SubjectLabel: 'CreateTemplate.SubjectLabel', SubjectPlaceholder: 'CreateTemplate.SubjectPlaceholder', - BodyLabel: 'CreateTemplate.BodyLabel', - BodyPlaceholder: 'CreateTemplate.BodyPlaceholder', - IsHtmlLabel: 'CreateTemplate.IsHtmlLabel', SubmitButton: 'CreateTemplate.SubmitButton', - CancelButton: 'CreateTemplate.CancelButton', + Title: 'CreateTemplate.Title', + }, + Dashboard: { + DailyVolume: 'Dashboard.DailyVolume', + Description: 'Dashboard.Description', + Failed: 'Dashboard.Failed', + FailureRate: 'Dashboard.FailureRate', + Last24Hours: 'Dashboard.Last24Hours', + Sent: 'Dashboard.Sent', + Title: 'Dashboard.Title', + TopErrorsCount: 'Dashboard.TopErrorsCount', + TopErrorsEmpty: 'Dashboard.TopErrorsEmpty', + TopErrorsErrorMessage: 'Dashboard.TopErrorsErrorMessage', + TopErrorsTitle: 'Dashboard.TopErrorsTitle', + TotalFailed: 'Dashboard.TotalFailed', + TotalQueued: 'Dashboard.TotalQueued', + TotalRetrying: 'Dashboard.TotalRetrying', + TotalSent: 'Dashboard.TotalSent', }, EditTemplate: { - Title: 'EditTemplate.Title', - Description: 'EditTemplate.Description', - CardTitle: 'EditTemplate.CardTitle', + BodyLabel: 'EditTemplate.BodyLabel', Breadcrumb: 'EditTemplate.Breadcrumb', BreadcrumbTemplates: 'EditTemplate.BreadcrumbTemplates', - NameLabel: 'EditTemplate.NameLabel', - SubjectLabel: 'EditTemplate.SubjectLabel', - BodyLabel: 'EditTemplate.BodyLabel', - IsHtmlLabel: 'EditTemplate.IsHtmlLabel', - SaveChanges: 'EditTemplate.SaveChanges', CancelButton: 'EditTemplate.CancelButton', + CardTitle: 'EditTemplate.CardTitle', DangerZone: 'EditTemplate.DangerZone', - DeleteTemplate: 'EditTemplate.DeleteTemplate', DeleteDialog: { - Title: 'EditTemplate.DeleteDialog.Title', + CancelButton: 'EditTemplate.DeleteDialog.CancelButton', Confirm: 'EditTemplate.DeleteDialog.Confirm', DeleteButton: 'EditTemplate.DeleteDialog.DeleteButton', - CancelButton: 'EditTemplate.DeleteDialog.CancelButton', + Title: 'EditTemplate.DeleteDialog.Title', }, + DeleteTemplate: 'EditTemplate.DeleteTemplate', + Description: 'EditTemplate.Description', + IsHtmlLabel: 'EditTemplate.IsHtmlLabel', + NameLabel: 'EditTemplate.NameLabel', + SaveChanges: 'EditTemplate.SaveChanges', + SubjectLabel: 'EditTemplate.SubjectLabel', + Title: 'EditTemplate.Title', }, History: { - Title: 'History.Title', - Description: 'History.Description', - ColTo: 'History.ColTo', - ColSubject: 'History.ColSubject', - ColStatus: 'History.ColStatus', + AllStatuses: 'History.AllStatuses', + ColError: 'History.ColError', ColProvider: 'History.ColProvider', ColSentAt: 'History.ColSentAt', - ColError: 'History.ColError', - EmptyTitle: 'History.EmptyTitle', + ColStatus: 'History.ColStatus', + ColSubject: 'History.ColSubject', + ColTo: 'History.ColTo', + Description: 'History.Description', EmptyDescription: 'History.EmptyDescription', - FilterStatus: 'History.FilterStatus', - FilterTo: 'History.FilterTo', - FilterSubject: 'History.FilterSubject', + EmptyTitle: 'History.EmptyTitle', + EmptyWithFilters: 'History.EmptyWithFilters', + FilterApply: 'History.FilterApply', + FilterClear: 'History.FilterClear', FilterDateFrom: 'History.FilterDateFrom', FilterDateTo: 'History.FilterDateTo', - AllStatuses: 'History.AllStatuses', - Showing: 'History.Showing', + FilterStatus: 'History.FilterStatus', + FilterSubject: 'History.FilterSubject', + FilterTo: 'History.FilterTo', + Next: 'History.Next', Of: 'History.Of', Previous: 'History.Previous', - Next: 'History.Next', - FilterApply: 'History.FilterApply', - FilterClear: 'History.FilterClear', - EmptyWithFilters: 'History.EmptyWithFilters', + Showing: 'History.Showing', + Title: 'History.Title', }, - Dashboard: { - Title: 'Dashboard.Title', - Description: 'Dashboard.Description', - TotalSent: 'Dashboard.TotalSent', - TotalFailed: 'Dashboard.TotalFailed', - TotalQueued: 'Dashboard.TotalQueued', - TotalRetrying: 'Dashboard.TotalRetrying', - Last24Hours: 'Dashboard.Last24Hours', - FailureRate: 'Dashboard.FailureRate', - DailyVolume: 'Dashboard.DailyVolume', - TopErrorsTitle: 'Dashboard.TopErrorsTitle', - TopErrorsErrorMessage: 'Dashboard.TopErrorsErrorMessage', - TopErrorsCount: 'Dashboard.TopErrorsCount', - TopErrorsEmpty: 'Dashboard.TopErrorsEmpty', - Sent: 'Dashboard.Sent', - Failed: 'Dashboard.Failed', + Templates: { + CancelButton: 'Templates.CancelButton', + ColActions: 'Templates.ColActions', + ColHtml: 'Templates.ColHtml', + ColName: 'Templates.ColName', + ColSlug: 'Templates.ColSlug', + ColSubject: 'Templates.ColSubject', + DeleteButton: 'Templates.DeleteButton', + DeleteDialog: { + Confirm: 'Templates.DeleteDialog.Confirm', + DeleteButton: 'Templates.DeleteDialog.DeleteButton', + Title: 'Templates.DeleteDialog.Title', + }, + Description: 'Templates.Description', + EditButton: 'Templates.EditButton', + EmptyDescription: 'Templates.EmptyDescription', + EmptyTitle: 'Templates.EmptyTitle', + FilterApply: 'Templates.FilterApply', + FilterSearch: 'Templates.FilterSearch', + NewTemplate: 'Templates.NewTemplate', + Next: 'Templates.Next', + No: 'Templates.No', + Of: 'Templates.Of', + Previous: 'Templates.Previous', + Showing: 'Templates.Showing', + Title: 'Templates.Title', + Yes: 'Templates.Yes', }, } as const; diff --git a/modules/RateLimiting/src/SimpleModule.RateLimiting/Locales/keys.ts b/modules/RateLimiting/src/SimpleModule.RateLimiting/Locales/keys.ts new file mode 100644 index 00000000..6b67f1db --- /dev/null +++ b/modules/RateLimiting/src/SimpleModule.RateLimiting/Locales/keys.ts @@ -0,0 +1,15 @@ +export const RateLimitingKeys = { + Admin: { + CancelButton: 'Admin.CancelButton', + CreateButton: 'Admin.CreateButton', + DeleteButton: 'Admin.DeleteButton', + DeleteDialog: { + Confirm: 'Admin.DeleteDialog.Confirm', + Title: 'Admin.DeleteDialog.Title', + }, + Description: 'Admin.Description', + EmptyDescription: 'Admin.EmptyDescription', + EmptyTitle: 'Admin.EmptyTitle', + Title: 'Admin.Title', + }, +} as const;