sluggo
Version:
High-speed, unicode-aware, browser-friendly slug generator
49 lines (48 loc) • 1.85 kB
JavaScript
var assert = require("assert");
describe('sluggo', function() {
var sluggo;
it('should be successfully initialized', function() {
sluggo = require('../sluggo.js');
assert(sluggo);
});
it('slugifies a complex unicode string', function() {
var s = sluggo('@ monkey\'s are elab؉؉orate fools##');
assert.strictEqual(s, 'monkey-s-are-elab-orate-fools');
});
it('slugifies a complex unicode string with allowed punctuation and a different separator', function() {
var s = sluggo('@ monkey\'s are elab؉؉orate fools##', { separator: ',', allow: '؉'});
assert.strictEqual(s, 'monkey,s,are,elab؉؉orate,fools');
});
it('behaves sensibly with existing slugs', function() {
var s = sluggo('monkey-s-are-elab-orate-fools');
assert.strictEqual(s, 'monkey-s-are-elab-orate-fools');
});
it('converts to lowercase', function() {
var s = sluggo('Monkeys Are Elaborate Fools');
assert.strictEqual(s, 'monkeys-are-elaborate-fools');
});
it('behaves sensibly when only the allowed punctuation character is present', function() {
var s = sluggo('/', { allow: '/' });
assert.strictEqual(s, '/');
});
it('fallback default is none', function() {
var s = sluggo('@#(*&@', {});
assert.strictEqual(s, 'none');
var s = sluggo('', {});
assert.strictEqual(s, 'none');
var s = sluggo('test', {});
assert.strictEqual(s, 'test');
});
it('empty string can be passed as default', function() {
var s = sluggo('@#(*&@', { def: '' });
assert.strictEqual(s, '');
var s = sluggo('', { def: '' });
assert.strictEqual(s, '');
var s = sluggo('test', { def: '' });
assert.strictEqual(s, 'test');
});
it('allows an array of exceptions', function () {
var s = sluggo("/@/slug url", { allow: ['/', '@'] })
assert.strictEqual(s, '/@/slug-url')
})
});