[#11] Tests: Add MemberServiceTest
This commit is contained in:
@ -70,7 +70,7 @@ INSERT INTO member (mgnr, given_name, name, zwstid, volllieferant, buchführend,
|
||||
(101, 'Max', 'Mustermann', 'X', FALSE, FALSE, 40, 222303524, 'Winzerstraße 1', 06109, 'AT811234567890123457', '0123463', NULL ),
|
||||
(102, 'Wernhardt', 'Weinbauer', 'X', FALSE, FALSE, 40, 222303524, 'Winzerstraße 2', 06109, 'AT541234567890123458', '0123471', 'ATU12345684'),
|
||||
(103, 'Matthäus', 'Musterbauer', 'X', FALSE, FALSE, 40, 212005138, 'Brünner Straße 10', 15224, 'AT271234567890123459', '0123480', NULL ),
|
||||
(104, 'Waltraud', 'Winzer', 'X', FALSE, FALSE, 40, 212005138, 'Wiener Straße 15', 15224, 'AT971234567890123460', '0123498', 'ATU12345693');
|
||||
(104, 'Waltraud', 'Winzer', 'X', FALSE, TRUE , 40, 212005138, 'Wiener Straße 15', 15224, 'AT971234567890123460', '0123498', 'ATU12345693');
|
||||
|
||||
INSERT INTO member_billing_address (mgnr, name, country, postal_dest, address) VALUES
|
||||
(102, 'W&B Weinbauer GesbR', 40, 222303524, 'Winzerstraße 2'),
|
||||
|
9
Tests/Resources/Sql/ServiceDelete.sql
Normal file
9
Tests/Resources/Sql/ServiceDelete.sql
Normal file
@ -0,0 +1,9 @@
|
||||
-- deletes for ServiceTests
|
||||
|
||||
DELETE FROM credit;
|
||||
DELETE FROM payment_variant;
|
||||
DELETE FROM delivery;
|
||||
DELETE FROM season;
|
||||
DELETE FROM area_commitment;
|
||||
DELETE FROM area_commitment_type;
|
||||
DELETE FROM member WHERE mgnr >= 200;
|
56
Tests/Resources/Sql/ServiceInsert.sql
Normal file
56
Tests/Resources/Sql/ServiceInsert.sql
Normal file
@ -0,0 +1,56 @@
|
||||
-- inserts for ServiceTests
|
||||
|
||||
INSERT INTO member (mgnr, given_name, name, zwstid, volllieferant, buchführend, country, postal_dest, address, default_kgnr, iban, lfbis_nr, ustid_nr) VALUES
|
||||
(201, 'Theodor', 'Testbauer', 'X', FALSE, FALSE, 40, 222303524, 'Teststraße 1', 06109, 'AT811234567890123457', '0123463', NULL ),
|
||||
(202, 'Thomas', 'Testmann', 'X', FALSE, FALSE, 40, 222303524, 'Teststraße 2', 06109, 'AT541234567890123458', '0123471', 'ATU12345684'),
|
||||
(203, 'Tina', 'Testwinzer', 'X', FALSE, FALSE, 40, 212005138, 'Teststraße 3', 15224, 'AT271234567890123459', '0123480', NULL ),
|
||||
(204, 'Trude', 'Testerin', 'X', FALSE, TRUE , 40, 212005138, 'Teststraße 4', 15224, 'AT971234567890123460', '0123498', 'ATU12345693');
|
||||
|
||||
INSERT INTO member_billing_address (mgnr, name, country, postal_dest, address) VALUES
|
||||
(202, 'T&T Testmann GesbR', 40, 222303524, 'Teststraße 11'),
|
||||
(203, 'Testwinzer GesbR', 40, 212005138, 'Teststraße 3' ),
|
||||
(204, 'Trauben Trude GmbH', 40, 212205137, 'Teststraße 12');
|
||||
|
||||
INSERT INTO member_telephone_number (mgnr, nr, type, number, comment) VALUES
|
||||
(203, 1, 'mobile', '+43 664 987654321', NULL),
|
||||
(204, 1, 'mobile', '+43 664 123456789', NULL);
|
||||
|
||||
INSERT INTO member_email_address (mgnr, nr, address, comment) VALUES
|
||||
(203, 1, 'tina@winzer.com', NULL),
|
||||
(204, 1, 'trude@trauben.at', NULL);
|
||||
|
||||
INSERT INTO area_commitment_type (vtrgid, sortid, attrid, disc, min_kg_per_ha, penalty_per_kg, penalty_amount, penalty_none) VALUES
|
||||
('GV', 'GV', NULL, NULL, 5000, 500, NULL, NULL);
|
||||
|
||||
INSERT INTO area_commitment (fbnr, mgnr, vtrgid, cultid, area, kgnr, gstnr, rdnr, year_from, year_to) VALUES
|
||||
( 1, 203, 'GV', NULL, 10000, 15224, '321/9', NULL, NULL, NULL),
|
||||
( 2, 204, 'GV', NULL, 10000, 15224, '123/1', NULL, 2000, 2019),
|
||||
( 3, 204, 'GV', NULL, 10000, 15224, '123/2', NULL, 2025, 2030),
|
||||
( 4, 204, 'GV', NULL, 10000, 15224, '123/3', NULL, 2021, 2031);
|
||||
|
||||
|
||||
INSERT INTO season (year, currency, min_kg_per_bs, max_kg_per_bs, penalty_per_kg, penalty_amount, penalty_none, start_date, end_date) VALUES
|
||||
(2021, 'EUR', 2000, 4000, NULL, NULL, NULL, NULL, NULL);
|
||||
|
||||
INSERT INTO modifier (year, modid, ordering, name, abs, rel, active) VALUES
|
||||
(2021, 'S', 0, 'Geschädigte Trauben', NULL, -0.1, TRUE);
|
||||
|
||||
INSERT INTO delivery (mgnr, year, did, date, time, zwstid, lnr) VALUES
|
||||
(203, 2021, 1, '2021-10-01', NULL, 'X', 1),
|
||||
(204, 2021, 2, '2021-10-01', NULL, 'X', 2);
|
||||
INSERT INTO delivery_part (year, did, dpnr, sortid, attrid, cultid, weight, kmw, qualid, hkid, kgnr, net_weight, manual_weighing, spl_check, scale_id, weighing_data, weighing_reason) VALUES
|
||||
(2021, 1, 1, 'GV', NULL, NULL, 3500, 15, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
|
||||
(2021, 2, 1, 'GV', NULL, NULL, 4000, 17, 'KAB', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL),
|
||||
(2021, 2, 2, 'GV', NULL, NULL, 4000, 16, 'QUW', 'WLNO', 15224, TRUE, FALSE, FALSE, NULL, NULL, NULL);
|
||||
INSERT INTO delivery_part_modifier (year, did, dpnr, modid) VALUES
|
||||
(2021, 1, 1, 'S'),
|
||||
(2021, 2, 2, 'S');
|
||||
|
||||
INSERT INTO payment_variant (year, avnr, name, date, transfer_date, test_variant, calc_time, comment, data) VALUES
|
||||
(2021, 1, 'Probevariante', '2022-01-15', '2022-01-15', TRUE, NULL, NULL, '{"mode":"elwig","version":1,"payment":0.5,"curves":[]}');
|
||||
INSERT INTO payment_member (year, avnr, mgnr, net_amount) VALUES
|
||||
(2021, 1, 203, 10000000),
|
||||
(2021, 1, 204, 10000000);
|
||||
INSERT INTO credit (year, tgnr, mgnr, avnr, net_amount, prev_net_amount, vat, modifiers, prev_modifiers) VALUES
|
||||
(2021, 1, 203, 1, 10000000, 0, 0.1, 0, 0),
|
||||
(2021, 2, 204, 1, 10000000, 0, 0.1, 0, 0);
|
353
Tests/ServiceTests/MemberServiceTest.cs
Normal file
353
Tests/ServiceTests/MemberServiceTest.cs
Normal file
@ -0,0 +1,353 @@
|
||||
using Elwig.Helpers;
|
||||
using Elwig.Models.Entities;
|
||||
using Elwig.Services;
|
||||
using Elwig.ViewModels;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Tests.ServiceTests {
|
||||
[TestFixture]
|
||||
public class MemberServiceTest {
|
||||
|
||||
private static async Task InitViewModel(MemberAdminViewModel vm) {
|
||||
using var ctx = new AppDbContext();
|
||||
vm.BranchSource = await ctx.Branches.ToListAsync();
|
||||
vm.DefaultKgSource = await ctx.Katastralgemeinden.ToListAsync();
|
||||
vm.OrtSource = await ctx.PlzDestinations.Include(p => p.Ort).ToListAsync();
|
||||
vm.BillingOrtSource = await ctx.PlzDestinations.Include(p => p.Ort).ToListAsync();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestCreate_01_Minimal() {
|
||||
var vm = new MemberAdminViewModel();
|
||||
await InitViewModel(vm);
|
||||
await vm.InitInputs();
|
||||
vm.Name = "Neuling";
|
||||
vm.GivenName = "Nadine";
|
||||
vm.Address = "Neubaugasse 1";
|
||||
vm.Plz = 2120;
|
||||
vm.Ort = vm.OrtSource.First(d => d.Ort.Name == "Wolkersdorf im Weinviertel");
|
||||
vm.BusinessShares = 1;
|
||||
vm.DefaultKg = vm.DefaultKgSource.First(k => k.Name == "Wolkersdorf");
|
||||
|
||||
Assert.That(vm.MgNr, Is.EqualTo(205));
|
||||
using (var ctx = new AppDbContext()) {
|
||||
Assert.That(await ctx.Members.FindAsync(205), Is.Null);
|
||||
}
|
||||
|
||||
Assert.DoesNotThrowAsync(async () => await vm.UpdateMember(null));
|
||||
|
||||
Member? m;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
m = await ctx.Members
|
||||
.Where(m => m.MgNr == vm.MgNr)
|
||||
.Include(m => m.BillingAddress!.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.Include(m => m.EmailAddresses)
|
||||
.Include(m => m.TelephoneNumbers)
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
Assert.That(m, Is.Not.Null);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(m.MgNr, Is.EqualTo(205));
|
||||
Assert.That(m.Name, Is.EqualTo("Neuling"));
|
||||
Assert.That(m.GivenName, Is.EqualTo("Nadine"));
|
||||
Assert.That(m.Address, Is.EqualTo("Neubaugasse 1"));
|
||||
Assert.That(m.PostalDest.AtPlz?.Plz, Is.EqualTo(2120));
|
||||
Assert.That(m.PostalDest.AtPlz?.Ort.Name, Is.EqualTo("Wolkersdorf im Weinviertel"));
|
||||
Assert.That(m.BusinessShares, Is.EqualTo(1));
|
||||
Assert.That(m.DefaultKg?.Name, Is.EqualTo("Wolkersdorf"));
|
||||
});
|
||||
|
||||
Assert.DoesNotThrow(() => vm.FillInputs(m));
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(vm.MgNr, Is.EqualTo(205));
|
||||
Assert.That(vm.Name, Is.EqualTo("Neuling"));
|
||||
Assert.That(vm.GivenName, Is.EqualTo("Nadine"));
|
||||
Assert.That(vm.Address, Is.EqualTo("Neubaugasse 1"));
|
||||
Assert.That(vm.Plz, Is.EqualTo(2120));
|
||||
Assert.That(vm.Ort?.Ort.Name, Is.EqualTo("Wolkersdorf im Weinviertel"));
|
||||
Assert.That(vm.BusinessShares, Is.EqualTo(1));
|
||||
Assert.That(vm.DefaultKg?.Name, Is.EqualTo("Wolkersdorf"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestCreate_02_Full() {
|
||||
var vm = new MemberAdminViewModel();
|
||||
await InitViewModel(vm);
|
||||
await vm.InitInputs();
|
||||
|
||||
vm.MgNr = 999;
|
||||
vm.IsJuridicalPerson = true;
|
||||
vm.Name = "Neue GmbH";
|
||||
vm.ForTheAttentionOf = "Norbert Neuling";
|
||||
vm.Address = "Neuegasse 2";
|
||||
vm.Plz = 2120;
|
||||
vm.Ort = vm.OrtSource.First(d => d.Ort.Name == "Wolkersdorf im Weinviertel");
|
||||
|
||||
vm.EmailAddresses[0] = "neue.gmbh@mail.com";
|
||||
vm.EmailAddresses[1] = "norbert.neuling@mail.com";
|
||||
vm.PhoneNrs[0] = new(0, "+43 2245 9876", "Büro");
|
||||
vm.PhoneNrs[1] = new(1, "+43 664 123456789", "Hr. Neuling");
|
||||
vm.PhoneNrs[2] = new(2, "+43 2245 9876-2", null);
|
||||
|
||||
vm.Iban = "AT97 1234 5678 9012 3460";
|
||||
vm.Bic = "RLNWATWWWDF";
|
||||
|
||||
vm.UstIdNr = "ATU12345693";
|
||||
vm.LfbisNr = "0123498";
|
||||
vm.IsBuchführend = true;
|
||||
vm.IsOrganic = true;
|
||||
|
||||
vm.BillingName = "Neue Holding AG";
|
||||
vm.BillingAddress = "Neuegasse 3";
|
||||
vm.BillingPlz = 2120;
|
||||
vm.BillingOrt = vm.BillingOrtSource.First(d => d.Ort.Name == "Wolkersdorf im Weinviertel");
|
||||
|
||||
vm.BusinessShares = 10;
|
||||
vm.AccountingNr = "330999";
|
||||
vm.DefaultKg = vm.DefaultKgSource.First(k => k.Name == "Wolkersdorf");
|
||||
vm.Comment = "Ich bin eine Anmerkung";
|
||||
vm.ContactViaPost = true;
|
||||
vm.ContactViaEmail = true;
|
||||
vm.IsVollLieferant = true;
|
||||
vm.IsFunktionär = true;
|
||||
|
||||
using (var ctx = new AppDbContext()) {
|
||||
Assert.That(await ctx.Members.FindAsync(999), Is.Null);
|
||||
}
|
||||
|
||||
Assert.DoesNotThrowAsync(async () => await vm.UpdateMember(null));
|
||||
|
||||
Member? m;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
m = await ctx.Members
|
||||
.Where(m => m.MgNr == vm.MgNr)
|
||||
.Include(m => m.BillingAddress!.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.Include(m => m.EmailAddresses)
|
||||
.Include(m => m.TelephoneNumbers)
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
Assert.That(m, Is.Not.Null);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(m.MgNr, Is.EqualTo(999));
|
||||
Assert.That(m.IsJuridicalPerson, Is.True);
|
||||
Assert.That(m.Name, Is.EqualTo("Neue GmbH"));
|
||||
Assert.That(m.ForTheAttentionOf, Is.EqualTo("Norbert Neuling"));
|
||||
Assert.That(m.Address, Is.EqualTo("Neuegasse 2"));
|
||||
Assert.That(m.PostalDest.AtPlz?.Plz, Is.EqualTo(2120));
|
||||
Assert.That(m.PostalDest.AtPlz?.Ort.Name, Is.EqualTo("Wolkersdorf im Weinviertel"));
|
||||
|
||||
Assert.That(m.EmailAddresses.Select(a => (a.Nr, a.Address)), Is.EquivalentTo(new (int, string)[] {
|
||||
(1, "neue.gmbh@mail.com"),
|
||||
(2, "norbert.neuling@mail.com"),
|
||||
}));
|
||||
Assert.That(m.TelephoneNumbers.Select(n => (n.Nr, n.Type, n.Number, n.Comment)), Is.EquivalentTo(new (int, string, string, string?)[] {
|
||||
(1, "landline", "+43 2245 9876", "Büro"),
|
||||
(2, "mobile", "+43 664 123456789", "Hr. Neuling"),
|
||||
(3, "fax", "+43 2245 9876-2", null),
|
||||
}));
|
||||
|
||||
Assert.That(m.Iban, Is.EqualTo("AT971234567890123460"));
|
||||
Assert.That(m.Bic, Is.EqualTo("RLNWATWWWDF"));
|
||||
|
||||
Assert.That(m.UstIdNr, Is.EqualTo("ATU12345693"));
|
||||
Assert.That(m.LfbisNr, Is.EqualTo("0123498"));
|
||||
Assert.That(m.IsBuchführend, Is.True);
|
||||
Assert.That(m.IsOrganic, Is.True);
|
||||
|
||||
Assert.That(m.BillingAddress, Is.Not.Null);
|
||||
Assert.That(m.BillingAddress?.FullName, Is.EqualTo("Neue Holding AG"));
|
||||
Assert.That(m.BillingAddress?.Address, Is.EqualTo("Neuegasse 3"));
|
||||
Assert.That(m.BillingAddress?.PostalDest.AtPlz?.Plz, Is.EqualTo(2120));
|
||||
Assert.That(m.BillingAddress?.PostalDest.AtPlz?.Ort.Name, Is.EqualTo("Wolkersdorf im Weinviertel"));
|
||||
|
||||
Assert.That(m.BusinessShares, Is.EqualTo(10));
|
||||
Assert.That(m.AccountingNr, Is.EqualTo("330999"));
|
||||
Assert.That(m.DefaultKg?.Name, Is.EqualTo("Wolkersdorf"));
|
||||
Assert.That(m.Comment, Is.EqualTo("Ich bin eine Anmerkung"));
|
||||
Assert.That(m.ContactViaPost, Is.True);
|
||||
Assert.That(m.ContactViaEmail, Is.True);
|
||||
Assert.That(m.IsVollLieferant, Is.True);
|
||||
Assert.That(m.IsFunktionär, Is.True);
|
||||
});
|
||||
|
||||
Assert.DoesNotThrow(() => vm.FillInputs(m));
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(vm.MgNr, Is.EqualTo(999));
|
||||
Assert.That(vm.IsJuridicalPerson, Is.True);
|
||||
Assert.That(vm.Name, Is.EqualTo("Neue GmbH"));
|
||||
Assert.That(vm.ForTheAttentionOf, Is.EqualTo("Norbert Neuling"));
|
||||
Assert.That(vm.Address, Is.EqualTo("Neuegasse 2"));
|
||||
Assert.That(vm.Plz, Is.EqualTo(2120));
|
||||
Assert.That(vm.Ort?.Ort.Name, Is.EqualTo("Wolkersdorf im Weinviertel"));
|
||||
|
||||
Assert.That(vm.EmailAddresses, Is.EquivalentTo(new string?[] {
|
||||
"neue.gmbh@mail.com",
|
||||
"norbert.neuling@mail.com",
|
||||
null, null, null, null, null, null, null
|
||||
}));
|
||||
Assert.That(vm.PhoneNrs, Is.EquivalentTo(new MemberAdminViewModel.PhoneNr?[] {
|
||||
new(0, "+43 2245 9876", "Büro"),
|
||||
new(1, "+43 664 123456789", "Hr. Neuling"),
|
||||
new(2, "+43 2245 9876-2", null),
|
||||
new(), new(), new(), new(), new(), new()
|
||||
}));
|
||||
|
||||
Assert.That(vm.Iban, Is.EqualTo("AT971234567890123460"));
|
||||
Assert.That(vm.Bic, Is.EqualTo("RLNWATWWWDF"));
|
||||
|
||||
Assert.That(vm.UstIdNr, Is.EqualTo("ATU12345693"));
|
||||
Assert.That(vm.LfbisNr, Is.EqualTo("0123498"));
|
||||
Assert.That(vm.IsBuchführend, Is.True);
|
||||
Assert.That(vm.IsOrganic, Is.True);
|
||||
|
||||
Assert.That(vm.BillingName, Is.EqualTo("Neue Holding AG"));
|
||||
Assert.That(vm.BillingAddress, Is.EqualTo("Neuegasse 3"));
|
||||
Assert.That(vm.BillingPlz, Is.EqualTo(2120));
|
||||
Assert.That(vm.BillingOrt?.Ort.Name, Is.EqualTo("Wolkersdorf im Weinviertel"));
|
||||
|
||||
Assert.That(vm.BusinessShares, Is.EqualTo(10));
|
||||
Assert.That(vm.AccountingNr, Is.EqualTo("330999"));
|
||||
Assert.That(vm.DefaultKg?.Name, Is.EqualTo("Wolkersdorf"));
|
||||
Assert.That(vm.Comment, Is.EqualTo("Ich bin eine Anmerkung"));
|
||||
Assert.That(vm.ContactViaPost, Is.True);
|
||||
Assert.That(vm.ContactViaEmail, Is.True);
|
||||
Assert.That(vm.IsVollLieferant, Is.True);
|
||||
Assert.That(vm.IsFunktionär, Is.True);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestUpdate_01_Inactive() {
|
||||
var vm = new MemberAdminViewModel();
|
||||
await InitViewModel(vm);
|
||||
using (var ctx = new AppDbContext()) {
|
||||
vm.FillInputs(await ctx.Members
|
||||
.Where(m => m.MgNr == 202)
|
||||
.Include(m => m.BillingAddress!.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.Include(m => m.EmailAddresses)
|
||||
.Include(m => m.TelephoneNumbers)
|
||||
.AsSplitQuery()
|
||||
.FirstAsync());
|
||||
}
|
||||
|
||||
Assert.That(vm.IsActive, Is.True);
|
||||
|
||||
var exitDate = DateTime.Now;
|
||||
vm.IsActive = false;
|
||||
vm.ExitDate = $"{exitDate:dd.MM.yyyy}";
|
||||
|
||||
Assert.DoesNotThrowAsync(async () => await vm.UpdateMember(202));
|
||||
|
||||
Member? m;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
m = await ctx.Members
|
||||
.Where(m => m.MgNr == 202)
|
||||
.Include(m => m.BillingAddress!.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.Include(m => m.EmailAddresses)
|
||||
.Include(m => m.TelephoneNumbers)
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
Assert.That(m, Is.Not.Null);
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(m.IsActive, Is.False);
|
||||
Assert.That(m.ExitDateString, Is.EqualTo($"{exitDate:yyyy-MM-dd}"));
|
||||
});
|
||||
|
||||
Assert.DoesNotThrow(() => vm.FillInputs(m));
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(vm.IsActive, Is.False);
|
||||
Assert.That(vm.ExitDate, Is.EqualTo($"{exitDate:dd.MM.yyyy}"));
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestUpdate_02_MgNr() {
|
||||
var vm = new MemberAdminViewModel();
|
||||
await InitViewModel(vm);
|
||||
using (var ctx = new AppDbContext()) {
|
||||
vm.FillInputs(await ctx.Members
|
||||
.Where(m => m.MgNr == 203)
|
||||
.Include(m => m.BillingAddress!.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.Include(m => m.EmailAddresses)
|
||||
.Include(m => m.TelephoneNumbers)
|
||||
.AsSplitQuery()
|
||||
.FirstAsync());
|
||||
}
|
||||
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(vm.MgNr, Is.EqualTo(203));
|
||||
Assert.That(vm.EmailAddresses[0], Is.Not.Null);
|
||||
Assert.That(vm.PhoneNrs[0], Is.Not.Null);
|
||||
Assert.That(vm.BillingName, Is.Not.Null);
|
||||
});
|
||||
vm.MgNr = 210;
|
||||
Assert.DoesNotThrowAsync(async () => await vm.UpdateMember(203));
|
||||
|
||||
Member? m;
|
||||
using (var ctx = new AppDbContext()) {
|
||||
m = await ctx.Members
|
||||
.Where(m => m.MgNr == 210)
|
||||
.Include(m => m.BillingAddress!.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.PostalDest.AtPlz!.Ort)
|
||||
.Include(m => m.DefaultWbKg!.AtKg)
|
||||
.Include(m => m.EmailAddresses)
|
||||
.Include(m => m.TelephoneNumbers)
|
||||
.AsSplitQuery()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
Assert.That(m, Is.Not.Null);
|
||||
Assert.DoesNotThrow(() => vm.FillInputs(m));
|
||||
Assert.Multiple(() => {
|
||||
Assert.That(vm.MgNr, Is.EqualTo(210));
|
||||
Assert.That(vm.EmailAddresses[0], Is.Not.Null);
|
||||
Assert.That(vm.PhoneNrs[0], Is.Not.Null);
|
||||
Assert.That(vm.BillingName, Is.Not.Null);
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestDelete_01_NoReferences() {
|
||||
using (var ctx = new AppDbContext()) {
|
||||
Assert.That(await ctx.Members.FindAsync(201), Is.Not.Null);
|
||||
}
|
||||
Assert.DoesNotThrowAsync(async () => await MemberService.DeleteMember(201, false, false, false));
|
||||
using (var ctx = new AppDbContext()) {
|
||||
Assert.That(await ctx.Members.FindAsync(201), Is.Null);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task TestDelete_02_AllReferences() {
|
||||
using (var ctx = new AppDbContext()) {
|
||||
Assert.That(await ctx.Members.FindAsync(204), Is.Not.Null);
|
||||
}
|
||||
for (int i = 0; i < 7; i++) {
|
||||
Assert.ThrowsAsync<DbUpdateException>(async () => await MemberService.DeleteMember(204, (i & 1) != 0, (i & 2) != 0, (i & 4) != 0));
|
||||
using var ctx = new AppDbContext();
|
||||
Assert.That(await ctx.Members.FindAsync(204), Is.Not.Null);
|
||||
}
|
||||
Assert.DoesNotThrowAsync(async () => await MemberService.DeleteMember(204, true, true, true));
|
||||
using (var ctx = new AppDbContext()) {
|
||||
Assert.That(await ctx.Members.FindAsync(204), Is.Null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
25
Tests/ServiceTests/Setup.cs
Normal file
25
Tests/ServiceTests/Setup.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using Elwig.Helpers;
|
||||
using System.Reflection;
|
||||
using Microsoft.Data.Sqlite;
|
||||
|
||||
namespace Tests.ServiceTests {
|
||||
[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.ServiceInsert.sql");
|
||||
}
|
||||
|
||||
[OneTimeTearDown]
|
||||
public async Task TeardownDatabase() {
|
||||
if (Connection == null) return;
|
||||
await AppDbContext.ExecuteEmbeddedScript(Connection, Assembly.GetExecutingAssembly(), "Tests.Resources.Sql.ServiceDelete.sql");
|
||||
await Connection.DisposeAsync();
|
||||
Connection = null;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user