Datenbank- und Worker-Tests auf den Chat in der Akte nachgezogen
Die Regel „eine Nachricht gehört zu genau einem Ort" wird jetzt stärker geprüft als vorher: zwei Orte, kein Ort und genau einer. Vorher hing sie allein an der Anwendung, jetzt an einem CHECK. Der Worker-Test prüft ausdrücklich, dass die Meldung den Namen der Person nicht nennt.
This commit is contained in:
@@ -28,7 +28,7 @@ suite('Datenbankregeln', () => {
|
||||
})
|
||||
const fall = await db.case.create({
|
||||
data: {
|
||||
caseNumber: `AfiS-9999-${String(Date.now()).slice(-4)}`,
|
||||
caseNumber: `AfiS-9999-${Date.now().toString(36)}`,
|
||||
title: 'Prüffall',
|
||||
templateId: template.id,
|
||||
templateKey: template.key,
|
||||
@@ -131,27 +131,52 @@ suite('Datenbankregeln', () => {
|
||||
).rejects.toThrow()
|
||||
})
|
||||
|
||||
it('lässt eine Chatnachricht nicht zugleich an Akte und Kanal hängen', async () => {
|
||||
const kanal = await db.channel.create({
|
||||
data: { key: `${marke}-kanal`, name: 'Prüfkanal', createdById: `${marke}-nutzer` },
|
||||
it('lässt eine Chatnachricht nur an genau einem Ort hängen', async () => {
|
||||
const person = await db.personnelFile.create({
|
||||
data: { displayName: `${marke}-person`, classification: 1 },
|
||||
})
|
||||
|
||||
// Zwei Orte: geht nicht.
|
||||
await expect(
|
||||
db.chatMessage.create({
|
||||
data: {
|
||||
id: `${marke}-nachricht`,
|
||||
id: `${marke}-nachricht-zwei`,
|
||||
caseId,
|
||||
channelId: kanal.id,
|
||||
personnelFileId: person.id,
|
||||
authorId: `${marke}-nutzer`,
|
||||
body: 'gehört an zwei Stellen',
|
||||
},
|
||||
}),
|
||||
).rejects.toThrow()
|
||||
|
||||
// Gar kein Ort: geht auch nicht. Eine Nachricht ohne Akte wäre ein
|
||||
// Gespräch ohne Vorgang, und genau das soll es nicht mehr geben.
|
||||
await expect(
|
||||
db.chatMessage.create({
|
||||
data: {
|
||||
id: `${marke}-nachricht-null`,
|
||||
authorId: `${marke}-nutzer`,
|
||||
body: 'gehört nirgends hin',
|
||||
},
|
||||
}),
|
||||
).rejects.toThrow()
|
||||
|
||||
// Einer: geht.
|
||||
const gut = await db.chatMessage.create({
|
||||
data: {
|
||||
id: `${marke}-nachricht-eins`,
|
||||
personnelFileId: person.id,
|
||||
authorId: `${marke}-nutzer`,
|
||||
body: 'gehört zur Personalakte',
|
||||
},
|
||||
})
|
||||
expect(gut.personnelFileId).toBe(person.id)
|
||||
})
|
||||
|
||||
it('lässt ein Dokument nicht löschen', async () => {
|
||||
const doc = await db.document.create({
|
||||
data: {
|
||||
documentNumber: `PRF-9999-${String(Date.now()).slice(-6)}`,
|
||||
documentNumber: `PRF-9999-${Date.now().toString(36)}`,
|
||||
title: 'Prüfdokument',
|
||||
templateId: (await db.documentTemplate.findFirstOrThrow({
|
||||
where: { key: `${marke}-vorlage` },
|
||||
@@ -177,7 +202,7 @@ suite('Datenbankregeln', () => {
|
||||
await expect(
|
||||
db.document.create({
|
||||
data: {
|
||||
documentNumber: `PRF-9998-${String(Date.now()).slice(-6)}`,
|
||||
documentNumber: `PRF-9998-${Date.now().toString(36)}`,
|
||||
title: 'Zwei Besitzer',
|
||||
templateId: (await db.documentTemplate.findFirstOrThrow({
|
||||
where: { key: `${marke}-vorlage` },
|
||||
@@ -195,7 +220,7 @@ suite('Datenbankregeln', () => {
|
||||
it('lässt den Besitzer eines Dokuments nicht nachträglich wechseln', async () => {
|
||||
const doc = await db.document.create({
|
||||
data: {
|
||||
documentNumber: `PRF-9997-${String(Date.now()).slice(-6)}`,
|
||||
documentNumber: `PRF-9997-${Date.now().toString(36)}`,
|
||||
title: 'Unverrückbar',
|
||||
templateId: (await db.documentTemplate.findFirstOrThrow({
|
||||
where: { key: `${marke}-vorlage` },
|
||||
|
||||
Reference in New Issue
Block a user