Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduction of architecture tests for stabilization and standardization of implementation #604

Merged
merged 3 commits into from
Mar 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using ArchUnitNET.Domain;
using ArchUnitNET.MSTestV2;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Nager.Date.ArchitectureTest.Internals;
using Nager.Date.HolidayProviders;
using static ArchUnitNET.Fluent.ArchRuleDefinition;

namespace Nager.Date.ArchitectureTest
{
[TestClass]
public class IHolidayProviderArchitectureTests
{
private static readonly IObjectProvider<Class> _holidayProviders = Classes()
.That()
.AreAssignableTo(typeof(IHolidayProvider))
.As("Nager.Date HolidayProvider");

[TestMethod]
public void HolidayProvider_Should_Be_Internal()
{
var rule = Classes()
.That()
.Are(_holidayProviders)
.Should()
.BeInternal();

rule.Check(NagerDateArchitecture.Instance);
}

[TestMethod]
public void HolidayProvider_Should_Be_Sealed()
{
var rule = Classes()
.That()
.Are(_holidayProviders)
.Should()
.BeSealed();

rule.Check(NagerDateArchitecture.Instance);
}

[TestMethod]
public void HolidayProvider_Should_Reside_In_Namespace()
{
var rule = Classes()
.That()
.Are(_holidayProviders)
.Should()
.ResideInNamespace("Nager.Date.HolidayProviders");

rule.Check(NagerDateArchitecture.Instance);
}
}
}
24 changes: 24 additions & 0 deletions src/Nager.Date.ArchitectureTest/Internals/NagerDateArchitecture.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Threading;
using System;
using ArchUnitNET.Domain;
using ArchUnitNET.Loader;

namespace Nager.Date.ArchitectureTest.Internals
{
internal static class NagerDateArchitecture
{
// TIP: load your architecture once at the start to maximize performance of your tests
private static readonly Lazy<Architecture> _instance = new Lazy<Architecture>(
() => LoadArchitecture(),
LazyThreadSafetyMode.PublicationOnly
);

public static Architecture Instance => _instance.Value;

private static Architecture LoadArchitecture()
{
var architecture = new ArchLoader().LoadAssembly(typeof(HolidaySystem).Assembly).Build();
return architecture;
}
}
}
22 changes: 22 additions & 0 deletions src/Nager.Date.ArchitectureTest/Nager.Date.ArchitectureTest.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net8.0</TargetFrameworks>

<IsPackable>false</IsPackable>

<AssemblyName>Nager.Date.ArchitectureTest</AssemblyName>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageReference Include="MSTest.TestAdapter" Version="3.2.2" />
<PackageReference Include="MSTest.TestFramework" Version="3.2.2" />
<PackageReference Include="TngTech.ArchUnitNET.MSTestV2" Version="0.10.6" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Nager.Date\Nager.Date.csproj" />
</ItemGroup>

