From 750ae5342878de9037724092c83963c32b64b200 Mon Sep 17 00:00:00 2001 From: Lorenz Stechauner Date: Thu, 20 Jun 2024 22:40:33 +0200 Subject: [PATCH] Test: Fix flaky DocumentTests by using arrays --- Tests/DocumentTests/DeliveryJournalTest.cs | 53 +++++++++++----------- Tests/DocumentTests/DeliveryNoteTest.cs | 24 +++++----- Tests/DocumentTests/MemberListTest.cs | 11 +++-- Tests/DocumentTests/Utils.cs | 9 ++++ 4 files changed, 54 insertions(+), 43 deletions(-) diff --git a/Tests/DocumentTests/DeliveryJournalTest.cs b/Tests/DocumentTests/DeliveryJournalTest.cs index 9da5c99..3eb0a0e 100644 --- a/Tests/DocumentTests/DeliveryJournalTest.cs +++ b/Tests/DocumentTests/DeliveryJournalTest.cs @@ -12,35 +12,36 @@ namespace Tests.DocumentTests { 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(text, Contains.Substring(""" - 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 - """)); + 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"], + })); }); } } diff --git a/Tests/DocumentTests/DeliveryNoteTest.cs b/Tests/DocumentTests/DeliveryNoteTest.cs index ddc41fe..2338dcd 100644 --- a/Tests/DocumentTests/DeliveryNoteTest.cs +++ b/Tests/DocumentTests/DeliveryNoteTest.cs @@ -13,10 +13,10 @@ namespace Tests.DocumentTests { var text = await Utils.GeneratePdfText(doc); Assert.Multiple(() => { Assert.That(text, Contains.Substring(""" - MUSTERMANN Max - Winzerstraße 1 - 2223 Hohenruppersdorf - """)); + MUSTERMANN Max + Winzerstraße 1 + 2223 Hohenruppersdorf + """)); Assert.That(text, Contains.Substring("1472583")); // Betriebsnummer Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {DateTime.Now:dd.MM.yyyy}")); @@ -73,10 +73,10 @@ namespace Tests.DocumentTests { var text = await Utils.GeneratePdfText(doc); Assert.Multiple(() => { Assert.That(text, Contains.Substring(""" - MUSTERMANN Max - Winzerstraße 1 - 2223 Hohenruppersdorf - """)); + MUSTERMANN Max + Winzerstraße 1 + 2223 Hohenruppersdorf + """)); Assert.That(text, Contains.Substring("1472583")); // Betriebsnummer Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {DateTime.Now:dd.MM.yyyy}")); @@ -112,10 +112,10 @@ namespace Tests.DocumentTests { 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 - """)); + MUSTERBAUER Matthäus + Brünner Straße 10 + 2120 Wolkersdorf im Weinviertel + """)); Assert.That(text, Contains.Substring("7258369")); // Betriebsnummer Assert.That(text, Contains.Substring("pauschaliert")); Assert.That(text, Contains.Substring($"Wolkersdorf, am {DateTime.Now:dd.MM.yyyy}")); diff --git a/Tests/DocumentTests/MemberListTest.cs b/Tests/DocumentTests/MemberListTest.cs index d868860..1cfc9ef 100644 --- a/Tests/DocumentTests/MemberListTest.cs +++ b/Tests/DocumentTests/MemberListTest.cs @@ -12,14 +12,15 @@ namespace Tests.DocumentTests { 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(text, Contains.Substring(""" - 101 MUSTERMANN Max Winzerstraße 1 2223 Hohenruppersdorf 1472583 0 Hohenruppersdorf - 102 WEINBAUER Wernhardt Winzerstraße 2 2223 Hohenruppersdorf 4725836 0 Hohenruppersdorf - W&B Weinbauer GesbR Winzerstraße 2 2223 Hohenruppersdorf - """)); + Assert.That(table.Take(3), Is.EqualTo(new string[][] { + ["101 MUSTERMANN Max", "Winzerstraße 1", "2223", "Hohenruppersdorf", "1472583", "0", "Hohenruppersdorf"], + ["102 WEINBAUER Wernhardt", "Winzerstraße 2", "2223", "Hohenruppersdorf", "4725836", "0", "Hohenruppersdorf"], + ["", "W&B Weinbauer GesbR", "Winzerstraße 2", "2223", "Hohenruppersdorf"], + })); }); } } diff --git a/Tests/DocumentTests/Utils.cs b/Tests/DocumentTests/Utils.cs index 53938cb..2144522 100644 --- a/Tests/DocumentTests/Utils.cs +++ b/Tests/DocumentTests/Utils.cs @@ -1,5 +1,6 @@ using Elwig.Documents; using NReco.PdfRenderer; +using System.Text.RegularExpressions; namespace Tests.DocumentTests { public static class Utils { @@ -16,5 +17,13 @@ namespace Tests.DocumentTests { File.Delete(FileName); } } + + public static string[][] ExtractTable(string text) { + return text.Split('\n') + .Select(row => Regex.Split(row, @"\s{2,}").Select(c => c.Trim()).ToArray()) + .Where(row => row.Length > 3) + .Skip(1) + .ToArray(); + } } }