Skip to content

Commit

Permalink
Add tests for route override
Browse files Browse the repository at this point in the history
  • Loading branch information
fknop committed Dec 22, 2015
1 parent d9a1164 commit 78371ff
Show file tree
Hide file tree
Showing 2 changed files with 158 additions and 7 deletions.
2 changes: 0 additions & 2 deletions lib/ext.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,10 @@ module.exports = function (config) {
return {
onPreHandler: function (request, reply) {


// If the route does not match, just skip this part
if (internals.isValidRoute(request)) {

const routeDefaults = internals.getRouteOptions(request).defaults || {};

const pagination = internals.getPagination(request, config);
request.query[config.query.pagination.name] = pagination;

Expand Down
163 changes: 158 additions & 5 deletions test/test.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const expect = Code.expect;

const pluginName = '../lib';

const users = _.range(1, 20).map((i) => ({
const users = _.range(0, 20).map((i) => ({
name: 'name' + i,
username: 'username' + i
}));
Expand Down Expand Up @@ -41,6 +41,7 @@ const register = () => {
handler: (request, reply) => {
const limit = request.query.limit;
const page = request.query.page;
const pagination = request.query.pagination;

const offset = limit * (page - 1);
const response = [];
Expand All @@ -49,7 +50,12 @@ const register = () => {
response.push(users[i]);
}

return reply.paginate(response, 20);

if (pagination) {
return reply.paginate(response, users.length);
} else {
return reply(users);
}
}
});

Expand Down Expand Up @@ -96,6 +102,7 @@ const register = () => {
handler: (request, reply) => {
const limit = request.query.limit;
const page = request.query.page;
const pagination = request.query.pagination;

const offset = limit * (page - 1);
const response = [];
Expand All @@ -104,7 +111,12 @@ const register = () => {
response.push(users[i]);
}

return reply.paginate(response, 20);

if (pagination) {
return reply.paginate(response, users.length);
} else {
return reply(users);
}
}
});

Expand Down Expand Up @@ -152,6 +164,7 @@ describe('Test with defaults values', () => {
server.inject(request, (res) => {
expect(res.request.query.limit).to.equal(25);
expect(res.request.query.page).to.equal(1);
expect(res.request.response.source.meta.totalCount).to.be.null();

done();
});
Expand Down Expand Up @@ -765,7 +778,7 @@ describe('Custom route options', () => {

describe('Override on route level', () => {

it('Test if overridden values are correct', (done) => {
it('Overriden defaults on route level with pagination to false', (done) => {

const server = register();

Expand All @@ -776,7 +789,29 @@ describe('Override on route level', () => {
method: 'GET',
url: '/defaults'
}, (res) => {
console.log(res.request.query);
expect(res.request.response.source).to.be.an.array();
expect(res.request.response.source).to.have.length(20);
done();
});
});

});

it('Overriden defaults on route level with pagination to true', (done) => {

const server = register();

server.register(require(pluginName), (err) => {
expect(err).to.be.undefined();

server.inject({
method: 'GET',
url: '/defaults?pagination=true'
}, (res) => {
const response = res.request.response.source;
expect(response).to.be.an.object();
expect(response.results).to.have.length(10);
expect(response.meta.totalCount).to.equal(20);
expect(res.request.query.limit).to.equal(10);
expect(res.request.query.page).to.equal(2);
done();
Expand All @@ -785,6 +820,29 @@ describe('Override on route level', () => {

});

it('Overriden defaults on route level with limit and page to 5 and 1', (done) => {

const server = register();

server.register(require(pluginName), (err) => {
expect(err).to.be.undefined();

server.inject({
method: 'GET',
url: '/defaults?pagination=true&page=1&limit=5'
}, (res) => {
const response = res.request.response.source;
expect(response).to.be.an.object();
expect(response.results).to.have.length(5);
expect(response.meta.totalCount).to.equal(20);
expect(res.request.query.limit).to.equal(5);
expect(res.request.query.page).to.equal(1);
done();
});
});

});

});


Expand Down Expand Up @@ -1374,3 +1432,98 @@ describe('Empty result set', () => {
});
});

describe('Override on route level error', () => {

it('Should return an error', (done) => {
const server = register();
server.route({
path: '/error',
method: 'GET',
config: {
plugins: {
pagination: {
defaults: {
limit: 'a'
}
}
},
handler: (request, reply) => reply()
}
});

server.register(require(pluginName), (err) => {
expect(err).to.exists();
done();
});
});

it('Should return an error', (done) => {
const server = register();
server.route({
path: '/error',
method: 'GET',
config: {
plugins: {
pagination: {
defaults: {
page: 'a'
}
}
},
handler: (request, reply) => reply()
}
});

server.register(require(pluginName), (err) => {
expect(err).to.exists();
done();
});
});

it('Should return an error', (done) => {
const server = register();
server.route({
path: '/error',
method: 'GET',
config: {
plugins: {
pagination: {
defaults: {
pagination: 'a'
}
}
},
handler: (request, reply) => reply()
}
});

server.register(require(pluginName), (err) => {
expect(err).to.exists();
done();
});
});

it('Should return an error', (done) => {
const server = register();
server.route({
path: '/error',
method: 'GET',
config: {
plugins: {
pagination: {
enabled: 'a'
}
},
handler: (request, reply) => reply()
}
});

server.register(require(pluginName), (err) => {
expect(err).to.exists();
done();
});
});
});



0 comments on commit 78371ff

Please sign in to comment.