/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import * as assert from 'assert';
import * as mfm from 'mfm-js';
import { Test } from '@nestjs/testing';
import { CoreModule } from '@/core/CoreModule.js';
import { MfmService } from '@/core/MfmService.js';
import { GlobalModule } from '@/GlobalModule.js';
describe('MfmService', () => {
let mfmService: MfmService;
beforeAll(async () => {
const app = await Test.createTestingModule({
imports: [GlobalModule, CoreModule],
}).compile();
mfmService = app.get foo foo foo bar Hello, world!
bar
baz
bar
baz<p>Hello, world!</p>
a
b
'), 'a\n\nb'); }); test('block element', () => { assert.deepStrictEqual(mfmService.fromHtml('a\nb
'), '```\na\nb\n```');
});
test('inline code', () => {
assert.deepStrictEqual(mfmService.fromHtml('a
'), '`a`');
});
test('quote', () => {
assert.deepStrictEqual(mfmService.fromHtml('a\nb'), '> a\n> b'); }); test('br', () => { assert.deepStrictEqual(mfmService.fromHtml('
abc
d
a c d
'), 'a [c](https://example.com/b) d'); }); test('link with different text, but not encoded', () => { assert.deepStrictEqual(mfmService.fromHtml('a c d
'), 'a [c](a c d
'), 'a [c](b) d'); }); test('link without href', () => { assert.deepStrictEqual(mfmService.fromHtml('a c d
'), 'a c d'); }); test('link without text', () => { assert.deepStrictEqual(mfmService.fromHtml(''), 'a https://example.com/b d'); }); test('link without both', () => { assert.deepStrictEqual(mfmService.fromHtml(''), 'a d'); }); test('mention', () => { assert.deepStrictEqual(mfmService.fromHtml('a @user d
'), 'a @user@example.com d'); }); test('hashtag', () => { assert.deepStrictEqual(mfmService.fromHtml('a #a d
', ['#a']), 'a #a d'); }); }); });