9b3e344796
Fixes #1171. Three currency-blind format sites: - Invoice due/overdue push notifications rendered every total as kr; the scheduler query did not even select currency. Builders now take the invoice currency ("kr" only for SEK, ISO code otherwise). - The receipt-matcher MCP widget hardcoded ' kr' although the tool handler passes each transaction's currency through. - The duplicate-booking warning in gnubok_categorize_transaction interpolated "N kr" for a transaction whose currency was already selected; the string reaches the agent, so a mislabeled currency can mislead the model, not just the user. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
23 lines
1.1 KiB
TypeScript
23 lines
1.1 KiB
TypeScript
import { describe, it, expect } from 'vitest'
|
|
import { createInvoiceOverduePayload, createInvoiceDuePayload } from '../payload-builders'
|
|
|
|
describe('invoice notification payloads', () => {
|
|
// sv-SE grouping uses a non-breaking space: build expectations via the same
|
|
// formatter instead of typing literals with a plain space.
|
|
it('labels SEK amounts with kr', () => {
|
|
const payload = createInvoiceDuePayload('1042', 'Acme AB', 12500, 'SEK', '2026-08-01', 'inv-1')
|
|
expect(payload.body).toContain(`${(12500).toLocaleString('sv-SE')} kr`)
|
|
})
|
|
|
|
it('labels non-SEK amounts with their ISO code instead of kr', () => {
|
|
const payload = createInvoiceOverduePayload('1043', 'Odin Aero GmbH', 9800, 'EUR', '2026-07-01', 'inv-2')
|
|
expect(payload.body).toContain(`${(9800).toLocaleString('sv-SE')} EUR`)
|
|
expect(payload.body).not.toContain('kr (')
|
|
})
|
|
|
|
it('falls back to kr when currency is missing on legacy rows', () => {
|
|
const payload = createInvoiceDuePayload('1044', 'Acme AB', 100, '', '2026-08-01', 'inv-3')
|
|
expect(payload.body).toContain('100 kr')
|
|
})
|
|
})
|