diff --git a/packages/backend/test/tests/mfm.ts b/packages/backend/test/tests/mfm.ts deleted file mode 100644 index 884f39d7f..000000000 --- a/packages/backend/test/tests/mfm.ts +++ /dev/null @@ -1,89 +0,0 @@ -import * as assert from 'assert'; -import * as mfm from 'mfm-js'; - -import { toHtml } from '../../src/mfm/to-html.js'; -import { fromHtml } from '../../src/mfm/from-html.js'; - -describe('toHtml', () => { - test('br', () => { - const input = 'foo\nbar\nbaz'; - const output = '
foo
bar
baz
foo
bar
baz
a
b
'), 'a\n\nb'); - }); - - test('block element', () => { - assert.deepStrictEqual(fromHtml('a\nb
'), '```\na\nb\n```');
- });
-
- test('inline code', () => {
- assert.deepStrictEqual(fromHtml('a
'), '`a`');
- });
-
- test('quote', () => {
- assert.deepStrictEqual(fromHtml('a\nb'), '> a\n> b'); - }); - - test('br', () => { - assert.deepStrictEqual(fromHtml('
abc
d
a c d
'), 'a [c](https://example.com/b) d'); - }); - - test('link with different text, but not encoded', () => { - assert.deepStrictEqual(fromHtml('a c d
'), 'a [c](a c d
'), 'a [c](b) d'); - }); - - test('link without href', () => { - assert.deepStrictEqual(fromHtml('a c d
'), 'a c d'); - }); - - test('link without text', () => { - assert.deepStrictEqual(fromHtml(''), 'a https://example.com/b d'); - }); - - test('link without both', () => { - assert.deepStrictEqual(fromHtml(''), 'a d'); - }); - - test('mention', () => { - assert.deepStrictEqual(fromHtml('a @user d
'), 'a @user@example.com d'); - }); - - test('hashtag', () => { - assert.deepStrictEqual(fromHtml('a #a d
', ['#a']), 'a #a d'); - }); -}); diff --git a/packages/backend/test/tests/extract-mentions.ts b/packages/backend/test/unit/extract-mentions.ts similarity index 81% rename from packages/backend/test/tests/extract-mentions.ts rename to packages/backend/test/unit/extract-mentions.ts index e81d04c2d..66d32be1c 100644 --- a/packages/backend/test/tests/extract-mentions.ts +++ b/packages/backend/test/unit/extract-mentions.ts @@ -1,11 +1,11 @@ import * as assert from 'assert'; import { parse } from 'mfm-js'; -import { extractMentions } from '../../src/misc/extract-mentions.js'; +import { extractMentions } from '@/misc/extract-mentions.js'; describe('Extract mentions', () => { test('simple', () => { - const ast = parse('@foo @bar @baz')!; + const ast = parse('@foo @bar @baz'); const mentions = extractMentions(ast); assert.deepStrictEqual(mentions, [{ username: 'foo', @@ -23,7 +23,7 @@ describe('Extract mentions', () => { }); test('nested', () => { - const ast = parse('@foo **@bar** @baz')!; + const ast = parse('@foo **@bar** @baz'); const mentions = extractMentions(ast); assert.deepStrictEqual(mentions, [{ username: 'foo', diff --git a/packages/backend/test/unit/mfm.ts b/packages/backend/test/unit/mfm.ts new file mode 100644 index 000000000..d7ef14dfa --- /dev/null +++ b/packages/backend/test/unit/mfm.ts @@ -0,0 +1,109 @@ +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('toHtml', () => { + let mfmService: MfmService; + + beforeEach(async () => { + const app = await Test.createTestingModule({ + imports: [GlobalModule, CoreModule], + }).compile(); + mfmService = app.getfoo
bar
baz
foo
bar
baz
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'); + }); +});