|
1 | 1 | /* eslint-disable @typescript-eslint/no-unused-vars */ |
2 | 2 | /* eslint-disable no-constant-binary-expression */ |
3 | 3 | /* eslint-disable @typescript-eslint/no-unused-expressions */ |
4 | | -import { Client } from './index.js'; |
| 4 | +import { Client, getSupportedElicitationModes } from './index.js'; |
5 | 5 | import { z } from 'zod'; |
6 | 6 | import { |
7 | 7 | RequestSchema, |
@@ -1543,3 +1543,59 @@ describe('outputSchema validation', () => { |
1543 | 1543 | ); |
1544 | 1544 | }); |
1545 | 1545 | }); |
| 1546 | + |
| 1547 | +describe('getSupportedElicitationModes', () => { |
| 1548 | + test('should support nothing when capabilities are undefined', () => { |
| 1549 | + const result = getSupportedElicitationModes(undefined); |
| 1550 | + expect(result.supportsFormMode).toBe(false); |
| 1551 | + expect(result.supportsUrlMode).toBe(false); |
| 1552 | + }); |
| 1553 | + |
| 1554 | + test('should default to form mode when capabilities are an empty object', () => { |
| 1555 | + const result = getSupportedElicitationModes({}); |
| 1556 | + expect(result.supportsFormMode).toBe(true); |
| 1557 | + expect(result.supportsUrlMode).toBe(false); |
| 1558 | + }); |
| 1559 | + |
| 1560 | + test('should support form mode when form is explicitly declared', () => { |
| 1561 | + const result = getSupportedElicitationModes({ form: {} }); |
| 1562 | + expect(result.supportsFormMode).toBe(true); |
| 1563 | + expect(result.supportsUrlMode).toBe(false); |
| 1564 | + }); |
| 1565 | + |
| 1566 | + test('should support url mode when url is explicitly declared', () => { |
| 1567 | + const result = getSupportedElicitationModes({ url: {} }); |
| 1568 | + expect(result.supportsFormMode).toBe(false); |
| 1569 | + expect(result.supportsUrlMode).toBe(true); |
| 1570 | + }); |
| 1571 | + |
| 1572 | + test('should support both modes when both are explicitly declared', () => { |
| 1573 | + const result = getSupportedElicitationModes({ form: {}, url: {} }); |
| 1574 | + expect(result.supportsFormMode).toBe(true); |
| 1575 | + expect(result.supportsUrlMode).toBe(true); |
| 1576 | + }); |
| 1577 | + |
| 1578 | + test('should support form mode when only applyDefaults is present', () => { |
| 1579 | + const result = getSupportedElicitationModes({ applyDefaults: true }); |
| 1580 | + expect(result.supportsFormMode).toBe(true); |
| 1581 | + expect(result.supportsUrlMode).toBe(false); |
| 1582 | + }); |
| 1583 | + |
| 1584 | + test('should support form mode when applyDefaults and form are present', () => { |
| 1585 | + const result = getSupportedElicitationModes({ applyDefaults: true, form: {} }); |
| 1586 | + expect(result.supportsFormMode).toBe(true); |
| 1587 | + expect(result.supportsUrlMode).toBe(false); |
| 1588 | + }); |
| 1589 | + |
| 1590 | + test('should support url mode when applyDefaults and url are present', () => { |
| 1591 | + const result = getSupportedElicitationModes({ applyDefaults: true, url: {} }); |
| 1592 | + expect(result.supportsFormMode).toBe(false); |
| 1593 | + expect(result.supportsUrlMode).toBe(true); |
| 1594 | + }); |
| 1595 | + |
| 1596 | + test('should support both modes when applyDefaults, form, and url are present', () => { |
| 1597 | + const result = getSupportedElicitationModes({ applyDefaults: true, form: {}, url: {} }); |
| 1598 | + expect(result.supportsFormMode).toBe(true); |
| 1599 | + expect(result.supportsUrlMode).toBe(true); |
| 1600 | + }); |
| 1601 | +}); |
0 commit comments