parse_inline.test.ts (1896B)
1 import { parseInline } from '@/lib/markup/parse_inline' 2 import { InlineToken } from '@/lib/markup/token' 3 4 const inlineTests: Array<{ 5 name: string 6 input: string 7 expected: InlineToken[] 8 }> = [ 9 { 10 name: 'simple', 11 input: 'Hello, world!', 12 expected: [ 13 { key: 'text', text: 'Hello, world!' }, 14 ], 15 }, 16 { 17 name: 'bold', 18 input: '**Hello, world!**', 19 expected: [ 20 { key: 'bold', text: 'Hello, world!' }, 21 ], 22 }, 23 { 24 name: 'italic', 25 input: '//Hello, world!//', 26 expected: [ 27 { key: 'italic', text: 'Hello, world!' }, 28 ], 29 }, 30 { 31 name: 'underline', 32 input: '__Hello, world!__', 33 expected: [ 34 { key: 'underline', text: 'Hello, world!' }, 35 ], 36 }, 37 { 38 name: 'strikethrough', 39 input: '~~Hello, world!~~', 40 expected: [ 41 { key: 'strikethrough', text: 'Hello, world!' }, 42 ], 43 }, 44 { 45 name: 'code', 46 input: '`Hello, world!`', 47 expected: [ 48 { key: 'code', text: 'Hello, world!' }, 49 ], 50 }, 51 { 52 name: 'link', 53 input: '[[Hello, world!]]', 54 expected: [ 55 { key: 'link', path: 'Hello, world!', text: 'Hello, world!' }, 56 ], 57 }, 58 { 59 name: 'link with text', 60 input: '[[Hello, world!|Hello, world!]]', 61 expected: [ 62 { key: 'link', path: 'Hello, world!', text: 'Hello, world!' }, 63 ], 64 }, 65 { 66 name: 'multiple', 67 input: '**Hello**, //world!//', 68 expected: [ 69 { key: 'bold', text: 'Hello' }, 70 { key: 'text', text: ', ' }, 71 { key: 'italic', text: 'world!' }, 72 ], 73 }, 74 { 75 name: 'multiple lines', 76 input: 'Hello,\nworld!', 77 expected: [ 78 { key: 'text', text: 'Hello,' }, 79 { key: 'linebreak' }, 80 { key: 'text', text: 'world!' }, 81 ], 82 } 83 ] 84 85 describe('Inline', function () { 86 for (const test of inlineTests) { 87 it(test.name, function () { 88 expect(parseInline(test.input)).toEqual(test.expected) 89 }) 90 } 91 })