</Project>
16 changes: 15 additions & 1 deletion src/Nager.Date.sln
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
.editorconfig = .editorconfig
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nager.Date.Console", "Nager.Date.Console\Nager.Date.Console.csproj", "{AD762462-D24B-4EA7-B4D6-B8057917D3DD}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Nager.Date.Console", "Nager.Date.Console\Nager.Date.Console.csproj", "{AD762462-D24B-4EA7-B4D6-B8057917D3DD}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nager.Date.ArchitectureTest", "Nager.Date.ArchitectureTest\Nager.Date.ArchitectureTest.csproj", "{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -66,6 +68,18 @@ Global
{AD762462-D24B-4EA7-B4D6-B8057917D3DD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{AD762462-D24B-4EA7-B4D6-B8057917D3DD}.Release|x86.ActiveCfg = Release|Any CPU
{AD762462-D24B-4EA7-B4D6-B8057917D3DD}.Release|x86.Build.0 = Release|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Debug|x86.ActiveCfg = Debug|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Debug|x86.Build.0 = Debug|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Release|Any CPU.Build.0 = Release|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Release|x86.ActiveCfg = Release|Any CPU
{83724CD7-3F4B-4B45-95B9-E1DA7D8DC8A9}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/AlandHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Åland HolidayProvider
/// </summary>
internal class AlandHolidayProvider : IHolidayProvider
internal sealed class AlandHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/AlbaniaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Albania HolidayProvider
/// </summary>
internal class AlbaniaHolidayProvider : IHolidayProvider
internal sealed class AlbaniaHolidayProvider : IHolidayProvider
{
private readonly IOrthodoxProvider _orthodoxProvider;
private readonly ICatholicProvider _catholicProvider;
Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/AndorraHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Andorra HolidayProvider
/// </summary>
internal class AndorraHolidayProvider : IHolidayProvider
internal sealed class AndorraHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Argentina HolidayProvider
/// </summary>
internal class ArgentinaHolidayProvider : IHolidayProvider
internal sealed class ArgentinaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Australia HolidayProvider
/// </summary>
internal class AustraliaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
internal sealed class AustraliaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/AustriaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Austria HolidayProvider
/// </summary>
internal class AustriaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
internal sealed class AustriaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BahamasHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Bahamas HolidayProvider
/// </summary>
internal class BahamasHolidayProvider : IHolidayProvider
internal sealed class BahamasHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BarbadosHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Barbados HolidayProvider
/// </summary>
internal class BarbadosHolidayProvider : IHolidayProvider
internal sealed class BarbadosHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BelarusHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Belarus HolidayProvider
/// </summary>
internal class BelarusHolidayProvider : IHolidayProvider
internal sealed class BelarusHolidayProvider : IHolidayProvider
{
private readonly IOrthodoxProvider _orthodoxProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BelgiumHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Belgium HolidayProvider
/// </summary>
internal class BelgiumHolidayProvider : IHolidayProvider
internal sealed class BelgiumHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BelizeHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Belize HolidayProvider
/// </summary>
internal class BelizeHolidayProvider : IHolidayProvider
internal sealed class BelizeHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BeninHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Benin HolidayProvider
/// </summary>
internal class BeninHolidayProvider : IHolidayProvider
internal sealed class BeninHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BoliviaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Bolivia HolidayProvider
/// </summary>
internal class BoliviaHolidayProvider : IHolidayProvider
internal sealed class BoliviaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Bosnia and Herzegovina HolidayProvider
/// </summary>
internal class BosniaAndHerzegovinaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
internal sealed class BosniaAndHerzegovinaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
{
private readonly IOrthodoxProvider _orthodoxProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BotswanaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Botswana HolidayProvider
/// </summary>
internal class BotswanaHolidayProvider : IHolidayProvider
internal sealed class BotswanaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BrazilHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Brazil HolidayProvider
/// </summary>
internal class BrazilHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
internal sealed class BrazilHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/BulgariaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Bulgaria HolidayProvider
/// </summary>
internal class BulgariaHolidayProvider : IHolidayProvider
internal sealed class BulgariaHolidayProvider : IHolidayProvider
{
private readonly IOrthodoxProvider _orthodoxProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/CanadaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Canada HolidayProvider
/// </summary>
internal class CanadaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
internal sealed class CanadaHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/ChileHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Chile HolidayProvider
/// </summary>
internal class ChileHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
internal sealed class ChileHolidayProvider : IHolidayProvider, ISubdivisionCodesProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/ChinaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// China HolidayProvider
/// </summary>
internal class ChinaHolidayProvider : IHolidayProvider
internal sealed class ChinaHolidayProvider : IHolidayProvider
{
/// <summary>
/// China HolidayProvider
Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/ColombiaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Colombia HolidayProvider
/// </summary>
internal class ColombiaHolidayProvider : IHolidayProvider
internal sealed class ColombiaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Costa Rica HolidayProvider
/// </summary>
internal class CostaRicaHolidayProvider : IHolidayProvider
internal sealed class CostaRicaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/CroatiaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Croatia HolidayProvider
/// </summary>
internal class CroatiaHolidayProvider : IHolidayProvider
internal sealed class CroatiaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/CubaHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Cuba HolidayProvider
/// </summary>
internal class CubaHolidayProvider : IHolidayProvider
internal sealed class CubaHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/CyprusHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Cyprus HolidayProvider
/// </summary>
internal class CyprusHolidayProvider : IHolidayProvider
internal sealed class CyprusHolidayProvider : IHolidayProvider
{
private readonly IOrthodoxProvider _orthodoxProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Czech Republic HolidayProvider
/// </summary>
internal class CzechRepublicHolidayProvider : IHolidayProvider
internal sealed class CzechRepublicHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/DenmarkHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Denmark HolidayProvider
/// </summary>
internal class DenmarkHolidayProvider : IHolidayProvider
internal sealed class DenmarkHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Dominican Republic HolidayProvider
/// </summary>
internal class DominicanRepublicHolidayProvider : IHolidayProvider
internal sealed class DominicanRepublicHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
2 changes: 1 addition & 1 deletion src/Nager.Date/HolidayProviders/EcuadorHolidayProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Nager.Date.HolidayProviders
/// <summary>
/// Ecuador HolidayProvider
/// </summary>
internal class EcuadorHolidayProvider : IHolidayProvider
internal sealed class EcuadorHolidayProvider : IHolidayProvider
{
private readonly ICatholicProvider _catholicProvider;

Expand Down
Loading