/* global describe,it */

var getSlug = require('../lib/speakingurl');

describe('getSlug separator', function () {
    'use strict';

    it('should separate with non-whitespace', function (done) {

        getSlug('Foo Bar Baz', {
                separator: '-'
            })
            .should.eql('foo-bar-baz');

        getSlug('Foo Bar Baz', {
                separator: '*'
            })
            .should.eql('foo*bar*baz');

        getSlug('Foo Bar Baz', {
                separator: '_'
            })
            .should.eql('foo_bar_baz');

        getSlug('Foo Bar Baz', '-')
            .should.eql('foo-bar-baz');

        getSlug('Foo Bar Baz', '*')
            .should.eql('foo*bar*baz');

        getSlug('Foo Bar Baz', '_')
            .should.eql('foo_bar_baz');

        done();

    });

    it('should separate with non-whitespace, with trailing spaces', function (done) {

        getSlug(' Foo Bar Baz ', {
                separator: '-'
            })
            .should.eql('foo-bar-baz');

        getSlug('  Foo Bar Baz  ', {
                separator: '*'
            })
            .should.eql('foo*bar*baz');

        getSlug('   Foo Bar Baz   ', {
                separator: '_'
            })
            .should.eql('foo_bar_baz');

        getSlug(' Foo Bar Baz ', '-')
            .should.eql('foo-bar-baz');

        getSlug('  Foo Bar Baz  ', '*')
            .should.eql('foo*bar*baz');

        getSlug('   Foo Bar Baz   ', '_')
            .should.eql('foo_bar_baz');

        done();

    });

    it('should separate with trailing separator "-"', function (done) {

        getSlug('-Foo Bar Baz-', {
                separator: '-'
            })
            .should.eql('foo-bar-baz');

        getSlug('--Foo Bar Baz---', {
                separator: '-'
            })
            .should.eql('foo-bar-baz');

        getSlug('---Foo Bar Baz---', {
                separator: '-'
            })
            .should.eql('foo-bar-baz');

        getSlug('-Foo Bar Baz-', '-')
            .should.eql('foo-bar-baz');

        getSlug('--Foo Bar Baz---', '-')
            .should.eql('foo-bar-baz');

        getSlug('---Foo Bar Baz---', '-')
            .should.eql('foo-bar-baz');

        done();
    });

    it('should separate with trailing separator "*"', function (done) {

        getSlug('*Foo Bar Baz*', {
                separator: '*'
            })
            .should.eql('foo*bar*baz');

        getSlug('**Foo Bar Baz**', {
                separator: '*'
            })
            .should.eql('foo*bar*baz');

        getSlug('***Foo Bar Baz***', {
                separator: '*'
            })
            .should.eql('foo*bar*baz');

        getSlug('*Foo Bar Baz*', '*')
            .should.eql('foo*bar*baz');

        getSlug('**Foo Bar Baz**', '*')
            .should.eql('foo*bar*baz');

        getSlug('***Foo Bar Baz***', '*')
            .should.eql('foo*bar*baz');

        done();

    });

    it('should separate with trailing separator "_"', function (done) {

        getSlug('_Foo Bar Baz_', {
                separator: '_'
            })
            .should.eql('foo_bar_baz');

        getSlug('__Foo Bar Baz__', {
                separator: '_'
            })
            .should.eql('foo_bar_baz');

        getSlug('___Foo Bar Baz___', {
                separator: '_'
            })
            .should.eql('foo_bar_baz');

        getSlug('_Foo Bar Baz_', '_')
            .should.eql('foo_bar_baz');

        getSlug('__Foo Bar Baz__', '_')
            .should.eql('foo_bar_baz');

        getSlug('___Foo Bar Baz___', '_')
            .should.eql('foo_bar_baz');

        done();
    });

    it('should remove trailing separator "*"', function (done) {

        getSlug(' C\'est un beau titre qui ne laisse rien à désirer !', {
                separator: '*'
            })
            .should.eql(
                'c*est*un*beau*titre*qui*ne*laisse*rien*a*desirer');

        getSlug(' C\'est un beau titre qui ne laisse rien à désirer !',
                '*')
            .should.eql(
                'c*est*un*beau*titre*qui*ne*laisse*rien*a*desirer');

        done();

    });

    it('should return empty string because of non string input', function (done) {

        getSlug(true)
            .should.eql('');

        done();

    });
});
