Spaces:
Sleeping
Sleeping
| import { | |
| collabNoteCreateRequestSchema, | |
| collabPollCreateRequestSchema, | |
| collabPollVoteRequestSchema, | |
| collabMessageCreateRequestSchema, | |
| collabReactionRequestSchema, | |
| } from './collab.schema'; | |
| import { describe, it, expect } from 'vitest'; | |
| describe('collabNoteCreateRequestSchema', () => { | |
| it('requires a non-empty title; the rest is optional', () => { | |
| expect( | |
| collabNoteCreateRequestSchema.safeParse({ title: 'Idea' }).success, | |
| ).toBe(true); | |
| expect(collabNoteCreateRequestSchema.safeParse({ title: '' }).success).toBe( | |
| false, | |
| ); | |
| expect(collabNoteCreateRequestSchema.safeParse({}).success).toBe(false); | |
| }); | |
| }); | |
| describe('collabPollCreateRequestSchema', () => { | |
| it('requires a question and at least two options', () => { | |
| expect( | |
| collabPollCreateRequestSchema.safeParse({ | |
| question: 'Where?', | |
| options: ['A', 'B'], | |
| }).success, | |
| ).toBe(true); | |
| expect( | |
| collabPollCreateRequestSchema.safeParse({ | |
| question: 'Where?', | |
| options: ['A'], | |
| }).success, | |
| ).toBe(false); | |
| expect( | |
| collabPollCreateRequestSchema.safeParse({ options: ['A', 'B'] }).success, | |
| ).toBe(false); | |
| }); | |
| }); | |
| describe('collabPollVoteRequestSchema', () => { | |
| it('requires a numeric option_index', () => { | |
| expect( | |
| collabPollVoteRequestSchema.safeParse({ option_index: 0 }).success, | |
| ).toBe(true); | |
| expect( | |
| collabPollVoteRequestSchema.safeParse({ option_index: 'a' }).success, | |
| ).toBe(false); | |
| }); | |
| }); | |
| describe('collabMessageCreateRequestSchema', () => { | |
| it('requires text, caps it at 5000, allows a nullable reply_to', () => { | |
| expect( | |
| collabMessageCreateRequestSchema.safeParse({ text: 'hi', reply_to: null }) | |
| .success, | |
| ).toBe(true); | |
| expect( | |
| collabMessageCreateRequestSchema.safeParse({ text: 'hi', reply_to: 4 }) | |
| .success, | |
| ).toBe(true); | |
| expect( | |
| collabMessageCreateRequestSchema.safeParse({ text: '' }).success, | |
| ).toBe(false); | |
| expect( | |
| collabMessageCreateRequestSchema.safeParse({ text: 'x'.repeat(5001) }) | |
| .success, | |
| ).toBe(false); | |
| }); | |
| }); | |
| describe('collabReactionRequestSchema', () => { | |
| it('requires a non-empty emoji', () => { | |
| expect(collabReactionRequestSchema.safeParse({ emoji: '👍' }).success).toBe( | |
| true, | |
| ); | |
| expect(collabReactionRequestSchema.safeParse({ emoji: '' }).success).toBe( | |
| false, | |
| ); | |
| }); | |
| }); | |