|
|
|
@ -1,10 +1,15 @@
|
|
|
|
import {strict as assert} from 'assert';
|
|
|
|
import * as uvu from 'uvu';
|
|
|
|
import {urlsafeSlugProcessor, unicodeSafeProcessor} from '../../src/utils/slug';
|
|
|
|
import * as assert from 'uvu/assert';
|
|
|
|
import {SLUG_SEPARATOR as _} from '../../config';
|
|
|
|
import {urlsafeSlugProcessor, unicodeSafeProcessor} from '../../src/utils/slug.js';
|
|
|
|
|
|
|
|
import {SLUG_SEPARATOR as _} from '../../config.js';
|
|
|
|
|
|
|
|
|
|
|
|
describe('slug', () => {
|
|
|
|
function run(name, func) {
|
|
|
|
describe('urlsafeSlugProcessor', () => {
|
|
|
|
const suite = uvu.suite(name);
|
|
|
|
describe('ascii', () => {
|
|
|
|
func(suite);
|
|
|
|
|
|
|
|
suite.run();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
run('urlsafeSlugProcessor -> ascii', it => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
urlsafeSlugProcessor('Text expressions'),
|
|
|
|
urlsafeSlugProcessor('Text expressions'),
|
|
|
|
@ -59,8 +64,9 @@ describe('slug', () => {
|
|
|
|
`svelte${_}motion`
|
|
|
|
`svelte${_}motion`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('unicode', () => {
|
|
|
|
|
|
|
|
|
|
|
|
run('urlsafeSlugProcessor - unicode', it => {
|
|
|
|
it('should translate symbols to English', () => {
|
|
|
|
it('should translate symbols to English', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
urlsafeSlugProcessor('Ich ♥ Deutsch'),
|
|
|
|
urlsafeSlugProcessor('Ich ♥ Deutsch'),
|
|
|
|
@ -73,8 +79,9 @@ describe('slug', () => {
|
|
|
|
`Ich${_}Deutsch`
|
|
|
|
`Ich${_}Deutsch`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('cyricllic', () => {
|
|
|
|
|
|
|
|
|
|
|
|
run('urlsafeSlugProcessor -> cyrillic', it => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
urlsafeSlugProcessor('Всплытие и перехват событий'),
|
|
|
|
urlsafeSlugProcessor('Всплытие и перехват событий'),
|
|
|
|
@ -129,21 +136,22 @@ describe('slug', () => {
|
|
|
|
`Vsplytie${_}perehvat`
|
|
|
|
`Vsplytie${_}perehvat`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('ascii + cyricllic', () => {
|
|
|
|
|
|
|
|
|
|
|
|
run('urlsafeSlugProcessor -> ascii + cyrillic', it => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
urlsafeSlugProcessor('Всплытие и export перехват событий'),
|
|
|
|
urlsafeSlugProcessor('Всплытие и export перехват событий'),
|
|
|
|
`Vsplytie${_}i${_}export${_}perehvat${_}sobytij`
|
|
|
|
`Vsplytie${_}i${_}export${_}perehvat${_}sobytij`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
it('ascii word concatenated to a cyricllic word', () => {
|
|
|
|
it('ascii word concatenated to a cyrillic word', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
urlsafeSlugProcessor('exportВсплытие'),
|
|
|
|
urlsafeSlugProcessor('exportВсплытие'),
|
|
|
|
'exportVsplytie'
|
|
|
|
'exportVsplytie'
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
it('cyricllic word concatenated to an ascii word', () => {
|
|
|
|
it('cyrillic word concatenated to an ascii word', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
urlsafeSlugProcessor('Всплытиеexport'),
|
|
|
|
urlsafeSlugProcessor('Всплытиеexport'),
|
|
|
|
`Vsplytieexport`
|
|
|
|
`Vsplytieexport`
|
|
|
|
@ -209,11 +217,9 @@ describe('slug', () => {
|
|
|
|
`Vsplytie${_}export`
|
|
|
|
`Vsplytie${_}export`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
describe('unicodeSafeProcessor (preserve unicode)', () => {
|
|
|
|
run('unicodeSafeProcessor (preserve unicode) -> ascii', it => {
|
|
|
|
describe('ascii', () => {
|
|
|
|
|
|
|
|
it('space separated words', () => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
unicodeSafeProcessor('Text expressions'),
|
|
|
|
unicodeSafeProcessor('Text expressions'),
|
|
|
|
@ -268,8 +274,9 @@ describe('slug', () => {
|
|
|
|
`svelte${_}motion`
|
|
|
|
`svelte${_}motion`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('unicode', () => {
|
|
|
|
|
|
|
|
|
|
|
|
run('unicodeSafeProcessor (preserve unicode) -> unicode', it => {
|
|
|
|
it('should preserve symbols', () => {
|
|
|
|
it('should preserve symbols', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
unicodeSafeProcessor('Ich ♥ Deutsch'),
|
|
|
|
unicodeSafeProcessor('Ich ♥ Deutsch'),
|
|
|
|
@ -282,8 +289,9 @@ describe('slug', () => {
|
|
|
|
`Ich${_}Deutsch`
|
|
|
|
`Ich${_}Deutsch`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('cyricllic', () => {
|
|
|
|
|
|
|
|
|
|
|
|
run('unicodeSafeProcessor (preserve unicode) -> cyrillic', it => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
unicodeSafeProcessor('Всплытие и перехват событий'),
|
|
|
|
unicodeSafeProcessor('Всплытие и перехват событий'),
|
|
|
|
@ -338,21 +346,22 @@ describe('slug', () => {
|
|
|
|
`Всплытие${_}перехват`
|
|
|
|
`Всплытие${_}перехват`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
describe('ascii + cyricllic', () => {
|
|
|
|
|
|
|
|
|
|
|
|
run('unicodeSafeProcessor (preserve unicode) -> ascii + cyrillic', it => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
it('space separated words', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
unicodeSafeProcessor('Всплытие и export перехват событий'),
|
|
|
|
unicodeSafeProcessor('Всплытие и export перехват событий'),
|
|
|
|
`Всплытие${_}и${_}export${_}перехват${_}событий`
|
|
|
|
`Всплытие${_}и${_}export${_}перехват${_}событий`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
it('ascii word concatenated to a cyricllic word', () => {
|
|
|
|
it('ascii word concatenated to a cyrillic word', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
unicodeSafeProcessor('exportВсплытие'),
|
|
|
|
unicodeSafeProcessor('exportВсплытие'),
|
|
|
|
`export${_}Всплытие`
|
|
|
|
`export${_}Всплытие`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
it('cyricllic word concatenated to an ascii word', () => {
|
|
|
|
it('cyrillic word concatenated to an ascii word', () => {
|
|
|
|
assert.equal(
|
|
|
|
assert.equal(
|
|
|
|
unicodeSafeProcessor('Всплытиеexport'),
|
|
|
|
unicodeSafeProcessor('Всплытиеexport'),
|
|
|
|
`Всплытие${_}export`
|
|
|
|
`Всплытие${_}export`
|
|
|
|
@ -418,6 +427,4 @@ describe('slug', () => {
|
|
|
|
`Всплытие${_}export`
|
|
|
|
`Всплытие${_}export`
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|