Files
codexpi/frontend/tests/conversationRequests.test.ts

23 lines
789 B
TypeScript
Raw Normal View History

2026-11-14 20:23:59 +01:00
import assert from 'node:assert/strict'
import test from 'node:test'
import {isCurrentConversationResponse,reuseInFlightRequest} from '../src/conversationRequests.ts'
test('a late response from the previously selected conversation is ignored', () => {
assert.equal(isCurrentConversationResponse('gameflix','codexpi-self'),false)
assert.equal(isCurrentConversationResponse('gameflix','gameflix'),true)
})
test('simultaneous refreshes reuse one request and release it after completion', async () => {
const requests=new Map<string,Promise<number>>()
let calls=0
const load=()=>reuseInFlightRequest(requests,'conversation',async()=>++calls)
const first=load()
const second=load()
assert.equal(first,second)
assert.equal(await first,1)
assert.equal(await load(),2)
})