| | import { describe, expect, test } from 'vitest' |
| |
|
| | import { runRule } from '../../lib/init-test' |
| | import { linkPunctuation } from '../../lib/linting-rules/link-punctuation' |
| |
|
| | describe(linkPunctuation.names.join(' - '), () => { |
| | test('inline links without quotes or a period should not error', async () => { |
| | const markdown = [ |
| | '[This should pass](./image.png)', |
| | '[AUTOTITLE](./image.png)', |
| | |
| | |
| | "[A link with end quote'](./image.png)", |
| | '["A link with start quote](./image.png)', |
| | '[A link with a question mark?](./image.png)', |
| | '[A link with an exclamation point!](./image.png)', |
| | ].join('\n') |
| |
|
| | const result = await runRule(linkPunctuation, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(0) |
| | }) |
| | test('inline links with quotes or punctuation should error', async () => { |
| | const markdown = [ |
| | '["A title"](./image.png)', |
| | "['A title'](./image.png)", |
| | '[A title.](./image.png)', |
| | '["A title."](./image.png)', |
| | '["A title".](./image.png)', |
| | "['A title.'](./image.png)", |
| | "['A title'.](./image.png)", |
| | "['A title'?](./image.png)", |
| | '["A title"!](./image.png)', |
| | "['A title?'](./image.png)", |
| | '["A title!"](./image.png)', |
| | ].join('\n') |
| |
|
| | const result = await runRule(linkPunctuation, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(11) |
| | expect(errors[0].errorRange).toEqual([2, 9]) |
| | expect(errors[6].lineNumber).toBe(7) |
| | }) |
| | test('links that is not plain text', async () => { |
| | const markdown = [ |
| | '[*emphasize*](./image.png)', |
| | '[**boldness**](./image.png)', |
| | '[**boldness** and *emphasize*](./image.png)', |
| | ].join('\n') |
| |
|
| | const result = await runRule(linkPunctuation, { strings: { markdown } }) |
| | const errors = result.markdown |
| | expect(errors.length).toBe(0) |
| | }) |
| | }) |
| |
|