From 849a70f9d114c8338fba8cac2f77d3361b4788ed Mon Sep 17 00:00:00 2001 From: StellaOps Bot Date: Sat, 6 Dec 2025 16:14:49 +0000 Subject: [PATCH] cli: populate migration module registry and tests --- .../Services/MigrationModuleRegistry.cs | 48 +++++++++++++++---- .../Commands/MigrationModuleRegistryTests.cs | 29 +++++++---- 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/src/Cli/StellaOps.Cli/Services/MigrationModuleRegistry.cs b/src/Cli/StellaOps.Cli/Services/MigrationModuleRegistry.cs index 546b3a4fa..610f4279a 100644 --- a/src/Cli/StellaOps.Cli/Services/MigrationModuleRegistry.cs +++ b/src/Cli/StellaOps.Cli/Services/MigrationModuleRegistry.cs @@ -1,4 +1,10 @@ using System.Reflection; +using StellaOps.Authority.Storage.Postgres; +using StellaOps.Concelier.Storage.Postgres; +using StellaOps.Excititor.Storage.Postgres; +using StellaOps.Notify.Storage.Postgres; +using StellaOps.Policy.Storage.Postgres; +using StellaOps.Scheduler.Storage.Postgres; namespace StellaOps.Cli.Services; @@ -17,15 +23,39 @@ public sealed record MigrationModuleInfo( /// public static class MigrationModuleRegistry { - // TODO: Wire actual module assemblies when Storage.Postgres projects are implemented - // Modules will be registered as: - // - Authority (auth schema) - StellaOps.Authority.Storage.Postgres.AuthorityDataSource - // - Scheduler (scheduler schema) - StellaOps.Scheduler.Storage.Postgres.SchedulerDataSource - // - Concelier (vuln schema) - StellaOps.Concelier.Storage.Postgres.ConcelierDataSource - // - Policy (policy schema) - StellaOps.Policy.Storage.Postgres.PolicyDataSource - // - Notify (notify schema) - StellaOps.Notify.Storage.Postgres.NotifyDataSource - // - Excititor (vex schema) - StellaOps.Excititor.Storage.Postgres.ExcititorDataSource - private static readonly List _modules = []; + private static readonly List _modules = + [ + new( + Name: "Authority", + SchemaName: "authority", + MigrationsAssembly: typeof(AuthorityDataSource).Assembly, + ResourcePrefix: "StellaOps.Authority.Storage.Postgres.Migrations"), + new( + Name: "Scheduler", + SchemaName: "scheduler", + MigrationsAssembly: typeof(SchedulerDataSource).Assembly, + ResourcePrefix: "StellaOps.Scheduler.Storage.Postgres.Migrations"), + new( + Name: "Concelier", + SchemaName: "vuln", + MigrationsAssembly: typeof(ConcelierDataSource).Assembly, + ResourcePrefix: "StellaOps.Concelier.Storage.Postgres.Migrations"), + new( + Name: "Policy", + SchemaName: "policy", + MigrationsAssembly: typeof(PolicyDataSource).Assembly, + ResourcePrefix: "StellaOps.Policy.Storage.Postgres.Migrations"), + new( + Name: "Notify", + SchemaName: "notify", + MigrationsAssembly: typeof(NotifyDataSource).Assembly, + ResourcePrefix: "StellaOps.Notify.Storage.Postgres.Migrations"), + new( + Name: "Excititor", + SchemaName: "vex", + MigrationsAssembly: typeof(ExcititorDataSource).Assembly, + ResourcePrefix: "StellaOps.Excititor.Storage.Postgres.Migrations"), + ]; /// /// Gets all registered modules. diff --git a/src/Cli/__Tests/StellaOps.Cli.Tests/Commands/MigrationModuleRegistryTests.cs b/src/Cli/__Tests/StellaOps.Cli.Tests/Commands/MigrationModuleRegistryTests.cs index 2bbe93e52..76d2a7b4e 100644 --- a/src/Cli/__Tests/StellaOps.Cli.Tests/Commands/MigrationModuleRegistryTests.cs +++ b/src/Cli/__Tests/StellaOps.Cli.Tests/Commands/MigrationModuleRegistryTests.cs @@ -7,30 +7,39 @@ namespace StellaOps.Cli.Tests.Commands; public class MigrationModuleRegistryTests { [Fact] - public void Modules_Default_IsEmpty() + public void Modules_Populated_With_All_Postgres_Modules() { - Assert.Empty(MigrationModuleRegistry.Modules); - Assert.Empty(MigrationModuleRegistry.ModuleNames); + var modules = MigrationModuleRegistry.Modules; + Assert.Equal(6, modules.Count); + Assert.Contains(modules, m => m.Name == "Authority" && m.SchemaName == "authority"); + Assert.Contains(modules, m => m.Name == "Scheduler" && m.SchemaName == "scheduler"); + Assert.Contains(modules, m => m.Name == "Concelier" && m.SchemaName == "vuln"); + Assert.Contains(modules, m => m.Name == "Policy" && m.SchemaName == "policy"); + Assert.Contains(modules, m => m.Name == "Notify" && m.SchemaName == "notify"); + Assert.Contains(modules, m => m.Name == "Excititor" && m.SchemaName == "vex"); + Assert.Equal(6, MigrationModuleRegistry.ModuleNames.Count()); } [Fact] - public void FindModule_WhenEmpty_ReturnsNull() + public void FindModule_Finds_By_Name_CaseInsensitive() { - var result = MigrationModuleRegistry.FindModule("Authority"); - Assert.Null(result); + var result = MigrationModuleRegistry.FindModule("authority"); + Assert.NotNull(result); + Assert.Equal("authority", result!.SchemaName); } [Fact] - public void GetModules_Filtered_WhenEmpty_ReturnsEmpty() + public void GetModules_Filtered_Returns_Single() { var result = MigrationModuleRegistry.GetModules("Authority"); - Assert.Empty(result); + var module = Assert.Single(result); + Assert.Equal("authority", module.SchemaName); } [Fact] - public void GetModules_All_WhenEmpty_ReturnsEmpty() + public void GetModules_All_Returns_All() { var result = MigrationModuleRegistry.GetModules(null); - Assert.Empty(result); + Assert.Equal(6, result.Count()); } }