Axolotl desktop CI / guardrails (push) Has been cancelled
Axolotl desktop CI / desktop (macos-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (ubuntu-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (windows-latest) (push) Has been cancelled
Axolotl desktop CI / website (push) Has been cancelled
Repository checks / typos (push) Has been cancelled
Repository checks / tombi (push) Has been cancelled
Rust checks / shear (push) Has been cancelled
Sync source to CNB / Sync Git ref (push) Has been cancelled
Sync LobeHub models / sync (push) Has been cancelled
Download hosted pack files concurrently, recover file transfers from proxy and content-encoding failures, and prevent old installation failures from reappearing in notifications.
36 lines
1.5 KiB
TypeScript
36 lines
1.5 KiB
TypeScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
|
|
import type { InstallJobSnapshot, InstallJobStatus } from './install.ts'
|
|
import { createInstallJobNotificationFilter } from './install-job-notification-visibility.ts'
|
|
|
|
function job(jobId: string, status: InstallJobStatus): InstallJobSnapshot {
|
|
return { job_id: jobId, status } as InstallJobSnapshot
|
|
}
|
|
|
|
test('does not resurrect failures that finished before the notification surface started', () => {
|
|
const oldFailure = job('old-failure', 'failed')
|
|
const filter = createInstallJobNotificationFilter([oldFailure, job('old-success', 'succeeded')])
|
|
|
|
assert.deepEqual(filter([oldFailure, job('old-success', 'succeeded')]), [])
|
|
assert.deepEqual(filter([oldFailure, job('current', 'running')]).map((item) => item.job_id), [
|
|
'current',
|
|
])
|
|
})
|
|
|
|
test('keeps an observed task visible when it finishes', () => {
|
|
const filter = createInstallJobNotificationFilter([job('old-failure', 'failed')])
|
|
|
|
assert.deepEqual(filter([job('current', 'running')]).map((item) => item.job_id), ['current'])
|
|
assert.deepEqual(filter([job('current', 'failed')]).map((item) => item.job_id), ['current'])
|
|
assert.deepEqual(filter([job('current', 'succeeded')]).map((item) => item.job_id), ['current'])
|
|
})
|
|
|
|
test('shows a newly received failure even if its active phase completed too quickly to observe', () => {
|
|
const filter = createInstallJobNotificationFilter([job('old-failure', 'failed')])
|
|
|
|
assert.deepEqual(filter([job('new-failure', 'failed')]).map((item) => item.job_id), [
|
|
'new-failure',
|
|
])
|
|
})
|