This commit is contained in:
2026-03-15 11:22:01 +01:00
commit 599ecd66a5
109 changed files with 3348 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
namespace Mccn.ArchitectureTests.Abstractions;
public abstract class BaseTest
{
protected const string UsersNamespace = "Mccn.Modules.Users";
protected const string HelloNamespace = "Mccn.Modules.Hello";
}

View File

@@ -0,0 +1,12 @@
using FluentAssertions;
using NetArchTest.Rules;
namespace Mccn.ArchitectureTests.Abstractions;
internal static class TestResultExtensions
{
internal static void ShouldBeSuccessful(this TestResult testResult)
{
testResult.FailingTypes?.Should().BeEmpty();
}
}

View File

@@ -0,0 +1,46 @@
using System.Reflection;
using Mccn.ArchitectureTests.Abstractions;
using Mccn.Modules.Users.Application;
using Mccn.Modules.Users.Domain.Users;
using Mccn.Modules.Users.Infrastructure;
using NetArchTest.Rules;
namespace Mccn.ArchitectureTests.Layers;
public class ModuleTests : BaseTest
{
[Fact]
public void UsersModule_ShouldNotHaveDependencyOn_HelloModule()
{
List<Assembly> usersAssemblies =
[
typeof(User).Assembly,
AssemblyReference.Assembly,
Modules.Users.Presentation.AssemblyReference.Assembly,
typeof(DependencyInjection).Assembly
];
Types.InAssemblies(usersAssemblies)
.Should()
.NotHaveDependencyOn(HelloNamespace)
.GetResult()
.ShouldBeSuccessful();
}
[Fact]
public void HelloModule_ShouldNotHaveDependencyOn_UsersModule()
{
List<Assembly> helloAssemblies =
[
Modules.Hello.Application.AssemblyReference.Assembly,
Modules.Hello.Presentation.AssemblyReference.Assembly,
typeof(Modules.Hello.Infrastructure.DependencyInjection).Assembly
];
Types.InAssemblies(helloAssemblies)
.Should()
.NotHaveDependencyOn(UsersNamespace)
.GetResult()
.ShouldBeSuccessful();
}
}

View File

@@ -0,0 +1,29 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.4"/>
<PackageReference Include="FluentAssertions" Version="8.8.0"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1"/>
<PackageReference Include="NetArchTest.Rules" Version="1.3.2"/>
<PackageReference Include="xunit" Version="2.9.3"/>
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.4"/>
</ItemGroup>
<ItemGroup>
<Using Include="Xunit"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\API\Mccn.Api\Mccn.Api.csproj"/>
<ProjectReference Include="..\..\src\Modules\Users\Mccn.Modules.Users.Infrastructure\Mccn.Modules.Users.Infrastructure.csproj"/>
<ProjectReference Include="..\..\src\Modules\Hello\Mccn.Modules.Hello.Infrastructure\Mccn.Modules.Hello.Infrastructure.csproj"/>
</ItemGroup>
</Project>