test(client): cover workspace ordering transports
This commit is contained in:
@@ -577,6 +577,7 @@ describe('workspaces action face', () => {
|
|||||||
expect(renamed.title).toBe('Renamed')
|
expect(renamed.title).toBe('Renamed')
|
||||||
await ws.delete('w1' as WorkspaceId)
|
await ws.delete('w1' as WorkspaceId)
|
||||||
await ws.openPath('/proj/file.ts')
|
await ws.openPath('/proj/file.ts')
|
||||||
|
await ws.insertBefore('w1' as WorkspaceId, 'w2' as WorkspaceId)
|
||||||
const moved = await ws.insertSessionBefore('w1' as WorkspaceId, 's1' as SessionId, 's2' as SessionId)
|
const moved = await ws.insertSessionBefore('w1' as WorkspaceId, 's1' as SessionId, 's2' as SessionId)
|
||||||
expect(moved.sessionIds).toEqual(['s1'])
|
expect(moved.sessionIds).toEqual(['s1'])
|
||||||
// Default archive mirrors the production effect: the id joins the list
|
// Default archive mirrors the production effect: the id joins the list
|
||||||
@@ -584,13 +585,15 @@ describe('workspaces action face', () => {
|
|||||||
await ws.archiveSession('s1' as SessionId)
|
await ws.archiveSession('s1' as SessionId)
|
||||||
expect(ws.list.getSnapshot().archivedSessionIds).toEqual(['s1'])
|
expect(ws.list.getSnapshot().archivedSessionIds).toEqual(['s1'])
|
||||||
expect(ws.calls.map(c => c.method)).toEqual(
|
expect(ws.calls.map(c => c.method)).toEqual(
|
||||||
['create', 'create', 'pickDirectory', 'rename', 'delete', 'openPath', 'insertSessionBefore', 'archiveSession'])
|
['create', 'create', 'pickDirectory', 'rename', 'delete', 'openPath', 'insertBefore', 'insertSessionBefore', 'archiveSession'])
|
||||||
|
|
||||||
ws.stub('create', () => Promise.resolve({ workspaceId: 'ws-x', title: 'X', path: '/x', sessionIds: [] } as never))
|
ws.stub('create', () => Promise.resolve({ workspaceId: 'ws-x', title: 'X', path: '/x', sessionIds: [] } as never))
|
||||||
ws.stub('pickDirectory', () => Promise.resolve('/picked'))
|
ws.stub('pickDirectory', () => Promise.resolve('/picked'))
|
||||||
ws.stub('rename', () => Promise.resolve({ workspaceId: 'w1', title: 'S', path: '/s', sessionIds: [] } as never))
|
ws.stub('rename', () => Promise.resolve({ workspaceId: 'w1', title: 'S', path: '/s', sessionIds: [] } as never))
|
||||||
ws.stub('delete', () => Promise.resolve())
|
ws.stub('delete', () => Promise.resolve())
|
||||||
ws.stub('openPath', () => Promise.resolve())
|
ws.stub('openPath', () => Promise.resolve())
|
||||||
|
const insertBefore = vi.fn(() => Promise.resolve())
|
||||||
|
ws.stub('insertBefore', insertBefore)
|
||||||
ws.stub('insertSessionBefore', () => Promise.resolve({ workspaceId: 'w1', title: '', path: '', sessionIds: [] } as never))
|
ws.stub('insertSessionBefore', () => Promise.resolve({ workspaceId: 'w1', title: '', path: '', sessionIds: [] } as never))
|
||||||
ws.stub('archiveSession', () => Promise.resolve())
|
ws.stub('archiveSession', () => Promise.resolve())
|
||||||
expect((await ws.create({ path: '/y' })).title).toBe('X')
|
expect((await ws.create({ path: '/y' })).title).toBe('X')
|
||||||
@@ -598,6 +601,8 @@ describe('workspaces action face', () => {
|
|||||||
expect((await ws.rename('w1' as WorkspaceId, 'z')).title).toBe('S')
|
expect((await ws.rename('w1' as WorkspaceId, 'z')).title).toBe('S')
|
||||||
await ws.delete('w1' as WorkspaceId)
|
await ws.delete('w1' as WorkspaceId)
|
||||||
await ws.openPath('/other')
|
await ws.openPath('/other')
|
||||||
|
await ws.insertBefore('w2' as WorkspaceId)
|
||||||
|
expect(insertBefore).toHaveBeenCalledWith('w2', undefined)
|
||||||
expect((await ws.insertSessionBefore('w1' as WorkspaceId, 's1' as SessionId)).sessionIds).toEqual([])
|
expect((await ws.insertSessionBefore('w1' as WorkspaceId, 's1' as SessionId)).sessionIds).toEqual([])
|
||||||
// The stub replaces the default set mutation: the set stays as-is.
|
// The stub replaces the default set mutation: the set stays as-is.
|
||||||
await ws.archiveSession('s2' as SessionId)
|
await ws.archiveSession('s2' as SessionId)
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ describe('unary round trip', () => {
|
|||||||
expect(response.result).toEqual({ ok: true, value: { sessionId: 's-child' } })
|
expect(response.result).toEqual({ ok: true, value: { sessionId: 's-child' } })
|
||||||
})
|
})
|
||||||
|
|
||||||
it('routes workspace rename, delete, and insertSessionBefore through the wire', async () => {
|
it('routes workspace rename, delete, and ordering through the wire', async () => {
|
||||||
const api = scriptedApi()
|
const api = scriptedApi()
|
||||||
const c = client(api)
|
const c = client(api)
|
||||||
const renamed = await c.workspace.rename({ workspaceId: 'w1' as never, title: 'next' })
|
const renamed = await c.workspace.rename({ workspaceId: 'w1' as never, title: 'next' })
|
||||||
@@ -232,6 +232,11 @@ describe('unary round trip', () => {
|
|||||||
expect(blankTitle.result).toMatchObject({ ok: false, error: { code: 'bad-request' } })
|
expect(blankTitle.result).toMatchObject({ ok: false, error: { code: 'bad-request' } })
|
||||||
const deleted = await c.workspace.delete({ workspaceId: 'w1' as never })
|
const deleted = await c.workspace.delete({ workspaceId: 'w1' as never })
|
||||||
expect(deleted.result).toEqual({ ok: true, value: { deleted: true } })
|
expect(deleted.result).toEqual({ ok: true, value: { deleted: true } })
|
||||||
|
const workspaceOrder = await c.workspace.insertBefore({
|
||||||
|
workspaceId: 'w1' as never,
|
||||||
|
beforeWorkspaceId: 'w2' as never,
|
||||||
|
})
|
||||||
|
expect(workspaceOrder.result).toEqual({ ok: true, value: { workspaceIds: ['w1'] } })
|
||||||
const anchored = await c.workspace.insertSessionBefore({ workspaceId: 'w1' as never, sessionId: sid('s1'), beforeSessionId: sid('s2') })
|
const anchored = await c.workspace.insertSessionBefore({ workspaceId: 'w1' as never, sessionId: sid('s1'), beforeSessionId: sid('s2') })
|
||||||
expect(anchored.result.ok).toBe(true)
|
expect(anchored.result.ok).toBe(true)
|
||||||
const appended = await c.workspace.insertSessionBefore({ workspaceId: 'w1' as never, sessionId: sid('s1') })
|
const appended = await c.workspace.insertSessionBefore({ workspaceId: 'w1' as never, sessionId: sid('s1') })
|
||||||
|
|||||||
Reference in New Issue
Block a user