feat: improve cleaner history pagination and report states
This commit is contained in:
60
tests/unit/execution-report-state.test.ts
Normal file
60
tests/unit/execution-report-state.test.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { getExecutionReportState } from '../../src/renderer/src/components/execution-report-state'
|
||||
|
||||
describe('execution report state helpers', () => {
|
||||
it('treats dry-run as preview regardless of counters', () => {
|
||||
const state = getExecutionReportState({
|
||||
dryRun: true,
|
||||
errors: ['should be ignored'],
|
||||
materialsFailed: 1,
|
||||
uncertainDeletions: 1
|
||||
})
|
||||
|
||||
expect(state.state).toBe('preview')
|
||||
expect(state.title).toBe('预览执行报告')
|
||||
})
|
||||
|
||||
it('treats runtime errors as failure', () => {
|
||||
const state = getExecutionReportState({
|
||||
errors: ['boom'],
|
||||
materialsFailed: 0,
|
||||
uncertainDeletions: 0
|
||||
})
|
||||
|
||||
expect(state.state).toBe('failure')
|
||||
expect(state.title).toBe('执行完成 (失败)')
|
||||
})
|
||||
|
||||
it('treats failed materials as partial success when there are no runtime errors', () => {
|
||||
const state = getExecutionReportState({
|
||||
errors: [],
|
||||
materialsFailed: 3,
|
||||
uncertainDeletions: 0
|
||||
})
|
||||
|
||||
expect(state.state).toBe('partial_success')
|
||||
expect(state.showSuccessBanner).toBe(false)
|
||||
})
|
||||
|
||||
it('treats uncertain deletions as manual review when everything else succeeded', () => {
|
||||
const state = getExecutionReportState({
|
||||
errors: [],
|
||||
materialsFailed: 0,
|
||||
uncertainDeletions: 2
|
||||
})
|
||||
|
||||
expect(state.state).toBe('manual_review')
|
||||
expect(state.showSuccessBanner).toBe(false)
|
||||
})
|
||||
|
||||
it('treats clean completion as success', () => {
|
||||
const state = getExecutionReportState({
|
||||
errors: [],
|
||||
materialsFailed: 0,
|
||||
uncertainDeletions: 0
|
||||
})
|
||||
|
||||
expect(state.state).toBe('success')
|
||||
expect(state.showSuccessBanner).toBe(true)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user