Home Reference Source Test

src/lib/shortcode.test.js

import assert from 'assert'
import Rewire from 'rewire'
import ConvertShortCode from './shortcode.js'

/** @test {ConvertShortCode} */
describe('ConvertShortCode', () => {
  const Module = Rewire('./shortcode.js')

  /** @test {ConvertShortCode} */
  describe('ConvertShortCode', () => {
    it('[code]', () => {
      const text     = '[code]\nCode\n[/code]'
      const actual   = ConvertShortCode(text)
      const expected = '\n\n```\nCode\n```\n\n'
      assert(actual === expected)
    })

    it('[code lang="lang"]', () => {
      const text     = '[code lang="lang"]\nCode\n[/code]'
      const actual   = ConvertShortCode(text)
      const expected = '\n\n```lang\nCode\n```\n\n'
      assert(actual === expected)
    })

    it('[lang]', () => {
      let text = '[plain]\nCode\n[/plain]'
      let actual = ConvertShortCode(text)
      let expected = '\n\n```\nCode\n```\n\n'
      assert(actual === expected)

      text = '[text]\nCode\n[/text]'
      actual = ConvertShortCode(text)
      assert(actual === expected)

      const SHCodes = Module.__get__('SHCodes')
      for (let i = 3, max = SHCodes.length; i < max; ++i) {
        const code = SHCodes[ i ]
        text = '[' + code + ']Code[/' + code + ']'
        actual   = ConvertShortCode(text)
        expected = '\n\n```' + code + '\nCode\n```\n\n'
        assert(actual === expected)
      }
    })
  })

  /** @test {parse} */
  describe('parse', () => {
    const parse = Module.__get__('parse')

    it('parse', () => {
      const text = 'caption id="ID" align="alignright" width="300" caption="Caption"'
      const actual = parse(text)
      assert(actual.code           === 'caption')
      assert(actual.params.id      === 'ID')
      assert(actual.params.align   === 'alignright')
      assert(actual.params.width   === '300')
      assert(actual.params.caption === 'Caption')
    })
  })

  /** @test {trimLineBreak} */
  describe('trimLineBreak', () => {
    const trimLineBreak = Module.__get__('trimLineBreak')

    it('trimLineBreak', () => {
      let actual = trimLineBreak('\nText\n')
      assert(actual === 'Text')

      actual = trimLineBreak('\n\nText\n')
      assert(actual === '\nText')
    })
  })
})