From b5c7b0536dccbf9b0af5d09ff0b94ab6c863908a Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Sun, 29 Dec 2024 00:38:30 +0800 Subject: [PATCH] test(plugin-md-power): add `audioReader` unit tests (#401) --- .../__snapshots__/audioReader.spec.ts.snap | 20 ++++++++ .../__test__/audioReader.spec.ts | 48 +++++++++++++++++++ .../src/node/embed/audio/reader.ts | 8 +++- 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap create mode 100644 plugins/plugin-md-power/__test__/audioReader.spec.ts diff --git a/plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap b/plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap new file mode 100644 index 00000000..0d0ded7b --- /dev/null +++ b/plugins/plugin-md-power/__test__/__snapshots__/audioReader.spec.ts.snap @@ -0,0 +1,20 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`artPlayerPlugin > should not work 1`] = ` +"

@[audioReader @audioReader

+

@[audioReader]xxx

+

@[ audioReader](123456

+

@[audioReader]((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()

+

@ audioReader xxx

+

@audioReader xxx

+

@[audioReader](javascript:alert(1)) xxx

+" +`; + +exports[`artPlayerPlugin > should work 1`] = ` +"

+

title

+

+

xxx xxx

+" +`; diff --git a/plugins/plugin-md-power/__test__/audioReader.spec.ts b/plugins/plugin-md-power/__test__/audioReader.spec.ts new file mode 100644 index 00000000..15edafbc --- /dev/null +++ b/plugins/plugin-md-power/__test__/audioReader.spec.ts @@ -0,0 +1,48 @@ +import MarkdownIt from 'markdown-it' +import { describe, expect, it } from 'vitest' +import { audioReaderPlugin } from '../src/node/embed/audio/reader.js' + +function createMarkdown() { + return MarkdownIt().use((md) => { + md.block.ruler.before('code', 'import_code', () => false) + md.renderer.rules.import_code = () => '' + }).use(audioReaderPlugin) +} + +describe('artPlayerPlugin', () => { + it('should work', () => { + const md = createMarkdown() + const code = `\ +@[audioReader](/xxx.mp3) @[audioReader](/xxx.mp3) + +@[audioReader autoplay title="title"](/xxx.mp3) + +@[audioReader autoplay start-time="0" end-time="99" volume="0.55"](/xxx.mp3) + +xxx @[audioReader type="audio/mp3"](/xxx.mp3) xxx +` + + expect(md.render(code)).toMatchSnapshot() + }) + + it('should not work', () => { + const md = createMarkdown() + const code = `\ +@[audioReader @[audioReader]() + +@[audioReader]xxx + +@[ audioReader](123456 + +@[audioReader]((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((() + +@[ audioReader](/xxx.mp3) xxx + +@[audioReader]( xxx.mp3) xxx + +@[audioReader](javascript:alert(1)) xxx +` + + expect(md.render(code)).toMatchSnapshot() + }) +}) diff --git a/plugins/plugin-md-power/src/node/embed/audio/reader.ts b/plugins/plugin-md-power/src/node/embed/audio/reader.ts index d8f81659..b002ea59 100644 --- a/plugins/plugin-md-power/src/node/embed/audio/reader.ts +++ b/plugins/plugin-md-power/src/node/embed/audio/reader.ts @@ -43,14 +43,18 @@ const audioReader: RuleInline = (state, silent) => { return false } } + else { + return false + } + /* istanbul ignore else -- @preserve */ if (!silent) { state.pos = labelStart state.posMax = labelEnd const info = state.src.slice(labelStart, labelEnd).trim() const { attrs } = resolveAttrs(info) - const tokenOpen = state.push('audio_reader_open', 'audioReader', 1) + const tokenOpen = state.push('audio_reader_open', 'AudioReader', 1) tokenOpen.info = info tokenOpen.attrs = [['src', href]] @@ -69,7 +73,7 @@ const audioReader: RuleInline = (state, silent) => { if (attrs.title) state.push('text', '', 0).content = attrs.title - state.push('audio_reader_close', 'audioReader', -1) + state.push('audio_reader_close', 'AudioReader', -1) } state.pos = pos + 1