/* global describe,it */ var getSlug = require('../lib/speakingurl'); describe('getSlug create', function () { 'use strict'; it('with symbols', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ lang: 'en', uric: true, uricNoSlash: true, mark: true }); getSlug('Foo (♥) ; Baz=Bar') .should.eql('foo-(love)-;-baz=bar'); done(); }); it('without options', function (done) { var getSlug = require('../lib/speakingurl') .createSlug(); getSlug('Foo Bar Baz') .should.eql('foo-bar-baz'); done(); }); it('with empty options', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({}); getSlug('Foo Bar Baz') .should.eql('foo-bar-baz'); done(); }); it('with maintainCase', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ maintainCase: true }); getSlug('Foo Bar Baz') .should.eql('Foo-Bar-Baz'); done(); }); it('with uric', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ uric: true }); getSlug(' :80:/Foo/Bar/Baz:Foo') .should.eql(':80:/foo/bar/baz:foo'); done(); }); it('with uricNoSlash', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ uricNoSlash: true }); getSlug('Foo/ Bar= Baz') .should.eql('foo-bar=-baz'); done(); }); it('with mark', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ mark: true }); getSlug('Foo* Bar Baz') .should.eql('foo*-bar-baz'); done(); }); it('with truncate', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ truncate: 15 }); getSlug('Foo* Foobar FooBarBaz') .should.eql('foo-foobar'); done(); }); it('with separator', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ separator: '_' }); getSlug('Foo* Foobar FooBarBaz') .should.eql('foo_foobar_foobarbaz'); done(); }); it('with mark and maintainCase', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ mark: true, maintainCase: true }); getSlug('Foo* Bar Baz') .should.eql('Foo*-Bar-Baz'); done(); }); it('with custom chars replacement', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { '*': 'o' } }); getSlug('xyl*ph*n') .should.eql('xylophon'); done(); }); it('with custom chars leet replacement', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { 'a': '4', 'b': '8', 'e': '3', 'g': '6', 'l': '1', 'o': '0', 's': '5', 't': '7' }, lang: false }); getSlug('apbpepgplpopspt') .should.eql('4p8p3p6p1p0p5p7'); getSlug('papbpepgplpopsptp') .should.eql('p4p8p3p6p1p0p5p7p'); getSlug('qabqegqloqst') .should.eql('q48q36q10q57'); getSlug('abeglost') .should.eql('48361057'); done(); }); it('with custom chars replacement with not allowed target char', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { 'o': '*' } }); getSlug('xylophon') .should.eql('xyl-ph-n'); done(); }); it('with custom chars replacement with allowed target char, option mark', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { 'o': '*' }, mark: true }); getSlug('xylophon') .should.eql('xyl*ph*n'); done(); }); it('with custom chars replacement with option mark', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { '*': 'o' }, mark: true }); getSlug('xyl*ph*n') .should.eql('xylophon'); done(); }); it('with custom char to string replacement', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { '*': 'STAR', 'q': 'qqq', 'and': '', 'or': '' } }); getSlug('xyl*ph*n') .should.eql('xylstarphstarn'); getSlug('quack') .should.eql('qqquack'); getSlug('Foo and Bar or Baz') .should.eql('foo-bar-baz'); done(); }); it('with custom string replacement', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { 'and': 'und', 'or': 'oder', '*': ' and ' } }); getSlug('bus and train') .should.eql('bus-und-train'); getSlug('bus or train') .should.eql('bus-oder-train'); getSlug('busandtrain') .should.eql('busandtrain'); getSlug('busortrain') .should.eql('busortrain'); getSlug('bus*train') .should.eql('bus-and-train'); getSlug('bus and train bus and train') .should.eql('bus-und-train-bus-und-train'); getSlug('bus or train bus or train') .should.eql('bus-oder-train-bus-oder-train'); getSlug('busandtrain busandtrain') .should.eql('busandtrain-busandtrain'); getSlug('busortrain busortrain') .should.eql('busortrain-busortrain'); done(); }); it('with custom string replacement with option mark', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { '*': 'STAR', 'q': 'qqq', 'z': '' }, mark: true }); getSlug('xyl*ph*n') .should.eql('xylstarphstarn'); getSlug('qxxx') .should.eql('qqqxxx'); getSlug('xxxqxxx') .should.eql('xxxqqqxxx'); getSlug('qqq') .should.eql('qqqqqqqqq'); getSlug('*q*') .should.eql('starqqqstar'); getSlug('zoo') .should.eql('oo'); getSlug('zooz') .should.eql('oo'); done(); }); it('with custom string replacement with option maintainCase', function (done) { var getSlug = require('../lib/speakingurl') .createSlug({ custom: { '*': 'STAR', 'q': 'qqq', }, maintainCase: true }); getSlug('xyl*ph*n') .should.eql('xylSTARphSTARn'); getSlug('qXXX') .should.eql('qqqXXX'); getSlug('qqq') .should.eql('qqqqqqqqq'); getSlug('*q*') .should.eql('STARqqqSTAR'); done(); }); });