import type { App } from 'vuepress'
import MarkdownIt from 'markdown-it'
import { describe, expect, it } from 'vitest'
import { obsidianPlugin } from '../src/node/obsidian/index.js'
function createMockApp(pages: App['pages'] = []): App {
return {
pages,
} as App
}
function createMarkdownWithMockRules() {
return MarkdownIt({ html: true }).use((md) => {
md.block.ruler.before('code', 'import_code', () => false)
md.renderer.rules.import_code = () => ''
})
}
describe('obsidianPlugin', () => {
it('should enable all plugins by default', () => {
const md = createMarkdownWithMockRules()
const mockApp = createMockApp([{ path: '/', filePathRelative: 'README.md', title: 'Home' }] as unknown as App['pages'])
obsidianPlugin(md, mockApp, {})
const embedResult = md.render('![[image.png]]')
expect(embedResult).toContain('
{
const md = createMarkdownWithMockRules()
const mockApp = createMockApp()
obsidianPlugin(md, mockApp, { obsidian: { wikiLink: false } })
const wikiResult = md.render('[[Page]]')
expect(wikiResult).not.toContain(' {
const md = createMarkdownWithMockRules()
const mockApp = createMockApp()
obsidianPlugin(md, mockApp, { obsidian: false })
const result = md.render('![[image.png]]')
expect(result).not.toContain('
{
const md = createMarkdownWithMockRules()
const mockApp = createMockApp()
obsidianPlugin(md, mockApp, { obsidian: { embedLink: false } })
const result = md.render('![[image.png]]')
expect(result).not.toContain('
{
const md = createMarkdownWithMockRules()
const mockApp = createMockApp()
obsidianPlugin(md, mockApp, { obsidian: { comment: false } })
const embedResult = md.render('![[image.png]]')
expect(embedResult).toContain('![]()