Skip to main content
Glama

PrimeNG MCP Server

by hnkatze
formatters.test.ts4.26 kB
/** * Tests for formatters */ import { describe, it, expect } from 'vitest'; import { formatComponentDoc, formatSearchResults, formatComponentList, capitalizeComponentName, } from '../../../src/utils/formatters.js'; import { ComponentDoc } from '../../../src/models/ComponentDoc.js'; describe('Formatters', () => { describe('capitalizeComponentName', () => { it('should capitalize component name', () => { expect(capitalizeComponentName('button')).toBe('Button'); expect(capitalizeComponentName('dialog')).toBe('Dialog'); expect(capitalizeComponentName('inputtext')).toBe('Inputtext'); }); }); describe('formatSearchResults', () => { it('should format search results with matches', () => { const results = ['button', 'splitbutton', 'togglebutton']; const formatted = formatSearchResults(results, 'button'); expect(formatted).toContain('Componentes encontrados'); expect(formatted).toContain('- button'); expect(formatted).toContain('- splitbutton'); }); it('should handle empty search results', () => { const formatted = formatSearchResults([], 'xyz'); expect(formatted).toContain('No se encontraron componentes'); expect(formatted).toContain('xyz'); }); }); describe('formatComponentList', () => { it('should format categorized component list', () => { const categorized = { Buttons: ['button', 'splitbutton'], Inputs: ['inputtext', 'dropdown'], }; const formatted = formatComponentList(categorized); expect(formatted).toContain('# Componentes de PrimeNG'); expect(formatted).toContain('## Buttons'); expect(formatted).toContain('- button'); expect(formatted).toContain('## Inputs'); expect(formatted).toContain('- inputtext'); }); }); describe('formatComponentDoc', () => { it('should format complete component documentation', () => { const doc: ComponentDoc = { name: 'button', description: 'Button component for Angular', importStatement: "import { Button } from 'primeng/button';", moduleImport: "import { ButtonModule } from 'primeng/button';", basicUsage: '<p-button label="Click" />', properties: [ { name: 'label', type: 'string', default: 'null', description: 'Label text', }, ], events: [ { name: 'onClick', parameters: 'event', description: 'Callback to invoke on click', }, ], methods: [ { name: 'focus', parameters: 'none', description: 'Focuses the button', }, ], }; const formatted = formatComponentDoc(doc); expect(formatted).toContain('# BUTTON'); expect(formatted).toContain('Button component for Angular'); expect(formatted).toContain('## Import'); expect(formatted).toContain('ButtonModule'); expect(formatted).toContain('## Uso Básico'); expect(formatted).toContain('## Properties'); expect(formatted).toContain('| label | string | null | Label text |'); expect(formatted).toContain('## Events'); expect(formatted).toContain('| onClick | event | Callback to invoke on click |'); expect(formatted).toContain('## Methods'); expect(formatted).toContain('| focus | none | Focuses the button |'); expect(formatted).toContain('https://primeng.org/button'); }); it('should handle minimal component doc without properties/events/methods', () => { const doc: ComponentDoc = { name: 'divider', description: 'Divider component', importStatement: "import { Divider } from 'primeng/divider';", moduleImport: "import { DividerModule } from 'primeng/divider';", basicUsage: '<p-divider />', }; const formatted = formatComponentDoc(doc); expect(formatted).toContain('# DIVIDER'); expect(formatted).toContain('Divider component'); expect(formatted).not.toContain('## Properties'); expect(formatted).not.toContain('## Events'); expect(formatted).not.toContain('## Methods'); }); }); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hnkatze/PrimeNG_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server