Files
swyxweb/frontend/src/calls.test.ts
T

43 lines
1.8 KiB
TypeScript

import { afterEach, describe, expect, it, vi } from 'vitest'
import { callerNumber, fetchIncomingCalls, matchesCall, type StoredCall } from './calls'
const call: StoredCall = {
id: 'call-1',
receivedAt: '2026-09-20T08:30:00Z',
line: 1,
peer: 'Muster GmbH (+49 30 123-45)',
peerNumber: '+49 30 123-45',
peerName: 'Muster GmbH',
}
afterEach(() => vi.unstubAllGlobals())
describe('Anrufhistorie', () => {
it('liest archivierte Anrufe und unterscheidet Ladefehler von einer leeren Historie', async () => {
vi.stubGlobal('fetch', vi.fn()
.mockResolvedValueOnce(new Response(JSON.stringify([call])))
.mockResolvedValueOnce(new Response('[]'))
.mockResolvedValueOnce(new Response('', { status: 503 })))
await expect(fetchIncomingCalls()).resolves.toEqual([call])
await expect(fetchIncomingCalls()).resolves.toEqual([])
await expect(fetchIncomingCalls()).rejects.toThrow('HTTP 503')
})
it('findet Namen unabhängig von Großschreibung und Nummern ohne Formatierung', () => {
expect(matchesCall(call, ' MUSTER ')).toBe(true)
expect(matchesCall(call, '493012345')).toBe(true)
expect(matchesCall(call, '(30) 12345')).toBe(true)
expect(matchesCall(call, 'Andere Firma')).toBe(false)
expect(matchesCall(call, 'Firma 12345')).toBe(false)
expect(matchesCall(call, '')).toBe(true)
})
it('zeigt bei älteren Ereignissen die Nummer aus peer, aber erfindet keine unbekannte Nummer', () => {
expect(callerNumber({ ...call, peerNumber: '' })).toBe('+49 30 123-45')
expect(callerNumber({ ...call, peerNumber: null, peer: '5215' })).toBe('5215')
expect(callerNumber({ ...call, peerNumber: null, peer: 'unbekannt' })).toBeNull()
expect(callerNumber({ ...call, peerNumber: null, peer: 'Muster GmbH' })).toBeNull()
})
})