You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
197 lines
4.9 KiB
197 lines
4.9 KiB
/* 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(); |
|
}); |
|
|
|
}); |