„inbox“ war doppelt belegt (/api/inbox = Scanner, /api/paperless/inbox = Paperless-Posteingang) und passte nicht zur Manuell-Seite, die dieselben Routen nutzt. Umbenannt (ohne Alias, nur das eigene Frontend nutzt sie): PUT paperless/inbox/:id → PUT paperless/documents/:id GET paperless/inbox/pdf/:id → GET paperless/documents/:id/pdf GET paperless/inbox/preview/:id → GET paperless/documents/:id/preview GET paperless/inbox/:id/erechnung → GET paperless/documents/:id/erechnung Dabei: - Dokumentsuche (GET documents) wieder für den Posteingang (VIEW_INBOX) statt nur Admin – die Verknüpfungssuche im Bearbeiten-Dialog nutzt sie; die Einschränkung aus dem vorigen Commit hatte sie gebrochen. - Suche und GET documents/:id liefern nur noch id, Titel, ASN, Datum (kein OCR-Volltext, keine Statusfelder). - documents/:id/pdf auch für VIEW_SCANNER (Duplikatvergleich im Scanner). - E-Rechnungs-Vorschlag prüft wie das Speichern pro Dokument (Tag 1 bzw. Manuell-Tag); Vorschau/PDF bewusst nicht (Suchergebnisse, Duplikate). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { Permission } from '../auth/permissions.enum';
|
||
import {
|
||
POSTEINGANG_TAG_ID,
|
||
darfDokumentBearbeiten,
|
||
dokumentKurzinfo,
|
||
} from './dokument-zugriff.util';
|
||
|
||
const MANUELL = 6;
|
||
|
||
describe('darfDokumentBearbeiten', () => {
|
||
it('Posteingang-Rolle: nur Dokumente mit Posteingang-Tag', () => {
|
||
const rechte = [Permission.VIEW_INBOX];
|
||
expect(
|
||
darfDokumentBearbeiten([POSTEINGANG_TAG_ID, 9], rechte, MANUELL),
|
||
).toBe(true);
|
||
expect(darfDokumentBearbeiten([9], rechte, MANUELL)).toBe(false);
|
||
expect(darfDokumentBearbeiten([MANUELL], rechte, MANUELL)).toBe(false);
|
||
});
|
||
|
||
it('Buchhaltung: Dokumente mit Manuell-Tag', () => {
|
||
const rechte = [Permission.PROCESS_MANUALLY];
|
||
expect(darfDokumentBearbeiten([MANUELL], rechte, MANUELL)).toBe(true);
|
||
expect(darfDokumentBearbeiten([POSTEINGANG_TAG_ID], rechte, MANUELL)).toBe(
|
||
false,
|
||
);
|
||
});
|
||
|
||
it('Admins dürfen alles', () => {
|
||
expect(darfDokumentBearbeiten([], [Permission.MANAGE_ALL], MANUELL)).toBe(
|
||
true,
|
||
);
|
||
});
|
||
|
||
it('andere Rollen und fehlende Tags: nein', () => {
|
||
expect(
|
||
darfDokumentBearbeiten(
|
||
[POSTEINGANG_TAG_ID],
|
||
[Permission.VIEW_FREIGABE],
|
||
MANUELL,
|
||
),
|
||
).toBe(false);
|
||
expect(
|
||
darfDokumentBearbeiten(undefined, [Permission.VIEW_INBOX], MANUELL),
|
||
).toBe(false);
|
||
});
|
||
});
|
||
|
||
describe('dokumentKurzinfo', () => {
|
||
it('liefert nur Kennung, Titel, ASN und Datum – keinen OCR-Volltext', () => {
|
||
const doc = {
|
||
id: 5,
|
||
title: 'Rechnung',
|
||
archive_serial_number: 42,
|
||
created: '2026-01-02',
|
||
content: 'IBAN DE00 …',
|
||
owner: 3,
|
||
custom_fields: [{ field: 15, value: 'x' }],
|
||
notes: [{ note: 'intern' }],
|
||
};
|
||
expect(dokumentKurzinfo(doc)).toEqual({
|
||
id: 5,
|
||
title: 'Rechnung',
|
||
archive_serial_number: 42,
|
||
created: '2026-01-02',
|
||
});
|
||
});
|
||
});
|