import { test } from 'node:test' import assert from 'node:assert/strict' import { applyFilePhaseDefaults, type ResultFilePhase } from '../src/shared/api/types/task.ts' function setupWindow() { ;(globalThis as Record).window = { localStorage: { getItem: () => '42' }, location: { origin: 'http://localhost' }, } } test('test_defaults_filled', () => { setupWindow() const result = applyFilePhaseDefaults({}) assert.equal(result.fileReady, false) assert.equal(result.fileStatus, 'PENDING') assert.equal(result.fileProgress, 0) assert.equal(result.fileProgressLabel, '') assert.equal(result.fileProgressStage, '') }) test('test_existing_values_kept', () => { setupWindow() const result = applyFilePhaseDefaults({ fileStatus: 'RUNNING', fileProgress: 50 }) assert.equal(result.fileStatus, 'RUNNING') assert.equal(result.fileProgress, 50) assert.equal(result.fileReady, false) }) test('test_file_ready_true_preserved', () => { setupWindow() const result = applyFilePhaseDefaults({ fileReady: true }) assert.equal(result.fileReady, true) assert.equal(result.fileStatus, 'PENDING') }) test('test_partial_input', () => { setupWindow() const result = applyFilePhaseDefaults({ fileStatus: 'FAILED', fileProgressStage: 'unzip' }) assert.equal(result.fileStatus, 'FAILED') assert.equal(result.fileProgressStage, 'unzip') assert.equal(result.fileReady, false) assert.equal(result.fileProgress, 0) assert.equal(result.fileProgressLabel, '') }) test('test_null_input_safe', () => { setupWindow() const result = applyFilePhaseDefaults(null as unknown as ResultFilePhase) assert.equal(result.fileReady, false) assert.equal(result.fileStatus, 'PENDING') assert.equal(result.fileProgress, 0) }) test('test_defaults_idempotent', () => { setupWindow() const once = applyFilePhaseDefaults({}) const twice = applyFilePhaseDefaults(once) assert.deepEqual(twice, once) assert.equal(twice.fileReady, false) }) test('test_status_success_maps_ready', () => { setupWindow() const result = applyFilePhaseDefaults({ fileStatus: 'SUCCESS' }) assert.equal(result.fileReady, true) }) test('test_unknown_status_untouched', () => { setupWindow() const result = applyFilePhaseDefaults({ fileStatus: 'WEIRD_STATE' }) assert.equal(result.fileReady, false) assert.equal(result.fileStatus, 'WEIRD_STATE') })