public void Formatting_WithEntryHavingSingleDebitAndCredit_IsExpected() { var entry = new AccountingEntryBuilder() .WithLine(new CreditBuilder() .WithAccountNumber(3000) .WithProductName("Credit") .WithNetSum(1000) .WithVat(24) .WithVatType(VatType.Sale) .Build()) .WithLine(new DebitBuilder() .WithAccountNumber(1700) .WithProductName("Debit") .WithNetSum(1240) .WithVat(null) .WithVatType(VatType.Undefined) .Build()) .Build(); var sut = new AccountingEntryFormatCsvBuilder().Build(); var actual = sut.Format(entry); var expected = @" Account number;Product;Sum;Dimension;Dimension item;VAT %;VAT type 1700;Debit;1240;;;; 3000;Credit;-1000;;;24;S ".TrimStart(); Assert.AreEqual(expected, actual); }
public void Creating_WithoutLines_ReturnsEmptyList() { var sut = new AccountingEntryBuilder().Build(); var actual = sut.GetLines(); CollectionAssert.IsEmpty(actual); }
public void Creating_WithoutLineSumsBeingZero_ThrowsException() { var credit = new CreditBuilder().WithNetSum(100).WithVat(24).Build(); var debit = new DebitBuilder().WithNetSum(10).WithVat(10).Build(); var sut = new AccountingEntryBuilder().WithLine(credit).WithLine(debit); Assert.IsFalse(AccountingEntry.IsValid(new AccountingEntryLine[] { credit, debit })); Assert.Throws <ArgumentException>(() => sut.Build()); }
public void Formatting_WithEntryHavingMultipleLines_IsExpected() { var entry = new AccountingEntryBuilder() .WithLine(new CreditBuilder() .WithAccountNumber(3100) .WithProductName("Product1") .WithNetSum(33) .WithVat(14) .WithVatType(VatType.Sale) .Build()) .WithLine(new CreditBuilder() .WithAccountNumber(3200) .WithProductName("Product2") .WithNetSum(89) .WithVat(10) .WithVatType(VatType.Purchase) .Build()) .WithLine(new DebitBuilder() .WithAccountNumber(1600) .WithProductName("Counter Transaction") .WithNetSum(135.52m) .WithVat(null) .WithVatType(VatType.Undefined) .Build()) .Build(); var sut = new AccountingEntryFormatCsvBuilder().Build(); var actual = sut.Format(entry); var expected = @" Account number;Product;Sum;Dimension;Dimension item;VAT %;VAT type 1600;Counter Transaction;135,52;;;; 3200;Product2;-89;;;10;P 3100;Product1;-33;;;14;S ".TrimStart(); Assert.AreEqual(expected, actual); }
public void AskingLines_WithLinesHavingDifferentVats_OrdersThemCorrectly() { var vat24 = new CreditBuilder().WithNetSum(100).WithVat(24).Build(); var vat14 = new CreditBuilder().WithNetSum(100).WithVat(14).Build(); var vat10 = new CreditBuilder().WithNetSum(100).WithVat(10).Build(); var vat0 = new CreditBuilder().WithNetSum(100).WithVat(0).Build(); var noVat = new DebitBuilder().WithNetSum(448).WithVat(null).Build(); var sut = new AccountingEntryBuilder() .WithLine(vat14) .WithLine(vat24) .WithLine(vat0) .WithLine(noVat) .WithLine(vat10) .Build(); var actual = sut.GetLines(); var expected = new List <AccountingEntryLine>() { noVat, vat0, vat10, vat14, vat24 }; CollectionAssert.AreEqual(expected, actual); }