import type { App } from 'vuepress'
import type { MarkdownEnv } from 'vuepress/markdown'
import MarkdownIt from 'markdown-it'
import { describe, expect, it } from 'vitest'
import { embedLinkPlugin } from '../src/node/obsidian/embedLink.js'
function createMockApp(pages: App['pages'] = []): App {
return {
pages,
} as App
}
function createMockEnv(filePathRelative = 'test.md'): MarkdownEnv {
return {
filePathRelative,
base: '/',
links: [],
importedFiles: [],
}
}
function createMarkdownWithMockRules() {
return MarkdownIt({ html: true }).use((md) => {
md.block.ruler.before('code', 'import_code', () => false)
md.renderer.rules.import_code = () => ''
})
}
describe('embedLinkPlugin', () => {
const mockApp = createMockApp()
const md = createMarkdownWithMockRules().use(embedLinkPlugin, mockApp)
it('should render image embed', () => {
const result = md.render('![[image.png]]')
expect(result).toContain('
{
const result = md.render('![[image.png|300]]')
expect(result).toContain('
{
const result = md.render('![[image.png|300x200]]')
expect(result).toContain('
{
const result = md.render('![[audio.mp3]]')
expect(result).toContain('