Add regression tests for invoice validation and CSV parsing
This commit is contained in:
1 parent
b9104e0632
commit
b3be368594
4 files changed
+146
No files matched your search
@@ -0,0 +1,63 @@
|
||||
using System.Globalization;
|
||||
using ImportAssist.Core;
|
||||
using Xunit;
|
||||
|
||||
namespace ImportAssist.Core.Tests;
|
||||
|
||||
public sealed class InvoiceValidatorTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("de-DE")]
|
||||
[InlineData("en-US")]
|
||||
public void Validate_AcceptsDecimalPointRegardlessOfCurrentCulture(
|
||||
string cultureName)
|
||||
{
|
||||
var originalCulture = CultureInfo.CurrentCulture;
|
||||
|
||||
try
|
||||
{
|
||||
CultureInfo.CurrentCulture = new CultureInfo(cultureName);
|
||||
var row = new InvoiceRow(
|
||||
"INV-001", "C-100", "125.50", "EUR");
|
||||
|
||||
var errors = InvoiceValidator.Validate(row);
|
||||
|
||||
Assert.Empty(errors);
|
||||
}
|
||||
finally
|
||||
{
|
||||
CultureInfo.CurrentCulture = originalCulture;
|
||||
}
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("abc", "Betrag ist keine gültige Zahl.")]
|
||||
[InlineData("125,50", "Betrag ist keine gültige Zahl.")]
|
||||
[InlineData("1,250.00", "Betrag ist keine gültige Zahl.")]
|
||||
[InlineData("0", "Betrag muss größer als null sein.")]
|
||||
[InlineData("-10.00", "Betrag muss größer als null sein.")]
|
||||
public void Validate_RejectsInvalidAmount(
|
||||
string amount,
|
||||
string expectedError)
|
||||
{
|
||||
var row = new InvoiceRow(
|
||||
"INV-001", "C-100", amount, "EUR");
|
||||
|
||||
var errors = InvoiceValidator.Validate(row);
|
||||
|
||||
Assert.Equal(expectedError, Assert.Single(errors));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Validate_CollectsAllErrorsForOneInvoice()
|
||||
{
|
||||
var row = new InvoiceRow(" ", "\t", "0", "EUR");
|
||||
|
||||
var errors = InvoiceValidator.Validate(row);
|
||||
|
||||
Assert.Equal(3, errors.Count);
|
||||
Assert.Contains("Rechnungsnummer fehlt.", errors);
|
||||
Assert.Contains("Kundennummer fehlt.", errors);
|
||||
Assert.Contains("Betrag muss größer als null sein.", errors);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user