feat: workspace source-of-truth hard cut
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, test } from 'vitest'
|
||||
import {
|
||||
SessionInboundMessageSchema,
|
||||
SessionOutboundMessageSchema,
|
||||
} from './messages.js'
|
||||
|
||||
describe('workspace message schemas', () => {
|
||||
test('parses fetch_workspaces_request', () => {
|
||||
const parsed = SessionInboundMessageSchema.parse({
|
||||
type: 'fetch_workspaces_request',
|
||||
requestId: 'req-1',
|
||||
filter: {
|
||||
query: 'repo',
|
||||
projectId: 'remote:github.com/acme/repo',
|
||||
idPrefix: '/Users/me',
|
||||
},
|
||||
sort: [{ key: 'activity_at', direction: 'desc' }],
|
||||
page: { limit: 50 },
|
||||
subscribe: {},
|
||||
})
|
||||
|
||||
expect(parsed.type).toBe('fetch_workspaces_request')
|
||||
})
|
||||
|
||||
test('rejects invalid workspace update payload', () => {
|
||||
const result = SessionOutboundMessageSchema.safeParse({
|
||||
type: 'workspace_update',
|
||||
payload: {
|
||||
kind: 'upsert',
|
||||
workspace: {
|
||||
id: '/repo',
|
||||
projectId: '/repo',
|
||||
name: '',
|
||||
status: 'not-a-bucket',
|
||||
activityAt: null,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user