Files
agent/apps/web_v1/scripts/workspace-refresh-gate.test.mjs

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)
})