Spaces:
Runtime error
Runtime error
| import { bigintToNumberTransformer } from './message.entity'; | |
| // bigint columns read back as a string on PostgreSQL but a number on SQLite; the transformer | |
| // normalizes reads so the REST/SDK/MCP contract (always `number`) holds on both dialects. | |
| describe('bigintToNumberTransformer (message.timestamp)', () => { | |
| it('coerces a PostgreSQL bigint string read to a number', () => { | |
| // ValueTransformer.from is typed `any`, so assert inline rather than binding to an `any` local. | |
| expect(bigintToNumberTransformer.from('1700000000')).toBe(1700000000); | |
| expect(typeof bigintToNumberTransformer.from('1700000000')).toBe('number'); | |
| }); | |
| it('passes a SQLite numeric read through unchanged', () => { | |
| expect(bigintToNumberTransformer.from(1700000000)).toBe(1700000000); | |
| }); | |
| it('preserves null', () => { | |
| expect(bigintToNumberTransformer.from(null)).toBeNull(); | |
| }); | |
| it('writes values through unchanged', () => { | |
| expect(bigintToNumberTransformer.to(1700000000)).toBe(1700000000); | |
| expect(bigintToNumberTransformer.to(null)).toBeNull(); | |
| }); | |
| it('coerces a non-numeric read to null rather than leaking NaN (defensive)', () => { | |
| // A bigint column cannot actually return this; the guard keeps NaN out of the number contract. | |
| expect(bigintToNumberTransformer.from('not-a-number')).toBeNull(); | |
| }); | |
| }); | |