Skip to main content
Glama

MCP PDF

emoji-integration.test.tsβ€’5.81 kB
import assert from 'node:assert/strict'; import { describe, test } from 'node:test'; import type { JsonResume } from '../src/json-resume-schema.ts'; import { generateResumePDFBuffer } from '../src/resume-generator.ts'; describe('Emoji Integration in PDFs', () => { test('renders resume with emoji in name', async () => { const resume: JsonResume = { basics: { name: 'John Doe πŸ‘¨β€πŸ’»', label: 'Software Engineer', email: 'john@example.com', }, }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); }); test('renders resume with emoji in skills', async () => { const resume: JsonResume = { basics: { name: 'Jane Developer', }, skills: [ { name: 'JavaScript πŸ’›', keywords: ['React βš›οΈ', 'Node.js 🟒'], }, { name: 'Python 🐍', keywords: ['Django', 'FastAPI ⚑'], }, ], }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); }); test('renders resume with emoji in job highlights', async () => { const resume: JsonResume = { basics: { name: 'Alex Engineer', }, work: [ { name: 'Tech Corp', position: 'Senior Developer', highlights: ['Built scalable systems πŸš€', 'Improved performance by 50% ⚑', 'Led team of 5 developers πŸ‘₯'], }, ], }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); }); test('renders resume with various emoji types', async () => { const resume: JsonResume = { basics: { name: 'Emoji Test 🎯', label: 'Full Stack Developer', summary: 'Passionate developer πŸ’» with love for clean code ✨', }, work: [ { name: 'Startup Inc', position: 'Lead Developer πŸ‘¨β€πŸ’Ό', summary: 'Leading development team πŸ†', highlights: ['Shipped 10+ features 🚒', 'Zero bugs in production βœ…', 'Happy customers 😊'], }, ], skills: [ { name: 'Languages', keywords: ['TypeScript πŸ”·', 'Go 🐹', 'Rust πŸ¦€'], }, ], awards: [ { title: 'Best Developer πŸ…', awarder: 'Tech Awards', summary: 'Recognized for excellence 🌟', }, ], }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); }); test('handles resume without emoji gracefully', async () => { const resume: JsonResume = { basics: { name: 'Plain Name', label: 'Regular Job', }, skills: [ { name: 'Regular Skills', keywords: ['TypeScript', 'Node.js'], }, ], }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); }); test('renders standard Unicode symbols correctly (Greek, geometric, symbols)', async () => { const resume: JsonResume = { basics: { name: 'Symbol Test Resume', label: 'Director of Operations', }, work: [ { name: 'Example Company', position: 'Director of Operations', highlights: ['Ξ Platform Growth: Scaled private photo SaaS from 5 to 40+ schools', 'β–³ OKR-Driven Roadmap: Partnered with sales to define outcomes', '☐ B2C Revenue System: Launched photo products pipeline', 'β—‹ Microservices Architecture: Built 8+ Node.js REST services'], }, ], }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); console.log(' ℹ️ Greek letters (Ξ), geometric shapes (β–³ β—‹), and symbols (☐) should render correctly'); }); test('correctly distinguishes between symbols and true emoji', async () => { const resume: JsonResume = { basics: { name: 'Mixed Content Test', summary: 'This resume tests both standard symbols (Ξ β–³ ☐ β—‹) and true emoji (πŸ˜€ πŸ‘‹ πŸŽ‰)', }, work: [ { name: 'Symbol Company', position: 'Developer', highlights: ['Standard symbols: Ξ β–³ ☐ β—‹ ⚠ β˜… βœ“ (should render as black glyphs)', 'True emoji: πŸ˜€ πŸ‘‹ πŸŽ‰ πŸš€ (need special rendering)'], }, ], }; const pdfBuffer = await generateResumePDFBuffer(resume); assert.ok(pdfBuffer instanceof Buffer, 'Should return a Buffer'); assert.ok(pdfBuffer.length > 0, 'PDF should have content'); console.log(` πŸ“„ Created: (${pdfBuffer.length} bytes)`); console.log(' ℹ️ Standard symbols should render, true emoji should be handled specially'); }); });

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/mcp-z/mcp-pdf'

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