91 lines
2.7 KiB
TypeScript
91 lines
2.7 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { cleanMarkdownEnv, type CleanMarkdownEnv } from '../src/node/utils/cleanMarkdownEnv.js'
|
|
|
|
describe('cleanMarkdownEnv', () => {
|
|
const env: CleanMarkdownEnv = {
|
|
base: 'base',
|
|
filePath: 'filePath',
|
|
filePathRelative: 'filePathRelative',
|
|
references: 'references',
|
|
abbreviations: 'abbreviations',
|
|
annotations: 'annotations',
|
|
// @ts-expect-error should be ignored
|
|
foo: 'foo',
|
|
bar: 'bar',
|
|
}
|
|
it('should clean markdown env', () => {
|
|
const result = cleanMarkdownEnv(env)
|
|
expect(result).toEqual({
|
|
base: 'base',
|
|
filePath: 'filePath',
|
|
filePathRelative: 'filePathRelative',
|
|
references: 'references',
|
|
abbreviations: 'abbreviations',
|
|
annotations: 'annotations',
|
|
})
|
|
})
|
|
|
|
it('should clean markdown env with excludes', () => {
|
|
const result = cleanMarkdownEnv(env, ['references', 'abbreviations'])
|
|
expect(result).toEqual({
|
|
base: 'base',
|
|
filePath: 'filePath',
|
|
filePathRelative: 'filePathRelative',
|
|
annotations: 'annotations',
|
|
})
|
|
})
|
|
|
|
it('should handle empty env', () => {
|
|
const result = cleanMarkdownEnv({})
|
|
expect(result).toEqual({})
|
|
})
|
|
|
|
it('should handle env with only valid keys', () => {
|
|
const validEnv = {
|
|
base: '/base/',
|
|
filePath: '/path/to/file.md',
|
|
filePathRelative: 'path/to/file.md',
|
|
}
|
|
const result = cleanMarkdownEnv(validEnv)
|
|
expect(result).toEqual(validEnv)
|
|
})
|
|
|
|
it('should handle env with undefined values', () => {
|
|
const envWithUndefined = {
|
|
base: undefined,
|
|
filePath: 'file.md',
|
|
}
|
|
const result = cleanMarkdownEnv(envWithUndefined)
|
|
expect(result).toEqual({
|
|
base: undefined,
|
|
filePath: 'file.md',
|
|
})
|
|
})
|
|
|
|
it('should exclude all valid keys', () => {
|
|
const result = cleanMarkdownEnv(env, ['base', 'filePath', 'filePathRelative', 'references', 'abbreviations', 'annotations'])
|
|
expect(result).toEqual({})
|
|
})
|
|
|
|
it('should handle complex references', () => {
|
|
const envWithRefs: CleanMarkdownEnv = {
|
|
base: '/',
|
|
references: {
|
|
link1: { href: 'https://example.com', title: 'Example' },
|
|
},
|
|
abbreviations: { HTML: 'HyperText Markup Language' },
|
|
annotations: { note: { sources: ['Note 1'], rendered: [] } },
|
|
}
|
|
const result = cleanMarkdownEnv(envWithRefs)
|
|
expect(result.references).toEqual({ link1: { href: 'https://example.com', title: 'Example' } })
|
|
expect(result.abbreviations).toEqual({ HTML: 'HyperText Markup Language' })
|
|
expect(result.annotations).toEqual({ note: { sources: ['Note 1'], rendered: [] } })
|
|
})
|
|
|
|
it('should not mutate original env', () => {
|
|
const originalEnv = { ...env }
|
|
cleanMarkdownEnv(env)
|
|
expect(env).toEqual(originalEnv)
|
|
})
|
|
})
|