Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
mfm.ts 29.55 KiB
/*
 * Tests of MFM
 *
 * How to run the tests:
 * > npx mocha test/mfm.ts --require ts-node/register
 *
 * To specify test:
 * > npx mocha test/mfm.ts --require ts-node/register -g 'test name'
 *
 * If the tests not start, try set following enviroment variables:
 * TS_NODE_FILES=true and TS_NODE_TRANSPILE_ONLY=true
 * for more details, please see: https://github.com/TypeStrong/ts-node/issues/754
 */

import * as assert from 'assert';

import { parse, parsePlain } from '../src/mfm/parse';
import { toHtml } from '../src/mfm/toHtml';
import { createTree as tree, createLeaf as leaf, MfmTree } from '../src/mfm/prelude';
import { removeOrphanedBrackets } from '../src/mfm/language';

function text(text: string): MfmTree {
	return leaf('text', { text });
}

describe('createLeaf', () => {
	it('creates leaf', () => {
		assert.deepStrictEqual(leaf('text', { text: 'abc' }), {
			node: {
				type: 'text',
				props: {
					text: 'abc'
				}
			},
			children: [],
		});
	});
});

describe('createTree', () => {
	it('creates tree', () => {
		const t = tree('tree', [
			leaf('left', { a: 2 }),
			leaf('right', { b: 'hi' })
		], {
				c: 4
			});
		assert.deepStrictEqual(t, {
			node: {
				type: 'tree',
				props: {
					c: 4
				}
			},
			children: [
				leaf('left', { a: 2 }),
				leaf('right', { b: 'hi' })
			],
		});
	});
});

describe('removeOrphanedBrackets', () => {
	it('single (contained)', () => {
		const input = '(foo)';
		const expected = '(foo)';
		const actual = removeOrphanedBrackets(input);
		assert.deepStrictEqual(actual, expected);
	});