UNPKG

meld

Version:

Meld: A template language for LLM prompts

72 lines (56 loc) 2.13 kB
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest'; import { TestContext } from '@tests/utils/index.js'; import { main } from '../api/index.js'; import type { Services } from '@core/types/index.js'; describe('Transformation Debug Tests', () => { let context: TestContext; beforeEach(async () => { context = new TestContext(); await context.initialize(); context.enableTransformation(); }); afterEach(async () => { await context.cleanup(); vi.resetModules(); }); it('should transform simple text variables without newlines', async () => { const content = `@text greeting = "Hello" @text subject = "World" {{greeting}}, {{subject}}!`; await context.writeFile('test.meld', content); // Enable debug logging const outputService = context.services.output; const origNodeToMarkdown = outputService.nodeToMarkdown; outputService.nodeToMarkdown = async function(node, state) { console.log('NODE TO MARKDOWN:', { nodeType: node.type, nodeContent: JSON.stringify(node), transformationEnabled: state.isTransformationEnabled() }); return origNodeToMarkdown.call(this, node, state); }; const result = await main('test.meld', { fs: context.fs, services: context.services as unknown as Partial<Services>, transformation: true }); console.log('RESULT:', JSON.stringify(result)); // Check that we don't have newlines between variables expect(result.trim()).toBe('Hello, World!'); }); it('should transform array access with dot notation', async () => { const content = `@data items = ["apple", "banana", "cherry"] First item: {{items.0}}`; await context.writeFile('test.meld', content); const result = await main('test.meld', { fs: context.fs, services: context.services as unknown as Partial<Services>, transformation: true }); console.log('RESULT:', JSON.stringify(result)); // Check that we have the correct array element expect(result.trim()).toBe('First item: apple'); }); });