UNPKG

@mintlify/previewing

Version:

Preview Mintlify docs locally

49 lines (48 loc) 2.15 kB
import { findAndRemoveImports, stringifyTree } from '@mintlify/common'; import { preparseMdxTree } from '@mintlify/prebuild'; import fse from 'fs-extra'; import { mkdtemp, rm } from 'fs/promises'; import { tmpdir } from 'os'; import { join } from 'path'; const testPaths = vi.hoisted(() => ({ cmd: '', public: '', })); vi.mock('../constants.js', () => ({ get CMD_EXEC_PATH() { return testPaths.cmd; }, get NEXT_PUBLIC_PATH() { return testPaths.public; }, })); vi.mock('../local-preview/listener/utils.js', () => ({ getCurrentVariables: vi.fn(async () => ({ name: 'Ada' })), handleParseError: vi.fn(), })); import { resolvePageImports } from '../local-preview/listener/resolve-page-imports.js'; describe('resolvePageImports', () => { let root; beforeEach(async () => { root = await mkdtemp(join(tmpdir(), 'resolve-page-imports-')); testPaths.cmd = join(root, 'docs'); testPaths.public = join(root, 'public'); await fse.ensureDir(testPaths.cmd); await fse.ensureDir(testPaths.public); }); afterEach(async () => { await rm(root, { recursive: true, force: true }); }); it('resolves newly imported source snippets with variables and nested imports', async () => { await fse.outputFile(join(testPaths.cmd, 'nested.mdx'), 'export const Nested = () => <span>{{name}}</span>;'); await fse.outputFile(join(testPaths.cmd, 'snippet.mdx'), "import { Nested } from './nested.mdx';\n\n<Nested />"); const pageContent = "import Snippet from './snippet.mdx';\n\n<Snippet />"; const tree = await preparseMdxTree(pageContent, testPaths.cmd, join(testPaths.cmd, 'page.mdx'), vi.fn()); const importsResponse = await findAndRemoveImports(tree); const resolvedTree = await resolvePageImports({ ...importsResponse, filename: 'page.mdx' }); const resolvedContent = stringifyTree(resolvedTree); expect(resolvedContent).toContain('Ada'); expect(resolvedContent).not.toContain('{{name}}'); expect(resolvedContent).not.toContain("import { Nested } from './nested.mdx'"); }); });