import { Pipeline } from '@ephox/agar'; import { UnitTest } from '@ephox/bedrock'; import { LegacyUnit, TinyLoader } from '@ephox/mcagar'; import Plugin from 'tinymce/plugins/wordcount/Plugin'; import Theme from 'tinymce/themes/modern/Theme'; UnitTest.asynctest('browser.tinymce.plugins.wordcount.ApiTest', function () { const success = arguments[arguments.length - 2]; const failure = arguments[arguments.length - 1]; const suite = LegacyUnit.createSuite(); Plugin(); Theme(); suite.test('Blank document has 0 words', function (editor) { editor.setContent(''); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 0); }); suite.test('Simple word count', function (editor) { editor.setContent('
My sentence is this.
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 4); }); suite.test('Does not count dashes', function (editor) { editor.setContent('Something -- ok
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 2); }); suite.test('Does not count asterisks, non-word characters', function (editor) { editor.setContent('* something\n\u00b7 something else
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 3); }); suite.test('Does count numbers', function (editor) { editor.setContent('Something 123 ok
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 3); }); suite.test('Does not count htmlentities', function (editor) { editor.setContent('It’s my life – – – don\'t you forget.
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 6); }); suite.test('Counts hyphenated words as one word', function (editor) { editor.setContent('Hello some-word here.
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 3); }); suite.test('Counts words between blocks as two words', function (editor) { editor.setContent('Hello
world
'); const result = editor.plugins.wordcount.getCount(); LegacyUnit.equal(result, 2); }); TinyLoader.setup(function (editor, onSuccess, onFailure) { Pipeline.async({}, suite.toSteps(editor), onSuccess, onFailure); }, { plugins: 'wordcount', skin_url: '/project/js/tinymce/skins/lightgray' }, success, failure); });