/* global describe,it */ var getSlug = require('../lib/speakingurl'); describe('getSlug config combinations', function () { 'use strict'; it('should separate with configured character, with non-Base64 separator', function (done) { getSlug('Foo, Bar Baz', { separator: '*', maintainCase: false }) .should.eql('foo*bar*baz'); getSlug('Foo- Bar Baz', { separator: '*', maintainCase: false }) .should.eql('foo-*bar*baz'); getSlug('Foo] Bar Baz', { separator: '*', maintainCase: false }) .should.eql('foo*bar*baz'); done(); }); it('should separate with configured character, with only Base64 characters allowed', function (done) { getSlug('Foo, Bar Baz', { separator: '_', onlyBase64: true }) .should.eql('foo_bar_baz'); getSlug('Foo- Bar Baz', { separator: '_', onlyBase64: true }) .should.eql('foo-_bar_baz'); getSlug('Foo] Bar Baz', { separator: '_', onlyBase64: true }) .should.eql('foo_bar_baz'); done(); }); it('should separate with configured character, with smart trim', function (done) { getSlug('Foobarbaz, Bar Baz', { separator: '_', truncate: 12 }) .should.eql('foobarbaz'); getSlug('Foobarbaz, Bar Baz', { separator: '_', truncate: 15 }) .should.eql('foobarbaz_bar'); getSlug(' Foobarbaz, Bar Baz', { separator: '_', truncate: 15 }) .should.eql('foobarbaz_bar'); getSlug(' Foobarbaz, Bar Baz', { separator: '_', truncate: 15 }) .should.eql('foobarbaz_bar'); done(); }); it('should maintain case characters, with non-Base64 separator', function (done) { getSlug('Foo, Bar Baz', { maintainCase: true, separator: '*' }) .should.eql('Foo*Bar*Baz'); getSlug('Foo- Bar Baz', { maintainCase: true, separator: '*' }) .should.eql('Foo-*Bar*Baz'); getSlug('Foo] Bar Baz', { maintainCase: true, separator: '*' }) .should.eql('Foo*Bar*Baz'); done(); }); it('should maintain case characters, with only Base64 characters allowed', function (done) { getSlug('Foo, Bar Baz', { maintainCase: true, uric: false, uricNoSlash: false, mark: false }) .should.eql('Foo-Bar-Baz'); getSlug('Foo- Bar Baz', { maintainCase: true, uric: false, uricNoSlash: false, mark: false }) .should.eql('Foo-Bar-Baz'); getSlug('Foo] Bar Baz', { maintainCase: true, uric: false, uricNoSlash: false, mark: false }) .should.eql('Foo-Bar-Baz'); done(); }); it('should maintain case characters, with smart trim', function (done) { getSlug('Foobarbaz, Bar Baz', { maintainCase: true, truncate: 12 }) .should.eql('Foobarbaz'); getSlug('Foobarbaz, Bar Baz', { maintainCase: true, truncate: 15 }) .should.eql('Foobarbaz-Bar'); getSlug(' Foobarbaz, Bar Baz', { maintainCase: true, truncate: 15 }) .should.eql('Foobarbaz-Bar'); getSlug(' Foobarbaz, Bar Baz', { maintainCase: true, truncate: 15 }) .should.eql('Foobarbaz-Bar'); done(); }); it('should prefer Base64 characters only', function (done) { getSlug('Foo, Bar Baz', { uric: false, uricNoSlash: false, mark: false }) .should.eql('foo-bar-baz'); getSlug('Foo- Bar Baz', { uric: false, uricNoSlash: false, mark: false }) .should.eql('foo-bar-baz'); getSlug('Foo] Bar Baz', { uric: false, uricNoSlash: false, mark: false }) .should.eql('foo-bar-baz'); getSlug('Foo* Bar Baz', { uric: false, uricNoSlash: false, mark: false }) .should.eql('foo-bar-baz'); done(); }); });