import { describe, expect, it } from 'vitest'; import { buildSpacetimeCallArgs, encodeSpacetimeCliOption, } from './spacetime-migration-common.mjs'; describe('SpacetimeDB CLI SATS option encoding', () => { it('keeps absent options null and wraps present values as Some', () => { expect(encodeSpacetimeCliOption(null)).toBeNull(); expect(encodeSpacetimeCliOption(undefined)).toBeNull(); expect(encodeSpacetimeCliOption('job-2')).toEqual([0, 'job-2']); expect(encodeSpacetimeCliOption(123)).toEqual([0, 123]); }); it('serializes non-empty maintenance cursors in the CLI procedure input', () => { const args = buildSpacetimeCallArgs( { database: 'genarrative-prod', passthrough: [], serverUrl: 'http://127.0.0.1:3311', }, 'compact_external_generation_job_payloads_and_return', { dry_run: true, limit: 1, cursor_job_id: encodeSpacetimeCliOption('job-2'), completed_before_micros: encodeSpacetimeCliOption(123), }, ); const input = JSON.parse(args.at(-2) ?? 'null'); expect(input.cursor_job_id).toEqual([0, 'job-2']); expect(input.completed_before_micros).toEqual([0, 123]); }); });