Files
2026-09-17 18:54:53 +01:00

47 lines
1.2 KiB
C#

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());
}
}