This commit is contained in:
2026-09-17 18:54:53 +01:00
commit eac5fbdbf5
38 changed files with 3974 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
<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="Microsoft.NET.Test.Sdk" Version="17.14.1" />
<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\Domain\Domain.csproj" />
<ProjectReference Include="..\TestData\TestData.csproj" />
</ItemGroup>
</Project>
+46
View File
@@ -0,0 +1,46 @@
namespace Domain.Tests;
/// <summary>Unit tests for the <see cref="OrderMoney"/> value object.</summary>
public class OrderMoneyTests
{
[Fact]
public void From_keeps_the_cents()
{
Assert.Equal(150_00, OrderMoney.From(150_00).Cents);
}
[Fact]
public void Zero_is_valid()
{
Assert.Equal(0, OrderMoney.From(0).Cents);
}
[Fact]
public void Negative_cents_are_rejected()
{
Assert.Throws<ArgumentOutOfRangeException>(() => OrderMoney.From(-1));
Assert.Throws<ArgumentOutOfRangeException>(() => _ = (OrderMoney)(-1)); // conversion validates too
}
[Fact]
public void Money_compares_by_value_not_reference()
{
Assert.Equal(OrderMoney.From(150_00), OrderMoney.From(150_00));
Assert.NotEqual(OrderMoney.From(150_00), OrderMoney.From(151_00));
}
[Fact]
public void Converting_back_to_cents_is_explicit()
{
var money = OrderMoney.From(150_00);
Assert.Equal(150_00, (int)money);
Assert.Equal(150_00, money.Cents);
}
[Fact]
public void ToString_shows_the_cents()
{
Assert.Equal("15000", OrderMoney.From(150_00).ToString());
}
}