var auth = require('../src/Auth'); var Config = require('../src/Config'); var rest = require('../src/rest'); var InstallationsRouter = require('../src/Routers/InstallationsRouter').InstallationsRouter; describe('InstallationsRouter', () => { it('uses find condition from request.body', (done) => { var config = new Config('test'); 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: { where: { deviceType: 'android' } }, query: {}, info: {} }; 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 results = res.response.results; expect(results.length).toEqual(1); done(); }).catch((err) => { fail(JSON.stringify(err)); done(); }); }); it('uses find condition from request.query', (done) => { var config = new Config('test'); 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: { where: { deviceType: 'android' } }, info: {} }; 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 results = res.response.results; expect(results.length).toEqual(1); done(); }).catch((err) => { jfail(err); done(); }); }); it('query installations with limit = 0', (done) => { var config = new Config('test'); 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 }, info: {} }; var config = new Config('test'); 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(); }).catch((err) => { fail(JSON.stringify(err)); done(); }); }); it('query installations with count = 1', done => { var config = new Config('test'); 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 }, info: {} }; var router = new InstallationsRouter(); rest.create(config, auth.nobody(config), '_Installation', androidDeviceRequest) .then(() => rest.create(config, auth.nobody(config), '_Installation', iosDeviceRequest)) .then(() => router.handleFind(request)) .then((res) => { var response = res.response; expect(response.results.length).toEqual(2); expect(response.count).toEqual(2); done(); }) .catch(error => { fail(JSON.stringify(error)); done(); }) }); it('query installations with limit = 0 and count = 1', (done) => { var config = new Config('test'); 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 }, info: {} }; 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(); }).catch((err) => { fail(JSON.stringify(err)); done(); }); }); });