36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
using Duempelkas.App.Services;
|
|
using Xunit;
|
|
|
|
namespace Duempelkas.Tests;
|
|
|
|
public class BookingInputTests
|
|
{
|
|
[Theory]
|
|
[InlineData("12,50", true)]
|
|
[InlineData("12.50", true)]
|
|
[InlineData(" 12,50 ", true)]
|
|
[InlineData("12,500", false)]
|
|
[InlineData("-12,50", false)]
|
|
[InlineData("1.234,56", false)]
|
|
[InlineData("1,234.56", false)]
|
|
[InlineData("12,50 €", false)]
|
|
[InlineData("0", false)]
|
|
[InlineData("", false)]
|
|
[InlineData("9999999999999999999999999999999999999", false)]
|
|
public void DecimalInput_HasExplicitRules(string text, bool valid)
|
|
{
|
|
Assert.Equal(valid, BookingInput.TryAmount(text, out var amount));
|
|
if (valid) Assert.Equal(12.50m, amount);
|
|
}
|
|
|
|
[Fact]
|
|
public void ServiceValidation_RejectsInvalidData()
|
|
{
|
|
Assert.Throws<ArgumentException>(() => BookingInput.Validate(default, "Test", 1m));
|
|
Assert.Throws<ArgumentException>(() => BookingInput.Validate(DateTime.Today, " ", 1m));
|
|
Assert.Throws<ArgumentException>(() => BookingInput.Validate(DateTime.Today, "Test", -1m));
|
|
Assert.Throws<ArgumentException>(() => BookingInput.Validate(DateTime.Today, "Test", 1.001m));
|
|
Assert.Equal(default, BookingInput.Date("2026-02-30"));
|
|
}
|
|
}
|