import { describe, expect, it } from 'vitest'; import { Row } from '../../src/domain/row.js'; describe('Row', () => { it('construit avec fields opaques', () => { const r = new Row({ id: 100, tableId: 5, fields: { nom: 'Dupont', heures: 40, actif: true }, }); expect(r.id).toBe(100); expect(r.tableId).toBe(5); expect(r.fields.nom).toBe('Dupont'); expect(r.fields.heures).toBe(40); expect(r.fields.actif).toBe(true); expect(r.createdOn).toBeNull(); expect(r.updatedOn).toBeNull(); expect(r.order).toBeNull(); }); it('accepte timestamps + order', () => { const created = new Date('2026-01-01'); const updated = new Date('2026-02-02'); const r = new Row({ id: 1, tableId: 1, fields: {}, createdOn: created, updatedOn: updated, order: '1.00000000000000000000', }); expect(r.createdOn).toBe(created); expect(r.updatedOn).toBe(updated); expect(r.order).toBe('1.00000000000000000000'); }); it('preserve les valeurs nested', () => { const r = new Row({ id: 1, tableId: 1, fields: { select: { id: 1, value: 'actif', color: 'green' }, link: [{ id: 5, value: 'Pierre' }], }, }); expect(r.fields.select).toEqual({ id: 1, value: 'actif', color: 'green' }); expect(r.fields.link).toEqual([{ id: 5, value: 'Pierre' }]); }); });