Version 1.0.0 — Freigabe für den Echtbetrieb (#17)
This commit was merged in pull request #17.
This commit is contained in:
@@ -77,11 +77,15 @@ afterAll(async () => {
|
||||
// Protokollzeilen lassen sich nicht loeschen — die Trigger sitzen auf
|
||||
// den Tabellen. Fuer das Aufraeumen der Testdaten werden sie kurz
|
||||
// abgeschaltet; im Betrieb passiert das nie.
|
||||
await tx.$executeRawUnsafe('ALTER TABLE "druckmessung" DISABLE TRIGGER USER');
|
||||
await tx.$executeRawUnsafe('ALTER TABLE "atemschutz_ereignis" DISABLE TRIGGER USER');
|
||||
// Trigger fuer das Aufraeumen stilllegen — sitzungslokal.
|
||||
//
|
||||
// NICHT ueber `ALTER TABLE ... DISABLE TRIGGER`: das ist eine
|
||||
// Schemaänderung und gilt fuer alle. Vitest faehrt die Testdateien
|
||||
// parallel, und waehrend hier abgeraeumt wurde, pruefte anderswo
|
||||
// eine Datei, dass genau dieser Trigger greift — und sah keinen.
|
||||
// `session_replication_role` wirkt nur in dieser Transaktion.
|
||||
await tx.$executeRawUnsafe("SET LOCAL session_replication_role = 'replica'");
|
||||
await tx.organisation.deleteMany({ where: { slug: SLUG } });
|
||||
await tx.$executeRawUnsafe('ALTER TABLE "druckmessung" ENABLE TRIGGER USER');
|
||||
await tx.$executeRawUnsafe('ALTER TABLE "atemschutz_ereignis" ENABLE TRIGGER USER');
|
||||
});
|
||||
}
|
||||
await Promise.allSettled([app.$disconnect(), system.$disconnect()]);
|
||||
|
||||
@@ -81,12 +81,15 @@ afterAll(async () => {
|
||||
if (erreichbar) {
|
||||
await system.$transaction(async (tx) => {
|
||||
await tx.$executeRaw`SELECT set_config('app.audit_bereinigung', 'an', true)`;
|
||||
// Der Unveränderlichkeits-Trigger sitzt auf ki_vorgang. Für das
|
||||
// Aufräumen der Testdaten wird er kurz abgeschaltet; im Betrieb
|
||||
// passiert das nie.
|
||||
await tx.$executeRawUnsafe('ALTER TABLE "ki_vorgang" DISABLE TRIGGER USER');
|
||||
// Trigger fuer das Aufraeumen stilllegen — sitzungslokal.
|
||||
//
|
||||
// NICHT ueber `ALTER TABLE ... DISABLE TRIGGER`: das ist eine
|
||||
// Schemaänderung und gilt fuer alle. Vitest faehrt die Testdateien
|
||||
// parallel, und waehrend hier abgeraeumt wurde, pruefte anderswo
|
||||
// eine Datei, dass genau dieser Trigger greift — und sah keinen.
|
||||
// `session_replication_role` wirkt nur in dieser Transaktion.
|
||||
await tx.$executeRawUnsafe("SET LOCAL session_replication_role = 'replica'");
|
||||
await tx.organisation.deleteMany({ where: { slug: SLUG } });
|
||||
await tx.$executeRawUnsafe('ALTER TABLE "ki_vorgang" ENABLE TRIGGER USER');
|
||||
});
|
||||
}
|
||||
await Promise.allSettled([app.$disconnect(), system.$disconnect()]);
|
||||
|
||||
@@ -43,6 +43,15 @@ beforeAll(async () => {
|
||||
return;
|
||||
}
|
||||
|
||||
// Erst aufraeumen, dann anlegen.
|
||||
//
|
||||
// Aufraeumen nur am Ende reicht nicht: bricht ein Lauf ab — abgebrochene
|
||||
// Sitzung, Fehler in einer anderen Datei, geschlossenes Terminal —, bleiben
|
||||
// die Datensaetze stehen und der naechste Lauf scheitert an einer
|
||||
// Eindeutigkeit, die mit dem Geprueften nichts zu tun hat. Das kostet dann
|
||||
// zehn Minuten Fehlersuche an der falschen Stelle.
|
||||
await aufraeumen();
|
||||
|
||||
const a = await system.organisation.upsert({
|
||||
where: { slug: SLUG_A },
|
||||
update: {},
|
||||
@@ -91,14 +100,17 @@ beforeAll(async () => {
|
||||
konto = benutzer.id;
|
||||
});
|
||||
|
||||
/** Alles entfernen, was dieser Test anlegt. */
|
||||
async function aufraeumen(): Promise<void> {
|
||||
await system.$transaction(async (tx) => {
|
||||
await tx.$executeRaw`SELECT set_config('app.audit_bereinigung', 'an', true)`;
|
||||
await tx.benutzer.deleteMany({ where: { email: { endsWith: "@test-mandant.de" } } });
|
||||
await tx.organisation.deleteMany({ where: { slug: { in: [SLUG_A, SLUG_B] } } });
|
||||
});
|
||||
}
|
||||
|
||||
afterAll(async () => {
|
||||
if (erreichbar) {
|
||||
await system.$transaction(async (tx) => {
|
||||
await tx.$executeRaw`SELECT set_config('app.audit_bereinigung', 'an', true)`;
|
||||
await tx.benutzer.deleteMany({ where: { email: { endsWith: "@test-mandant.de" } } });
|
||||
await tx.organisation.deleteMany({ where: { slug: { in: [SLUG_A, SLUG_B] } } });
|
||||
});
|
||||
}
|
||||
if (erreichbar) await aufraeumen();
|
||||
await system.$disconnect();
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user