Skip to main content
Glama
pdf.test.ts2.35 kB
import { beforeEach, describe, expect, it, vi } from 'vitest'; // Mock pdf-to-img vi.mock('pdf-to-img', () => ({ pdf: vi.fn(), })); // Mock kero vi.mock('@lytics/kero', () => ({ default: { createLogger: () => ({ debug: vi.fn(), error: vi.fn(), }), }, })); import { pdf } from 'pdf-to-img'; import { pdfToImages } from '../pdf'; describe('pdfToImages', () => { beforeEach(() => { vi.clearAllMocks(); }); it('should convert PDF to array of image buffers', async () => { const mockPdf = vi.mocked(pdf); const mockPages = [Buffer.from([1, 2, 3]), Buffer.from([4, 5, 6])]; // Create mock document with required properties mockPdf.mockResolvedValueOnce({ length: mockPages.length, metadata: {} as never, getPage: vi.fn(), [Symbol.asyncIterator]: async function* () { for (const page of mockPages) { yield page; } }, }); const result = await pdfToImages('/path/to/test.pdf'); expect(result).toHaveLength(2); expect(result?.[0]).toBeInstanceOf(Buffer); expect(result?.[1]).toBeInstanceOf(Buffer); expect(mockPdf).toHaveBeenCalledWith('/path/to/test.pdf', { scale: 3 }); }); it('should return null for empty PDF', async () => { const mockPdf = vi.mocked(pdf); mockPdf.mockResolvedValueOnce({ length: 0, metadata: {} as never, getPage: vi.fn(), [Symbol.asyncIterator]: async function* () { // No pages }, }); const result = await pdfToImages('/path/to/empty.pdf'); expect(result).toBeNull(); }); it('should return null on PDF conversion error', async () => { const mockPdf = vi.mocked(pdf); mockPdf.mockRejectedValueOnce(new Error('Invalid PDF')); const result = await pdfToImages('/path/to/invalid.pdf'); expect(result).toBeNull(); }); it('should handle single page PDF', async () => { const mockPdf = vi.mocked(pdf); const mockPage = Buffer.from([1, 2, 3, 4, 5]); mockPdf.mockResolvedValueOnce({ length: 1, metadata: {} as never, getPage: vi.fn(), [Symbol.asyncIterator]: async function* () { yield mockPage; }, }); const result = await pdfToImages('/path/to/single-page.pdf'); expect(result).toHaveLength(1); expect(result?.[0]).toEqual(mockPage); }); });

Latest Blog Posts

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/prosdevlab/doc-agent'

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