Home Reference Source Test Repository

test/lib/shortcode.test.js

const assert = require( 'power-assert' );
const Shortcode = require( '../../src/lib/shortcode.js' ).Shortcode;
const SHCodes = require( '../../src/lib/shortcode.js' ).SHCodes;

/** @test {Shortcode} */
describe( 'Shortcode', () => {
  /** @test {Shortcode#convert} */
  describe( 'convert', () => {
    it( '[code]', () => {
      const text     = '[code]\nCode\n[/code]';
      const actual   = Shortcode.convert( 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   = Shortcode.convert( text );
      const expected = '\n\n```lang\nCode\n```\n\n';
      assert( actual === expected );
    } );

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

      text     = '[text]\nCode\n[/text]';
      actual   = Shortcode.convert( text );
      assert( actual === expected );

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

  /** @test {Shortcode#parse} */
  describe( 'parse', () => {
    it( 'parse', () => {
      const text   = 'caption id="ID" align="alignright" width="300" caption="Caption"';
      const actual = Shortcode.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 {Shortcode#trimLineBreak} */
  describe( 'trimLineBreak', () => {
    it( 'trimLineBreak', () => {
      let actual = Shortcode.trimLineBreak( '\nText\n' );
      assert( actual === 'Text' );

      actual = Shortcode.trimLineBreak( '\n\nText\n' );
      assert( actual === '\nText' );
    } );
  } );
} );