using System.Reflection; using TeamUp.Bootstrap; using TeamUp.Infrastructure.Persistence; using TeamUp.Modules.Assembler; using TeamUp.Modules.Governance; using TeamUp.Modules.Identity; using TeamUp.Modules.Integrations; using TeamUp.Modules.Memory; using TeamUp.Modules.OrgBoard; using TeamUp.Modules.Skills; using TeamUp.SharedKernel.Modularity; namespace TeamUp.ArchitectureTests; /// /// Handles to the production assemblies. The boundary tests assert on real assembly references /// () — reflection is deterministic and needs no /// third-party arch-test framework. Because each module is its own assembly, an assembly-level /// reference check is exactly the "no cross-module access" boundary. /// internal static class ArchitectureFixture { public static readonly Assembly SharedKernel = typeof(IModule).Assembly; public static readonly Assembly Infrastructure = typeof(MigrationRunner).Assembly; public static readonly Assembly Bootstrap = typeof(ModuleCatalog).Assembly; public static readonly Assembly[] ModuleAssemblies = [ typeof(IdentityModule).Assembly, typeof(OrgBoardModule).Assembly, typeof(SkillsModule).Assembly, typeof(IntegrationsModule).Assembly, typeof(MemoryModule).Assembly, typeof(AssemblerModule).Assembly, typeof(GovernanceModule).Assembly, ]; public static HashSet ReferencedAssemblyNames(this Assembly assembly) => assembly.GetReferencedAssemblies() .Select(name => name.Name!) .ToHashSet(StringComparer.Ordinal); }