Files
paseo/packages/server/src/shared/messages.workspaces.test.ts
T

57 lines
1.5 KiB
TypeScript

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('parses open_project_request', () => {
const parsed = SessionInboundMessageSchema.parse({
type: 'open_project_request',
cwd: '/tmp/repo',
requestId: 'req-open',
})
expect(parsed.type).toBe('open_project_request')
})
test('rejects invalid workspace update payload', () => {
const result = SessionOutboundMessageSchema.safeParse({
type: 'workspace_update',
payload: {
kind: 'upsert',
workspace: {
id: '/repo',
projectId: '/repo',
projectDisplayName: 'repo',
projectRootPath: '/repo',
projectKind: 'non_git',
workspaceKind: 'directory',
name: '',
status: 'not-a-bucket',
activityAt: null,
},
},
})
expect(result.success).toBe(false)
})
})