From 6cfcb4ddf82ce00327105494a78fc27aa691ee8b Mon Sep 17 00:00:00 2001 From: North Date: Thu, 12 May 2016 06:22:29 +0800 Subject: [PATCH] Fix #1755 (#1756) * Add condition at limit = 0 * Add tests for installations with limit and count parameters --- spec/InstallationsRouter.spec.js | 96 ++++++++++++++++++++++++++++++ src/Routers/InstallationsRouter.js | 2 +- 2 files changed, 97 insertions(+), 1 deletion(-) diff --git a/spec/InstallationsRouter.spec.js b/spec/InstallationsRouter.spec.js index 924e799f..82416aa4 100644 --- a/spec/InstallationsRouter.spec.js +++ b/spec/InstallationsRouter.spec.js @@ -71,4 +71,100 @@ describe('InstallationsRouter', () => { done(); }); }); + + it('query installations with limit = 0', (done) => { + var androidDeviceRequest = { + 'installationId': '12345678-abcd-abcd-abcd-123456789abc', + 'deviceType': 'android' + }; + var iosDeviceRequest = { + 'installationId': '12345678-abcd-abcd-abcd-123456789abd', + 'deviceType': 'ios' + }; + var request = { + config: config, + auth: auth.master(config), + body: {}, + query: { + limit: 0 + } + }; + + var router = new InstallationsRouter(); + rest.create(config, auth.nobody(config), '_Installation', androidDeviceRequest) + .then(() => { + return rest.create(config, auth.nobody(config), '_Installation', iosDeviceRequest); + }).then(() => { + return router.handleFind(request); + }).then((res) => { + var response = res.response; + expect(response.results.length).toEqual(0); + done(); + }); + }); + + it('query installations with count = 1', (done) => { + var androidDeviceRequest = { + 'installationId': '12345678-abcd-abcd-abcd-123456789abc', + 'deviceType': 'android' + }; + var iosDeviceRequest = { + 'installationId': '12345678-abcd-abcd-abcd-123456789abd', + 'deviceType': 'ios' + }; + var request = { + config: config, + auth: auth.master(config), + body: {}, + query: { + count: 1 + } + }; + + var router = new InstallationsRouter(); + rest.create(config, auth.nobody(config), '_Installation', androidDeviceRequest) + .then(() => { + return rest.create(config, auth.nobody(config), '_Installation', iosDeviceRequest); + }).then(() => { + return router.handleFind(request); + }).then((res) => { + var response = res.response; + expect(response.results.length).toEqual(2); + expect(response.count).toEqual(2); + done(); + }); + }); + + it('query installations with limit = 0 and count = 1', (done) => { + var androidDeviceRequest = { + 'installationId': '12345678-abcd-abcd-abcd-123456789abc', + 'deviceType': 'android' + }; + var iosDeviceRequest = { + 'installationId': '12345678-abcd-abcd-abcd-123456789abd', + 'deviceType': 'ios' + }; + var request = { + config: config, + auth: auth.master(config), + body: {}, + query: { + limit: 0, + count: 1 + } + }; + + var router = new InstallationsRouter(); + rest.create(config, auth.nobody(config), '_Installation', androidDeviceRequest) + .then(() => { + return rest.create(config, auth.nobody(config), '_Installation', iosDeviceRequest); + }).then(() => { + return router.handleFind(request); + }).then((res) => { + var response = res.response; + expect(response.results.length).toEqual(0); + expect(response.count).toEqual(2); + done(); + }); + }); }); diff --git a/src/Routers/InstallationsRouter.js b/src/Routers/InstallationsRouter.js index 372bba81..4a9efc3f 100644 --- a/src/Routers/InstallationsRouter.js +++ b/src/Routers/InstallationsRouter.js @@ -12,7 +12,7 @@ export class InstallationsRouter extends ClassesRouter { if (body.skip) { options.skip = Number(body.skip); } - if (body.limit) { + if (body.limit || body.limit === 0) { options.limit = Number(body.limit); } if (body.order) {