fix(sync): preserve loader through Strict Mode probe
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { expect, test } from 'bun:test'
|
||||
import { createStore } from 'zustand/vanilla'
|
||||
|
||||
import { SessionMessageLoader } from './session-message-loader'
|
||||
|
||||
test('loads messages after a Strict Mode cleanup and effect setup', async () => {
|
||||
const store = createStore(() => ({ message: {}, part: {} }))
|
||||
const childStores = { ensureChild: () => store, getChild: () => store }
|
||||
let messageRequests = 0
|
||||
let resolveFirstRequest: ((value: { data: []; response: { headers: { get: () => null } } }) => void) | undefined
|
||||
const sdk = { session: { messages: async () => {
|
||||
messageRequests += 1
|
||||
if (messageRequests === 1) return new Promise((resolve) => { resolveFirstRequest = resolve })
|
||||
return { data: [], response: { headers: { get: () => null } } }
|
||||
} } }
|
||||
const loader = new SessionMessageLoader(childStores as never, { sdk: sdk as never, runtimeKey: 'runtime' })
|
||||
const firstLoad = loader.ensure({ directory: '/project', sessionID: 'session-1' })
|
||||
loader.dispose(); loader.activate(); await loader.ensure({ directory: '/project', sessionID: 'session-1' })
|
||||
resolveFirstRequest?.({ data: [], response: { headers: { get: () => null } } }); await firstLoad
|
||||
expect(messageRequests).toBe(2)
|
||||
expect(loader.getSnapshot({ directory: '/project', sessionID: 'session-1' }).status).toBe('ready')
|
||||
})
|
||||
Reference in New Issue
Block a user