Ghost/core/test/unit/middleware/uncapitalise_spec.js

103 lines
3.1 KiB
JavaScript
Raw Normal View History

var sinon = require('sinon'),
should = require('should'),
uncapitalise = require('../../../server/middleware/uncapitalise');
should.equal(true, true);
describe('Middleware: uncapitalise', function () {
var sandbox,
res,
req,
next;
beforeEach(function () {
sandbox = sinon.sandbox.create();
res = sinon.spy();
req = sinon.spy();
next = sinon.spy();
});
afterEach(function () {
sandbox.restore();
});
describe('A signup or reset request', function () {
it('does nothing if there are no capital letters', function (done) {
req.path = '/ghost/signup';
uncapitalise(req, res, next);
next.calledOnce.should.be.true();
done();
});
it('redirects to the lower case slug if there are capital letters', function (done) {
req.path = '/ghost/SignUP';
req.url = 'http://localhost' + req.path;
res = {
redirect: sinon.spy(),
set: sinon.spy()
};
uncapitalise(req, res, next);
next.called.should.be.false();
res.redirect.calledOnce.should.be.true();
res.redirect.calledWith(301, 'http://localhost/ghost/signup').should.be.true();
done();
});
});
describe('An API request', function () {
it('does nothing if there are no capital letters', function (done) {
req.path = '/ghost/api/v0.1';
uncapitalise(req, res, next);
next.calledOnce.should.be.true();
done();
});
it('redirects to the lower case slug if there are capital letters', function (done) {
req.path = '/ghost/api/v0.1/ASDfJ';
req.url = 'http://localhost' + req.path;
res = {
redirect: sinon.spy(),
set: sinon.spy()
};
uncapitalise(req, res, next);
next.called.should.be.false();
res.redirect.calledOnce.should.be.true();
res.redirect.calledWith(301, 'http://localhost/ghost/api/v0.1/asdfj').should.be.true();
done();
});
});
describe('Any other request', function () {
it('does nothing if there are no capital letters', function (done) {
req.path = '/this-is-my-blog-post';
uncapitalise(req, res, next);
next.calledOnce.should.be.true();
done();
});
it('redirects to the lower case slug if there are capital letters', function (done) {
req.path = '/THis-iS-my-BLOg-poSt';
req.url = 'http://localhost' + req.path;
res = {
redirect: sinon.spy(),
set: sinon.spy()
};
uncapitalise(req, res, next);
next.called.should.be.false();
res.redirect.calledOnce.should.be.true();
res.redirect.calledWith(301, 'http://localhost/this-is-my-blog-post').should.be.true();
done();
});
});
});