This commit is contained in:
@@ -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>
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user