Files
crawler-plugin/frontend-vue/tests/result-file-phase.test.ts
T

75 lines
2.3 KiB
TypeScript

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<string, unknown>).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')
})