[WIP] Models/Entities: Remove EF proxies
Some checks failed
Test / Run tests (push) Failing after 2m45s

This commit is contained in:
2026-04-01 16:24:03 +02:00
parent bb1dd3e4e9
commit e983ef918d
30 changed files with 428 additions and 251 deletions

View File

@@ -64,6 +64,10 @@ INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw,
(2020, 12, 1, 'BP', NULL, NULL, 2410, 18.0, 'KAB', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
(2020, 12, 2, 'BP', NULL, NULL, 2313, 18.1, 'KAB', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL);
INSERT INTO delivery_part_modifier (year, did, dpnr, modid) VALUES
(2020, 2, 1, 'S'),
(2020, 2, 2, 'A');
INSERT INTO delivery_part_bucket (year, did, dpnr, bktnr, discr, value) VALUES
(2020, 1, 1, 0, '_', 3219),
(2020, 3, 1, 0, '_', 2561),

View File

@@ -1,7 +1,4 @@
using Elwig.Documents;
using Elwig.Helpers;
using Elwig.Models.Dtos;
using Microsoft.EntityFrameworkCore;
namespace Tests.UnitTests.DocumentTests {
[TestFixture]
@@ -9,12 +6,7 @@ namespace Tests.UnitTests.DocumentTests {
[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());
using var doc = await CreditNote.Initialize(2020, 1, 101);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""

View File

@@ -11,7 +11,7 @@ namespace Tests.UnitTests.DocumentTests {
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);
using var doc = new DeliveryConfirmation(2020, m!, data);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""

View File

@@ -1,5 +1,4 @@
using Elwig.Documents;
using Elwig.Helpers;
namespace Tests.UnitTests.DocumentTests {
[TestFixture]
@@ -7,9 +6,7 @@ namespace Tests.UnitTests.DocumentTests {
[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);
using var doc = await DeliveryNote.Initialize(2020, 1);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""
@@ -19,7 +16,7 @@ namespace Tests.UnitTests.DocumentTests {
"""));
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($"Wolkersdorf, am {DateTime.Now: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("""
@@ -34,9 +31,7 @@ namespace Tests.UnitTests.DocumentTests {
[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);
using var doc = await DeliveryNote.Initialize(2020, 4);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""
@@ -47,7 +42,7 @@ namespace Tests.UnitTests.DocumentTests {
"""));
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($"Wolkersdorf, am {DateTime.Now: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("""
@@ -68,9 +63,7 @@ namespace Tests.UnitTests.DocumentTests {
[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);
using var doc = await DeliveryNote.Initialize(2020, 3);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""
@@ -80,7 +73,7 @@ namespace Tests.UnitTests.DocumentTests {
"""));
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($"Wolkersdorf, am {DateTime.Now: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("""
@@ -107,9 +100,7 @@ namespace Tests.UnitTests.DocumentTests {
[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);
using var doc = await DeliveryNote.Initialize(2020, 7);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""
@@ -119,7 +110,7 @@ namespace Tests.UnitTests.DocumentTests {
"""));
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($"Wolkersdorf, am {DateTime.Now: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("""
@@ -139,5 +130,37 @@ namespace Tests.UnitTests.DocumentTests {
Assert.That(text, Contains.Substring("Gesamt: 78 15,9 5 332"));
});
}
[Test]
public async Task Test_05_DeliveryPartsWithModifier() {
using var doc = await DeliveryNote.Initialize(2020, 2);
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 {DateTime.Now:dd.MM.yyyy}"));
Assert.That(text, Contains.Substring("Traubenübernahmeschein Nr. 20201001X002"));
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 Kabinett Kabinett 86 17,5 2 987
Herkunft: Österreich / Weinland / Niederösterreich
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
Zu-/Abschläge: Geschädigte Trauben 10,00 %
Waage: ?, ID: ? (gerebelt gewogen)
2 Grüner Veltliner Kabinett Kabinett 87 17,7 1 873
Herkunft: Österreich / Weinland / Niederösterreich
/ Matzner Hügel / Hohenruppersdorf / KG Hohenruppersdorf
Zu-/Abschläge: Keine Voranmeldung 0,1000 /kg
Waage: ?, ID: ? (gerebelt gewogen)
Gesamt: 87 17,6 4 860
"""));
});
}
}
}

View File

@@ -1,5 +1,4 @@
using Elwig.Documents;
using Elwig.Helpers;
namespace Tests.UnitTests.DocumentTests {
[TestFixture]
@@ -7,9 +6,7 @@ namespace Tests.UnitTests.DocumentTests {
[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);
using var doc = await MemberDataSheet.Initialize(104);
var text = await Utils.GeneratePdfText(doc);
Assert.Multiple(() => {
Assert.That(text, Contains.Substring("""

View File

@@ -1,6 +1,4 @@
using Elwig.Documents;
using Elwig.Helpers;
using Elwig.Models.Dtos;
namespace Tests.UnitTests.DocumentTests {
[TestFixture]
@@ -8,16 +6,13 @@ namespace Tests.UnitTests.DocumentTests {
[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);
using var doc = await PaymentVariantSummary.Initialize(2020, 1);
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[][] {
Assert.That(text, Contains.Substring(doc.Variant.Name));
Assert.That(table.Skip(19).ToArray(), Is.EqualTo(new string[][] {
["Sorte/Attr./Bewirt.", "Gradation", "ungebunden", "attributlos gebunden", "gebunden", "Gesamt" ],
["Qualitätsstufe", "[°Oe]", "[kg]", "[/kg]", "[kg]", "[/kg]", "[kg]", "[/kg]", "[]" ],
["Grüner Veltliner", "3 219", "0", "0", "1 609,50"],

View File

@@ -1,4 +1,5 @@
using Elwig.Documents;
using Elwig.Helpers;
using NReco.PdfRenderer;
using System.Text.RegularExpressions;
@@ -8,7 +9,9 @@ namespace Tests.UnitTests.DocumentTests {
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();
using (var ctx = new AppDbContext()) {
await doc.Generate(ctx);
}
try {
doc.SaveTo(FileName);
var conv = new PdfToTextConverter { CustomArgs = preserveLayout ? "-layout " : "-raw " };