Tickets: createTicketForProject und deleteTicket
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
85b972f9dc
commit
c93cb93a36
2 files changed
+113
No files matched your search
@@ -0,0 +1,68 @@
|
||||
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')))
|
||||
})
|
||||
Reference in new issue
Block a user