| | import { describe, expect, test } from 'vitest' |
| |
|
| | import { runRule } from '../../lib/init-test' |
| | import { frontmatterLiquidSyntax, liquidSyntax } from '../../lib/linting-rules/liquid-syntax' |
| |
|
| | |
| | const fmOptions = { markdownlintOptions: { frontMatter: null } } |
| |
|
| | describe(frontmatterLiquidSyntax.names.join(' - '), () => { |
| | test('Frontmatter that contains invalid syntax fails', async () => { |
| | const markdown = [ |
| | '---', |
| | 'title: "{% ata variables.product.product_name %}"', |
| | 'shortTitle: "{% "', |
| | 'intro: "{% data reusables.foo.bar }"', |
| | 'permissions: "{% if true %}Permission statement"', |
| | 'showMiniToc: "{% if true %}Permission statement"', |
| | '---', |
| | ].join('\n') |
| | const result = await runRule(frontmatterLiquidSyntax, { strings: { markdown }, ...fmOptions }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(4) |
| | expect(errors.map((error) => error.lineNumber)).toEqual([2, 3, 4, 5]) |
| | expect(errors[0].errorRange).toEqual([9, 40]) |
| | }) |
| | test('Frontmatter that contains valid Liquid passes', async () => { |
| | const markdown = [ |
| | '---', |
| | "title: '{% data variables.product.product_name %}'", |
| | 'shortTitle:', |
| | "intro: '{% data reusables.foo.bar %}'", |
| | "permissions: '{% if true %}Permission statement{% endif %}'", |
| | 'showMiniToc: true', |
| | '---', |
| | ].join('\n') |
| | const result = await runRule(liquidSyntax, { strings: { markdown }, ...fmOptions }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(0) |
| | }) |
| | }) |
| |
|
| | describe(liquidSyntax.names.join(' - '), () => { |
| | test('Missing closing tag syntax in Markdown content fails', async () => { |
| | const markdown = ['---', 'title: Title', '---', '{% data reusables.foo.bar }'].join('\n') |
| | const result = await runRule(liquidSyntax, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(1) |
| | expect(errors[0].lineNumber).toBe(4) |
| | expect(errors[0].errorRange).toEqual([1, 27]) |
| | }) |
| | test('Misspelled data tag in Markdown content fails', async () => { |
| | const markdown = [ |
| | '---', |
| | 'title: Title', |
| | '---', |
| | '{% ata variables.product.product_name %}', |
| | ].join('\n') |
| | const result = await runRule(liquidSyntax, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(1) |
| | expect(errors[0].lineNumber).toBe(4) |
| | expect(errors[0].errorRange).toEqual([1, 40]) |
| | }) |
| | test('Missing endif tag in Markdown content fails', async () => { |
| | const markdown = ['---', 'title: Title', '---', '{% if true %}Permission statement'].join('\n') |
| | const result = await runRule(liquidSyntax, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(1) |
| | expect(errors[0].lineNumber).toBe(4) |
| | expect(errors[0].errorRange).toEqual([1, 33]) |
| | }) |
| | test('Valid Liquid syntax in Markdown content passes', async () => { |
| | const markdown = [ |
| | '---', |
| | 'title: "Title"', |
| | '---', |
| | '{% data reusables.foo.bar %}', |
| | '{% if true %}Permission statement{% endif %}', |
| | |
| | '{% ifversion ghhes %}bla{%endif%}', |
| | ].join('\n') |
| | const result = await runRule(liquidSyntax, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(0) |
| | }) |
| | }) |
| |
|