From 0ff4e627f435a8a9eff5a5902d407264e902814e Mon Sep 17 00:00:00 2001 From: Typicode Date: Mon, 4 May 2015 19:46:12 +0200 Subject: [PATCH] Refactor code and tests --- src/router.js | 17 +++++++++++------ src/utils.js | 9 +-------- test/index.js | 14 ++++---------- test/utils.js | 24 ------------------------ 4 files changed, 16 insertions(+), 48 deletions(-) diff --git a/src/router.js b/src/router.js index 16390f4..4799dd5 100644 --- a/src/router.js +++ b/src/router.js @@ -52,7 +52,7 @@ module.exports = function(source) { // Result array var array - // Remove _start and _end from req.query to avoid filtering using those + // Remove _start, _end and _limit from req.query to avoid filtering using those // parameters var _start = req.query._start var _end = req.query._end @@ -118,13 +118,18 @@ module.exports = function(source) { } // Slice result - _start = _start || 0 - res.setHeader('X-Total-Count', array.length) - res.setHeader('Access-Control-Expose-Headers', 'X-Total-Count') + if (_end || _limit) { + res.setHeader('X-Total-Count', array.length) + res.setHeader('Access-Control-Expose-Headers', 'X-Total-Count') + } + + _start = parseInt(_start) || 0 + if (_end) { - array = array.slice(_start, _end) + array = array.slice(_start, parseInt(_end)) } else if (_limit) { - array = utils.limitArray(array, _start, _limit) + // Convert strings to int and sum to get end value + array = array.slice(_start, parseInt(_start) + parseInt(_limit)) } res.jsonp(array) diff --git a/src/utils.js b/src/utils.js index f5328b1..218cf29 100644 --- a/src/utils.js +++ b/src/utils.js @@ -66,15 +66,8 @@ function getRemovable(db) { return removable } -//Returns limited array -function limitArray(array, start, limit) { - var end = parseInt(start) + parseInt(limit) - return array.slice(start, end) -} - module.exports = { toNative: toNative, createId: createId, - getRemovable: getRemovable, - limitArray: limitArray + getRemovable: getRemovable } \ No newline at end of file diff --git a/test/index.js b/test/index.js index 27251d7..5b02781 100644 --- a/test/index.js +++ b/test/index.js @@ -27,13 +27,7 @@ describe('Server', function() { {id: 2, published: false, postId: 1}, {id: 3, published: false, postId: 2}, {id: 4, published: false, postId: 2}, - {id: 5, published: false, postId: 2}, - {id: 6, published: false, postId: 2}, - {id: 7, published: false, postId: 2}, - {id: 8, published: false, postId: 2}, - {id: 9, published: false, postId: 2}, - {id: 10, published: false, postId: 2}, - {id: 11, published: false, postId: 2} + {id: 5, published: false, postId: 2} ] db.refs = [ @@ -156,11 +150,11 @@ describe('Server', function() { describe('GET /:resource?_start=&_limit=', function() { it('should respond with a limited array', function(done) { request(server) - .get('/comments?_start=5&_limit=3') + .get('/comments?_start=1&_limit=1') .expect('Content-Type', /json/) .expect('x-total-count', db.comments.length.toString()) .expect('Access-Control-Expose-Headers', 'X-Total-Count') - .expect(utils.limitArray(db.comments, 5, 3)) + .expect(db.comments.slice(1, 2)) .expect(200, done) }) }) @@ -298,7 +292,7 @@ describe('Server', function() { .end(function(err, res) { if (err) return done(err) assert.equal(db.posts.length, 1) - assert.equal(db.comments.length, 9) + assert.equal(db.comments.length, 3) done() }) }) diff --git a/test/utils.js b/test/utils.js index 53e9355..2b32698 100644 --- a/test/utils.js +++ b/test/utils.js @@ -46,28 +46,4 @@ describe('utils', function() { }) }) - - describe('limitArray', function() { - it('should return limited array', function() { - var testArray = [ - {id: 2, postId: 2}, - {id: 3, postId: 4}, - {id: 4, postId: 6}, - {id: 5, postId: 8}, - {id: 6, postId: 9}, - {id: 7, postId: 10}, - {id: 8, postId: 11}, - {id: 9, postId: 12}, - {id: 10, postId: 13}, - {id: 11, postId: 14}, - {id: 12, postId: 15}, - {id: 13, postId: 16}, - {id: 14, postId: 17}, - {id: 15, postId: 18}, - {id: 16, postId: 19} - ] - assert.deepEqual(utils.limitArray(testArray, 3, 3), testArray.slice(3, 6)) - assert.deepEqual(utils.limitArray(testArray, 5, 3), testArray.slice(5, 8)) - }) - }) }) \ No newline at end of file