1
0
mirror of synced 2025-12-19 09:57:42 -05:00
Files
docs/src/content-render/tests/resolve-liquid.ts

99 lines
3.1 KiB
TypeScript

import { describe, test, expect, beforeEach, afterEach, vi } from 'vitest'
import fs from 'fs/promises'
import path from 'path'
import { execSync } from 'child_process'
const rootDir = path.join(__dirname, '../../..')
const testContentDir = path.join(rootDir, 'content/test-integration')
describe('resolve-liquid script integration tests', () => {
vi.setConfig({ testTimeout: 60 * 1000 })
beforeEach(async () => {
// Create test directory
await fs.mkdir(testContentDir, { recursive: true })
})
afterEach(async () => {
// Clean up test files
await fs.rm(testContentDir, { recursive: true, force: true })
})
// Helper function to run script commands
async function runResolveScript(args: string): Promise<{ output: string; exitCode: number }> {
let output = ''
let exitCode = 0
try {
output = execSync(`tsx src/content-render/scripts/resolve-liquid.ts ${args}`, {
encoding: 'utf8',
cwd: rootDir,
stdio: 'pipe',
timeout: 30000,
})
} catch (error: any) {
output = error.stdout + error.stderr
exitCode = error.status || 1
}
return { output, exitCode }
}
test('resolve command should complete successfully with basic content', async () => {
// Create a test file with liquid reference
const testFile = path.join(testContentDir, 'basic-test.md')
const testContent = `---
title: Test
---
This uses {% data variables.product.prodname_dotcom %} in content.
`
await fs.writeFile(testFile, testContent)
const { output, exitCode } = await runResolveScript(`resolve --paths "${testFile}"`)
// Should complete without error
expect(exitCode, `Script failed with output: ${output}`).toBe(0)
expect(output.length).toBeGreaterThan(0)
// Check that the file was modified
const resolvedContent = await fs.readFile(testFile, 'utf8')
expect(resolvedContent).not.toBe(testContent)
expect(resolvedContent).toContain('GitHub') // Should resolve to actual fixture value
})
test('restore command should complete successfully', async () => {
const testFile = path.join(testContentDir, 'restore-test.md')
const originalContent = `---
title: Test
---
This uses {% data variables.product.prodname_dotcom %} in content.
`
await fs.writeFile(testFile, originalContent)
// First resolve
await runResolveScript(`resolve --paths "${testFile}"`)
// Then restore
const { output, exitCode } = await runResolveScript(`restore --paths "${testFile}"`)
expect(exitCode, `Restore script failed with output: ${output}`).toBe(0)
expect(output.length).toBeGreaterThan(0)
// Should be back to original liquid tags
const restoredContent = await fs.readFile(testFile, 'utf8')
expect(restoredContent).toContain('{% data variables.product.prodname_dotcom %}')
expect(restoredContent).not.toContain('GitHub')
})
test('help command should display usage information', async () => {
const { output, exitCode } = await runResolveScript('resolve --help')
expect(exitCode, `Help command failed with output: ${output}`).toBe(0)
expect(output).toMatch(/resolve|usage|help|command/i)
})
})