import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { apiEnvSchema, healthResponseSchema, moneyStringSchema } from './index';

describe('contracts', () => {
  it('validates health payload', () => {
    const parsed = healthResponseSchema.parse({
      status: 'ok',
      service: 'api',
      timestamp: new Date().toISOString(),
      version: '0.0.0',
    });
    assert.equal(parsed.status, 'ok');
  });

  it('rejects invalid money strings', () => {
    assert.throws(() => moneyStringSchema.parse('NaN'));
    assert.throws(() => moneyStringSchema.parse(''));
    assert.equal(moneyStringSchema.parse('12.50'), '12.50');
  });

  it('parses api env with defaults', () => {
    const env = apiEnvSchema.parse({
      DATABASE_URL: 'mysql://root@127.0.0.1:3306/ali_ismail_tms_dev',
      SESSION_SECRET: 'dev-secret-at-least-16',
    });
    assert.equal(env.API_PORT, 3001);
    assert.equal(env.API_PREFIX, 'api/v1');
  });
});
