feat(seed): mitgelieferte Vorlagen am Schluessel erkennen
Der Seed erkannte seine sieben Vorlagen am Namen. Wer eine umbenannte, bekam beim naechsten Lauf eine zweite -- und der Schnellstart stand auf der Geraeteseite doppelt. Vorlage.seedSchluessel traegt die Kennung, eindeutig wo gesetzt (partieller Index, weil eigene Vorlagen keinen tragen). Das Austauschformat kennt das Feld als seedSchluessel; nicht als schluessel, wie das Issue plante, denn so heisst dort schon das Feld einer Variablen. Der Rueckfall auf den Namen bleibt, sonst bekaeme eine Installation von vor diesem Feld beim ersten Lauf danach genau die Dubletten, die es verhindern soll. Wird sie so gefunden, traegt der Seed den Schluessel nach -- an der Entwicklungsdatenbank gefahren: sieben nachgetragen, nichts neu angelegt. Der Import setzt den Schluessel nicht, auch nicht wenn das Dokument ihn mitbringt, und der Export schreibt ihn nicht: eine eingespielte Kopie soll nicht den Platz des Originals einnehmen. Gegenprobe gefahren: ohne die Suche am Schluessel werden vier Tests rot. Closes #32
This commit is contained in:
@@ -321,6 +321,27 @@ describe.runIf(datenbankVerfuegbar)("Datenmodell: Regeln in der Datenbank", () =
|
||||
});
|
||||
});
|
||||
|
||||
describe("Vorlage", () => {
|
||||
it("haelt den Seed-Schluessel eindeutig, wo er gesetzt ist", async () => {
|
||||
await testPrisma.vorlage.create({
|
||||
data: { name: "PC Neuinstallation", seedSchluessel: "pc-neuinstallation" },
|
||||
});
|
||||
await expect(
|
||||
testPrisma.vorlage.create({
|
||||
data: { name: "Anders benannt", seedSchluessel: "pc-neuinstallation" },
|
||||
}),
|
||||
).rejects.toThrow(/Vorlage_seedSchluessel_einmalig/);
|
||||
});
|
||||
|
||||
it("laesst beliebig viele Vorlagen ohne Seed-Schluessel zu", async () => {
|
||||
// Der Index ist partiell, sonst waere die zweite eigene Vorlage eine
|
||||
// Dublette von null (#021).
|
||||
await testPrisma.vorlage.create({ data: { name: "Eigene A" } });
|
||||
await testPrisma.vorlage.create({ data: { name: "Eigene B" } });
|
||||
expect(await testPrisma.vorlage.count({ where: { seedSchluessel: null } })).toBe(2);
|
||||
});
|
||||
});
|
||||
|
||||
describe("Vorlagen-Version", () => {
|
||||
it("haelt die Versionsnummer je Vorlage eindeutig", async () => {
|
||||
const vorlage = await testPrisma.vorlage.create({ data: { name: "PC Neuinstallation" } });
|
||||
|
||||
Reference in New Issue
Block a user