import { test, before, after } from 'node:test' import assert from 'node:assert/strict' import { startFakeAppwrite } from './helpers/fakeAppwrite.js' let aw let createTicketForProject let deleteTicket before(async () => { aw = await startFakeAppwrite({ seed: { workorders: [{ $id: 't1', woid: '100115' }, { $id: 't2', woid: '100120' }], customers: [{ $id: 'c1', name: 'Döner Nation', location: 'Berlin' }], }, }) Object.assign(process.env, { APPWRITE_ENDPOINT: aw.endpoint, APPWRITE_API_KEY: 'test-key', }) // config.js liest die Umgebung beim Import ;({ createTicketForProject, deleteTicket } = await import('../server/services/ticketAdmin.js')) }) after(async () => { await aw.close() }) test('createTicketForProject legt ein offenes Ticket mit Kundendaten und nächster WOID an', async () => { const r = await createTicketForProject({ customerId: 'c1', topic: 'Website – döner', type: 'Webpage', requestedBy: 'Max', startDate: '2026-10-05', details: 'Details', }) assert.equal(r.woid, '100121') const d = aw.get('workorders', r.$id) assert.equal(d.topic, 'Website – döner') assert.equal(d.type, 'Webpage') assert.equal(d.status, 'Open') assert.equal(d.priority, 1) assert.equal(d.serviceType, 'Remote') assert.equal(d.systemType, 'n/a') assert.equal(d.customerId, 'c1') assert.equal(d.customerName, 'Döner Nation') assert.equal(d.customerLocation, 'Berlin') assert.equal(d.woid, '100121') assert.equal(d.requestedBy, 'Max') assert.equal(d.startDate, '2026-10-05') assert.equal(d.details, 'Details') assert.ok(d.createdAt) }) test('createTicketForProject: unbekannter Kunde ⇒ Fehler mit status 400', async () => { const before = aw.all('workorders').length await assert.rejects( () => createTicketForProject({ customerId: 'nix', topic: 'x', type: 'Webpage' }), (err) => err.status === 400 && /Kunde/.test(err.message) ) assert.equal(aw.all('workorders').length, before) }) test('deleteTicket löscht das Ticket', async () => { await deleteTicket('t2') assert.equal(aw.get('workorders', 't2'), undefined) assert.ok(aw.calls.some((c) => c.method === 'DELETE' && c.path.endsWith('/documents/t2'))) })