File size: 904 Bytes
7dc28be
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import { describe, expect, it } from 'vitest';
import { z } from 'zod';
import { DocumentIdParameter } from './types.js';

describe('shared tool parameter schemas', () => {
  it('rejects unknown top-level keys', () => {
    const result = DocumentIdParameter.safeParse({
      documentId: 'doc-123',
      folderId: 'wrong-key',
    });

    expect(result.success).toBe(false);
    if (!result.success) {
      expect(result.error.issues[0]?.code).toBe('unrecognized_keys');
      expect(result.error.issues[0]).toMatchObject({ keys: ['folderId'] });
    }
  });

  it('keeps strict mode when shared schemas are extended by tools', () => {
    const extended = DocumentIdParameter.extend({
      title: z.string(),
    });

    const result = extended.safeParse({
      documentId: 'doc-123',
      title: 'Report',
      folderId: 'wrong-key',
    });

    expect(result.success).toBe(false);
  });
});