From b99dc759e6709dffdcfb5da1df6365113f3f32ee Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 4 Mar 2017 19:03:59 +0900 Subject: [Test] Fix test --- test/text.js | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 test/text.js (limited to 'test/text.js') diff --git a/test/text.js b/test/text.js new file mode 100644 index 0000000000..e2527cfe0b --- /dev/null +++ b/test/text.js @@ -0,0 +1,90 @@ +/** + * Text Tests! + */ + +const assert = require('assert'); + +const analyze = require('../src/common/text'); +const syntaxhighlighter = require('../src/common/text/core/syntax-highlighter'); + +describe('Text', () => { + it('is correctly analyzed', () => { + const tokens = analyze('@himawari お腹ペコい :cat: #yryr'); + assert.deepEqual([ + { type: 'mention', content: '@himawari', username: 'himawari' }, + { type: 'text', content: ' お腹ペコい ' }, + { type: 'emoji', content: ':cat:', emoji: 'cat'}, + { type: 'text', content: ' '}, + { type: 'hashtag', content: '#yryr', hashtag: 'yryr' } + ], tokens); + }); + + it('逆関数で正しく復元できる', () => { + const text = '@himawari お腹ペコい :cat: #yryr'; + assert.equal(analyze(text).map(x => x.content).join(''), text); + }); + + describe('elements', () => { + it('bold', () => { + const tokens = analyze('**Strawberry** Pasta'); + assert.deepEqual([ + { type: 'bold', content: '**Strawberry**', bold: 'Strawberry' }, + { type: 'text', content: ' Pasta' } + ], tokens); + }); + + it('mention', () => { + const tokens = analyze('@himawari お腹ペコい'); + assert.deepEqual([ + { type: 'mention', content: '@himawari', username: 'himawari' }, + { type: 'text', content: ' お腹ペコい' } + ], tokens); + }); + + it('hashtag', () => { + const tokens = analyze('Strawberry Pasta #alice'); + assert.deepEqual([ + { type: 'text', content: 'Strawberry Pasta ' }, + { type: 'hashtag', content: '#alice', hashtag: 'alice' } + ], tokens); + }); + + it('link', () => { + const tokens = analyze('https://himasaku.net'); + assert.deepEqual([ + { type: 'link', content: 'https://himasaku.net' } + ], tokens); + }); + + it('emoji', () => { + const tokens = analyze(':cat:'); + assert.deepEqual([ + { type: 'emoji', content: ':cat:', emoji: 'cat'} + ], tokens); + }); + + it('block code', () => { + const tokens = analyze('```\nvar x = "Strawberry Pasta";\n```'); + assert.equal(tokens[0].type, 'code'); + assert.equal(tokens[0].content, '```\nvar x = "Strawberry Pasta";\n```'); + }); + + it('inline code', () => { + const tokens = analyze('`var x = "Strawberry Pasta";`'); + assert.equal(tokens[0].type, 'inline-code'); + assert.equal(tokens[0].content, '`var x = "Strawberry Pasta";`'); + }); + }); + + describe('syntax highlighting', () => { + it('regexp', () => { + const html = syntaxhighlighter('/.*/'); + assert.equal(html, '/.*/'); + }); + + it('slash', () => { + const html = syntaxhighlighter('/'); + assert.equal(html, '/'); + }); + }); +}); -- cgit v1.3.1-freya