35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import test from 'node:test'
|
|
import { createWorkspaceRefreshGate } from '../src/app/workspace-refresh-gate.ts'
|
|
|
|
test('a newer full workspace refresh aborts and invalidates the previous generation', () => {
|
|
const gate = createWorkspaceRefreshGate()
|
|
const first = gate.begin()
|
|
const second = gate.begin()
|
|
|
|
assert.equal(first.signal.aborted, true)
|
|
assert.equal(first.isCurrent(), false)
|
|
assert.equal(second.signal.aborted, false)
|
|
assert.equal(second.isCurrent(), true)
|
|
})
|
|
|
|
test('a targeted origin-project refresh also supersedes an older full refresh', () => {
|
|
const gate = createWorkspaceRefreshGate()
|
|
const fullRefresh = gate.begin()
|
|
const originRefresh = gate.begin()
|
|
|
|
assert.equal(fullRefresh.signal.aborted, true)
|
|
assert.equal(fullRefresh.isCurrent(), false)
|
|
assert.equal(originRefresh.isCurrent(), true)
|
|
})
|
|
|
|
test('invalidating on session cleanup prevents stale workspace commits', () => {
|
|
const gate = createWorkspaceRefreshGate()
|
|
const request = gate.begin()
|
|
|
|
gate.invalidate()
|
|
|
|
assert.equal(request.signal.aborted, true)
|
|
assert.equal(request.isCurrent(), false)
|
|
})
|