This commit is contained in:
44
Tests/UnitTests/DocumentTests/CreditNoteTest.cs
Normal file
44
Tests/UnitTests/DocumentTests/CreditNoteTest.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class CreditNoteTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_VirtualCreditNote() {
|
||||
using var ctx = new AppDbContext();
|
||||
var m = await ctx.Members.FindAsync(101);
|
||||
var p = await ctx.MemberPayments.Where(p => p.Year == 2020 && p.AvNr == 1).SingleAsync();
|
||||
var data = await CreditNoteDeliveryData.ForPaymentVariant(ctx.CreditNoteDeliveryRows, ctx.PaymentVariants, 2020, 1);
|
||||
using var doc = new CreditNote(ctx, p, data[m!.MgNr], false, false, false, false,
|
||||
ctx.GetMemberUnderDelivery(2020, m!.MgNr).GetAwaiter().GetResult());
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
MUSTERMANN Max
|
||||
Winzerstraße 1
|
||||
2223 Hohenruppersdorf
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("0123463")); // Betriebsnummer
|
||||
Assert.That(text, Contains.Substring("pauschaliert"));
|
||||
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
|
||||
Assert.That(text, Contains.Substring("Traubengutschrift Max Mustermann – Probevariante"));
|
||||
Assert.That(text, Contains.Substring("AT81 1234 5678 9012 3457"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
20201001X001 1 Grüner Veltliner 73 15,0 ungeb.: 3 219 0,5000 - - 1 609,50
|
||||
20201001X003 1 Grüner Veltliner abgew. 75 15,4 ungeb.: 2 561 - -
|
||||
20201001X003 2 Grüner Veltliner Kabinett / abgew.
|
||||
87 17,6 ungeb.: 3 129 - -
|
||||
20201001X003 3 Grüner Veltliner abgew. 79 16,1 ungeb.: 1 280 - -
|
||||
20201001X005 1 Welschriesling 84 17,0 ungeb.: 3 192 - -
|
||||
20201001X005 2 Welschriesling 84 17,1 ungeb.: 2 190 - -
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Gesamtbetrag: € 1 000,00"));
|
||||
Assert.That(text, Contains.Substring("Auszahlungsbetrag: € 1 000,00"));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
30
Tests/UnitTests/DocumentTests/DeliveryAncmtListTest.cs
Normal file
30
Tests/UnitTests/DocumentTests/DeliveryAncmtListTest.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class DeliveryAncmtListTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_AllAnnouncements2020() {
|
||||
using var ctx = new AppDbContext();
|
||||
var filter = "01.10.2020 – Matzen – GV Kabinettaktion";
|
||||
var data = await DeliveryAncmtListData.FromQuery(ctx.DeliveryAnnouncements.Where(a => a.Year == 2020 && a.DsNr == 1), [filter]);
|
||||
using var doc = new DeliveryAncmtList(filter, data);
|
||||
var text = await Utils.GeneratePdfText(doc, true);
|
||||
var table = Utils.ExtractTable(text);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("Anmeldeliste"));
|
||||
Assert.That(text, Contains.Substring("01.10.2020 – Matzen – GV Kabinettaktion"));
|
||||
Assert.That(table, Is.EqualTo(new string[][] {
|
||||
["01.10.2020", "101 MUSTERMANN Max", "Hohenruppersdorf", "Grüner Veltliner", "-", "5 000"],
|
||||
["01.10.2020", "102 WEINBAUER Wernhardt", "Hohenruppersdorf", "Grüner Veltliner", "-", "10 000"],
|
||||
["01.10.2020", "103 MUSTERBAUER Matthäus", "Wolkersdorf", "Grüner Veltliner", "-", "8 000"],
|
||||
["01.10.2020", "104 WINZER Waltraud", "Wolkersdorf", "Grüner Veltliner", "-", "2 000"],
|
||||
["Gesamt:", "Anmeldungen: 4", "25 000"],
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
44
Tests/UnitTests/DocumentTests/DeliveryConfirmationTest.cs
Normal file
44
Tests/UnitTests/DocumentTests/DeliveryConfirmationTest.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class DeliveryConfirmationTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_SimpleDeliveryConfirmation() {
|
||||
using var ctx = new AppDbContext();
|
||||
var m = await ctx.Members.FindAsync(101);
|
||||
var data = await DeliveryConfirmationDeliveryData.ForMember(ctx.DeliveryParts, 2020, m!);
|
||||
using var doc = new DeliveryConfirmation(ctx, 2020, m!, data);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
MUSTERMANN Max
|
||||
Winzerstraße 1
|
||||
2223 Hohenruppersdorf
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("0123463")); // Betriebsnummer
|
||||
Assert.That(text, Contains.Substring("pauschaliert"));
|
||||
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
|
||||
Assert.That(text, Contains.Substring("Anlieferungsbestätigung 2020"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
20201001X001 1 Grüner Veltliner Qualitätswein 73 15,0 ungeb.: 3 219 3 219 ☑
|
||||
20201001X003 2 Grüner Veltliner Kabinett Wein 87 17,6 ungeb.: 3 129 3 129 ☑
|
||||
20201001X003 3 Grüner Veltliner Wein 79 16,1 ungeb.: 1 280 1 280 ☑
|
||||
20201001X003 1 Grüner Veltliner Wein 75 15,4 ungeb.: 2 561 2 561 ☑
|
||||
20201001X005 2 Welschriesling Kabinett 84 17,1 ungeb.: 2 190 2 190 ☑
|
||||
20201001X005 1 Welschriesling Kabinett 84 17,0 ungeb.: 3 192 3 192 ☑
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Gesamt: 15 571"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
Sortenaufteilung [kg] ohne Attr./Bewirt. Kabinett Gesamt
|
||||
Grüner Veltliner 7 060 3 129 10 189
|
||||
Welschriesling 5 382 - 5 382
|
||||
12 442 3 129 15 571
|
||||
"""));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class DeliveryDepreciationListTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_DepreciatedDeliveries2020() {
|
||||
using var ctx = new AppDbContext();
|
||||
var data = await DeliveryJournalData.FromQuery(ctx.Deliveries.Where(d => d.Year == 2020).SelectMany(d => d.Parts).Where(d => d.QualId == "WEI"), ["Saison 2020"]);
|
||||
using var doc = new DeliveryDepreciationList("Saison 2020", data);
|
||||
var text = await Utils.GeneratePdfText(doc, true);
|
||||
var table = Utils.ExtractTable(text);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("Abwertungsliste"));
|
||||
Assert.That(text, Contains.Substring("Saison 2020"));
|
||||
Assert.That(table, Is.EqualTo(new string[][] {
|
||||
["101, MUSTERMANN Max", "Teil-Lfrg.:", "3", "81", "16,5", "6 970"],
|
||||
["20201001X003 1 01.10.2020 10:24", "Grüner Veltliner", "75", "15,4", "2 561"],
|
||||
["20201001X003 2 01.10.2020 10:24", "Grüner Veltliner", "Kabinett", "87", "17,6", "3 129"],
|
||||
["20201001X003 3 01.10.2020 10:24", "Grüner Veltliner", "79", "16,1", "1 280"],
|
||||
["103, MUSTERBAUER Matthäus", "Teil-Lfrg.:", "2", "79", "16,2", "6 099"],
|
||||
["20201002X001 1 02.10.2020 09:13", "Grüner Veltliner", "Bio", "80", "16,3", "3 198"],
|
||||
["20201002X002 1 02.10.2020 09:28", "Grüner Veltliner", "Bio", "78", "16,0", "2 901"],
|
||||
["Gesamt:", "(Teil-)Lieferungen: 3 (5)", "80", "16,3", "13 069"],
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
48
Tests/UnitTests/DocumentTests/DeliveryJournalTest.cs
Normal file
48
Tests/UnitTests/DocumentTests/DeliveryJournalTest.cs
Normal file
@ -0,0 +1,48 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class DeliveryJournalTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_AllDeliveries2020() {
|
||||
using var ctx = new AppDbContext();
|
||||
var data = await DeliveryJournalData.FromQuery(ctx.Deliveries.Where(d => d.Year == 2020).SelectMany(d => d.Parts), ["Saison 2020"]);
|
||||
using var doc = new DeliveryJournal("Saison 2020", data);
|
||||
var text = await Utils.GeneratePdfText(doc, true);
|
||||
var table = Utils.ExtractTable(text);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("Lieferjournal"));
|
||||
Assert.That(text, Contains.Substring("Saison 2020"));
|
||||
Assert.That(table, Is.EqualTo(new string[][] {
|
||||
["20201001X001", "1", "01.10.2020 09:03", "101 MUSTERMANN Max", "Grüner Veltliner", "73", "15,0", "3 219"],
|
||||
["20201001X002", "1", "01.10.2020 09:35", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "86", "17,5", "2 987"],
|
||||
["20201001X002", "2", "01.10.2020 09:35", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "87", "17,7", "1 873"],
|
||||
["20201001X003", "1", "01.10.2020 10:24", "101 MUSTERMANN Max", "Grüner Veltliner", "75", "15,4", "2 561"],
|
||||
["20201001X003", "2", "01.10.2020 10:24", "101 MUSTERMANN Max", "Grüner Veltliner", "87", "17,6", "3 129"],
|
||||
["20201001X003", "3", "01.10.2020 10:24", "101 MUSTERMANN Max", "Grüner Veltliner", "79", "16,1", "1 280"],
|
||||
["20201001X004", "1", "01.10.2020 11:13", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "82", "16,7", "4 002"],
|
||||
["20201001X004", "2", "01.10.2020 11:13", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "75", "15,3", "481"],
|
||||
["20201001X005", "1", "01.10.2020 12:45", "101 MUSTERMANN Max", "Welschriesling", "84", "17,0", "3 192"],
|
||||
["20201001X005", "2", "01.10.2020 12:45", "101 MUSTERMANN Max", "Welschriesling", "84", "17,1", "2 190"],
|
||||
["20201001X006", "1", "01.10.2020 13:18", "102 WEINBAUER Wernhardt", "Grüner Veltliner", "74", "15,2", "1 732"],
|
||||
["20201002X001", "1", "02.10.2020 09:13", "103 MUSTERBAUER Matthäus", "Grüner Veltliner", "80", "16,3", "3 198"],
|
||||
["20201002X001", "2", "02.10.2020 09:13", "103 MUSTERBAUER Matthäus", "Grüner Veltliner", "75", "15,4", "2 134"],
|
||||
["20201002X002", "1", "02.10.2020 09:28", "103 MUSTERBAUER Matthäus", "Grüner Veltliner", "78", "16,0", "2 901"],
|
||||
["20201002X002", "2", "02.10.2020 09:28", "103 MUSTERBAUER Matthäus", "Grüner Veltliner", "85", "17,3", "3 321"],
|
||||
["20201002X003", "1", "02.10.2020 10:11", "103 MUSTERBAUER Matthäus", "Welschriesling", "85", "17,2", "3 998"],
|
||||
["20201003X001", "1", "03.10.2020 14:13", "104 WINZER Waltraud", "Zweigelt", "73", "15,0", "1 212"],
|
||||
["20201003X001", "2", "03.10.2020 14:13", "104 WINZER Waltraud", "Zweigelt", "74", "15,2", "2 471"],
|
||||
["20201003X001", "3", "03.10.2020 14:13", "104 WINZER Waltraud", "Zweigelt", "77", "15,7", "842"],
|
||||
["20201003X002", "1", "03.10.2020 14:39", "104 WINZER Waltraud", "Zweigelt", "84", "17,0", "3 578"],
|
||||
["20201003X002", "2", "03.10.2020 14:39", "104 WINZER Waltraud", "Zweigelt", "85", "17,2", "3 862"],
|
||||
["20201003X003", "1", "03.10.2020 15:15", "104 WINZER Waltraud", "Blauer Portugieser", "89", "18,0", "2 410"],
|
||||
["20201003X003", "2", "03.10.2020 15:15", "104 WINZER Waltraud", "Blauer Portugieser", "89", "18,1", "2 313"],
|
||||
["Gesamt:", "(Teil-)Lieferungen: 12 (23)", "82", "16,6", "58 886"],
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
143
Tests/UnitTests/DocumentTests/DeliveryNoteTest.cs
Normal file
143
Tests/UnitTests/DocumentTests/DeliveryNoteTest.cs
Normal file
@ -0,0 +1,143 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class DeliveryNoteTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_OneDeliveryPart() {
|
||||
using var ctx = new AppDbContext();
|
||||
var d = await ctx.Deliveries.FindAsync(2020, 1);
|
||||
using var doc = new DeliveryNote(d!, ctx);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
MUSTERMANN Max
|
||||
Winzerstraße 1
|
||||
2223 Hohenruppersdorf
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("0123463")); // Betriebsnummer
|
||||
Assert.That(text, Contains.Substring("pauschaliert"));
|
||||
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
|
||||
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X001"));
|
||||
Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
1 Grüner Veltliner Qualitätswein 73 15,0 3 219
|
||||
Herkunft: Österreich / Weinland / Niederösterreich
|
||||
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
|
||||
Waage: 1, ID: 321 – 09:02, 01.10.2020
|
||||
Brutto: 3 219 kg – Tara: 0 kg – Netto: 3 219 kg – gerebelt gewogen
|
||||
"""));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_02_TwoDeliveryParts() {
|
||||
using var ctx = new AppDbContext();
|
||||
var d = await ctx.Deliveries.FindAsync(2020, 4);
|
||||
using var doc = new DeliveryNote(d!, ctx);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
W&B Weinbauer GesbR
|
||||
WEINBAUER Wernhardt
|
||||
Winzerstraße 2
|
||||
2223 Hohenruppersdorf
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("0123471")); // Betriebsnummer
|
||||
Assert.That(text, Contains.Substring("pauschaliert"));
|
||||
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
|
||||
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X004"));
|
||||
Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
1 Grüner Veltliner Qualitätswein 82 16,7 4 002
|
||||
Herkunft: Österreich / Weinland / Niederösterreich
|
||||
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
2 Grüner Veltliner Qualitätswein 75 15,3 481
|
||||
Herkunft: Österreich / Weinland / Niederösterreich
|
||||
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Gesamt: 81 16,5 4 483"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_03_DeliveryPartsWithAttribute() {
|
||||
using var ctx = new AppDbContext();
|
||||
var d = await ctx.Deliveries.FindAsync(2020, 3);
|
||||
using var doc = new DeliveryNote(d!, ctx);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
MUSTERMANN Max
|
||||
Winzerstraße 1
|
||||
2223 Hohenruppersdorf
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("0123463")); // Betriebsnummer
|
||||
Assert.That(text, Contains.Substring("pauschaliert"));
|
||||
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
|
||||
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X003"));
|
||||
Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
1 Grüner Veltliner Wein 75 15,4 2 561
|
||||
Herkunft: Österreich
|
||||
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
2 Grüner Veltliner Kabinett Wein 87 17,6 3 129
|
||||
Herkunft: Österreich
|
||||
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
3 Grüner Veltliner Wein 79 16,1 1 280
|
||||
Herkunft: Österreich
|
||||
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Gesamt: 81 16,5 6 970"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Test_04_DeliveryPartsWithCultivation() {
|
||||
using var ctx = new AppDbContext();
|
||||
var d = await ctx.Deliveries.FindAsync(2020, 7);
|
||||
using var doc = new DeliveryNote(d!, ctx);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
MUSTERBAUER Matthäus
|
||||
Brünner Straße 10
|
||||
2120 Wolkersdorf im Weinviertel
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("0123480")); // Betriebsnummer
|
||||
Assert.That(text, Contains.Substring("pauschaliert"));
|
||||
Assert.That(text, Contains.Substring($"Wolkersdorf, am {Elwig.Helpers.Utils.Today:dd.MM.yyyy}"));
|
||||
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201002X001"));
|
||||
Assert.That(text, Contains.Substring("Das Mitglied erklärt, dass die gelieferte Ware dem österreichischen Weingesetz entspricht"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
1 Grüner Veltliner Wein 80 16,3 3 198
|
||||
Bewirtschaftung: Bio (AT-BIO-302)
|
||||
Herkunft: Österreich
|
||||
/ Wolkersdorfer Hochleithen / Wolkersdorf im Weinviertel / KG Wolkersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
2 Grüner Veltliner Qualitätswein 75 15,4 2 134
|
||||
Bewirtschaftung: Bio (AT-BIO-302)
|
||||
Herkunft: Österreich / Weinland / Niederösterreich
|
||||
/ Wolkersdorfer Hochleithen / Wolkersdorf im Weinviertel / KG Wolkersdorf
|
||||
Waage: ?, ID: ? (gerebelt gewogen)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Gesamt: 78 15,9 5 332"));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
24
Tests/UnitTests/DocumentTests/LetterheadTest.cs
Normal file
24
Tests/UnitTests/DocumentTests/LetterheadTest.cs
Normal file
@ -0,0 +1,24 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class LetterheadTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_SimpleLetterhead() {
|
||||
using var ctx = new AppDbContext();
|
||||
var m = await ctx.Members.FindAsync(104);
|
||||
using var doc = new Letterhead(m!);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("WG Test | Genossenschaftsstraße 1 | 2120 Wolkersdorf"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
WINZER Waltraud
|
||||
Wiener Straße 15
|
||||
2120 Wolkersdorf im Weinviertel
|
||||
"""));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
41
Tests/UnitTests/DocumentTests/MemberDataSheetTest.cs
Normal file
41
Tests/UnitTests/DocumentTests/MemberDataSheetTest.cs
Normal file
@ -0,0 +1,41 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class MemberDataSheetTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_SimpleMember() {
|
||||
using var ctx = new AppDbContext();
|
||||
var m = await ctx.Members.FindAsync(104);
|
||||
using var doc = new MemberDataSheet(m!, ctx);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("""
|
||||
WINZER Waltraud
|
||||
Wiener Straße 15
|
||||
2120 Wolkersdorf im Weinviertel
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Stammdatenblatt WINZER Waltraud"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
Titel (vorangestellt) Vorname Nachname Titel (nachgestellt)
|
||||
Waltraud Winzer
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("Mitglieds-Nr.: 104"));
|
||||
Assert.That(text, Contains.Substring("Adresse: Wiener Straße 15"));
|
||||
Assert.That(text, Contains.Substring("PLZ/Ort: 2120 Wolkersdorf im Weinviertel (Wolkersdorf im Weinviertel)"));
|
||||
Assert.That(text, Contains.Substring("Adresse: Wiener Straße 15"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
Rechnungsadresse (optional)
|
||||
Name: Weinbau Waltraud Winzer GmbH
|
||||
Adresse: Hauptstraße 1
|
||||
PLZ/Ort: 2122 Riedenthal (Riedenthal)
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("IBAN: AT97 1234 5678 9012 3460"));
|
||||
Assert.That(text, Contains.Substring("Betriebs-Nr.: 0123498"));
|
||||
Assert.That(text, Contains.Substring("Stammgemeinde: Wolkersdorf"));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
27
Tests/UnitTests/DocumentTests/MemberListTest.cs
Normal file
27
Tests/UnitTests/DocumentTests/MemberListTest.cs
Normal file
@ -0,0 +1,27 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class MemberListTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_TwoMembers() {
|
||||
using var ctx = new AppDbContext();
|
||||
var data = await MemberListData.FromQuery(ctx.Members, [], []);
|
||||
using var doc = new MemberList("Alle Mitglieder", data);
|
||||
var text = await Utils.GeneratePdfText(doc, true);
|
||||
var table = Utils.ExtractTable(text);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("Mitgliederliste"));
|
||||
Assert.That(text, Contains.Substring("Alle Mitglieder"));
|
||||
Assert.That(table.Take(3), Is.EqualTo(new string[][] {
|
||||
["101 MUSTERMANN Max", "Winzerstraße 1", "2223", "Hohenruppersdorf", "0123463", "0", "Hohenruppersdorf"],
|
||||
["102 WEINBAUER Wernhardt", "Winzerstraße 2", "2223", "Hohenruppersdorf", "0123471", "0", "Hohenruppersdorf"],
|
||||
[ "W&B Weinbauer GesbR", "Winzerstraße 2", "2223", "Hohenruppersdorf"],
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
29
Tests/UnitTests/DocumentTests/PaymentVariantSummaryTest.cs
Normal file
29
Tests/UnitTests/DocumentTests/PaymentVariantSummaryTest.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class PaymentVariantSummaryTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_PaymentVariant2020() {
|
||||
using var ctx = new AppDbContext();
|
||||
var v = (await ctx.PaymentVariants.FindAsync(2020, 1))!;
|
||||
var data = await PaymentVariantSummaryData.ForPaymentVariant(v, ctx.PaymentVariantSummaryRows);
|
||||
using var doc = new PaymentVariantSummary(v, data);
|
||||
var text = await Utils.GeneratePdfText(doc, true);
|
||||
var table = Utils.ExtractTable(text);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("Auszahlungsvariante"));
|
||||
Assert.That(text, Contains.Substring(v.Name));
|
||||
Assert.That(table.Skip(17).ToArray(), Is.EqualTo(new string[][] {
|
||||
[ "Gradation", "ungebunden", "attributlos gebunden", "gebunden", "Gesamt" ],
|
||||
[ "[°Oe]", "[kg]", "[€/kg]", "[kg]", "[€/kg]", "[kg]", "[€/kg]", "[€]" ],
|
||||
["Grüner Veltliner", "3 219", "0", "0", "1 609,50"],
|
||||
["Qualitätswein", "73", "3 219", "0,5000", "-", "-", "-", "-", "1 609,50"]
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
37
Tests/UnitTests/DocumentTests/Setup.cs
Normal file
37
Tests/UnitTests/DocumentTests/Setup.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using Elwig.Helpers;
|
||||
using System.Reflection;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Elwig.Helpers.Printing;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[SetUpFixture]
|
||||
public class Setup {
|
||||
|
||||
private SqliteConnection? Connection;
|
||||
|
||||
[OneTimeSetUp]
|
||||
public async Task SetupDatabase() {
|
||||
Connection = await AppDbContext.ConnectAsync();
|
||||
await AppDbContext.ExecuteEmbeddedScript(Connection, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.DocumentInsert.sql");
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public async Task TeardownDatabase() {
|
||||
if (Connection == null) return;
|
||||
await AppDbContext.ExecuteEmbeddedScript(Connection, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.DocumentDelete.sql");
|
||||
await Connection.DisposeAsync();
|
||||
Connection = null;
|
||||
}
|
||||
|
||||
[OneTimeSetUp]
|
||||
public async Task SetupPrinting() {
|
||||
await Html.Init();
|
||||
await Pdf.Init();
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public async Task TeardownPrinting() {
|
||||
await Pdf.Cleanup();
|
||||
}
|
||||
}
|
||||
}
|
29
Tests/UnitTests/DocumentTests/Utils.cs
Normal file
29
Tests/UnitTests/DocumentTests/Utils.cs
Normal file
@ -0,0 +1,29 @@
|
||||
using Elwig.Documents;
|
||||
using NReco.PdfRenderer;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
public static class Utils {
|
||||
|
||||
private static readonly string FileName = Path.Combine(Path.GetTempPath(), "test_document.pdf");
|
||||
|
||||
public static async Task<string> GeneratePdfText(Document doc, bool preserveLayout = false) {
|
||||
await doc.Generate();
|
||||
try {
|
||||
doc.SaveTo(FileName);
|
||||
var conv = new PdfToTextConverter { CustomArgs = preserveLayout ? "-layout " : "-raw " };
|
||||
return conv.GenerateText(FileName);
|
||||
} finally {
|
||||
File.Delete(FileName);
|
||||
}
|
||||
}
|
||||
|
||||
public static string[][] ExtractTable(string text) {
|
||||
return text.Split('\n')
|
||||
.Select(row => Regex.Split(row, @"\s{2,}").Select(c => c.Trim()).Where(c => c.Length > 0).ToArray())
|
||||
.Where(row => row.Length >= 3)
|
||||
.Skip(1)
|
||||
.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
50
Tests/UnitTests/DocumentTests/WineQualityStatisticsTest.cs
Normal file
50
Tests/UnitTests/DocumentTests/WineQualityStatisticsTest.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using Elwig.Documents;
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Dtos;
|
||||
|
||||
namespace Tests.UnitTests.DocumentTests {
|
||||
[TestFixture]
|
||||
public class WineQualityStatisticsTest {
|
||||
|
||||
[Test]
|
||||
public async Task Test_01_AllDeliveries2020() {
|
||||
using var ctx = new AppDbContext();
|
||||
var data = await WineQualityStatisticsData.FromQuery(ctx.Deliveries.Where(d => d.Year == 2020).SelectMany(d => d.Parts));
|
||||
using var doc = new WineQualityStatistics("Saison 2020", data);
|
||||
var text = await Utils.GeneratePdfText(doc);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(text, Contains.Substring("Qualitätsstatistik"));
|
||||
Assert.That(text, Contains.Substring("Saison 2020"));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
Wein
|
||||
75 1 2 561
|
||||
78 1 2 901
|
||||
79 1 1 280
|
||||
80 1 3 198
|
||||
87 1 3 129
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
Qualitätswein
|
||||
73 2 4 431
|
||||
74 2 4 203
|
||||
75 2 2 615
|
||||
77 1 842
|
||||
82 1 4 002
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring("""
|
||||
Kabinett
|
||||
84 3 8 960
|
||||
85 3 11 181
|
||||
86 1 2 987
|
||||
87 1 1 873
|
||||
89 2 4 723
|
||||
"""));
|
||||
Assert.That(text, Contains.Substring(
|
||||
"80 5 " + "13 069 " +
|
||||
"- 0 0 " +
|
||||
"77 5 " + "11 568 " +
|
||||
"85 6 " + "17 561"));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user