const auth = require('../lib/Auth'); const Config = require('../lib/Config'); const rest = require('../lib/rest'); const InstallationsRouter = require('../lib/Routers/InstallationsRouter').InstallationsRouter; describe('InstallationsRouter', () => { it('uses find condition from request.body', (done) => { const config = Config.get('test'); const androidDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abc', 'deviceType': 'android' }; const iosDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abd', 'deviceType': 'ios' }; const request = { config: config, auth: auth.master(config), body: { where: { deviceType: 'android' } }, query: {}, info: {} }; const 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) => { const 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) => { const config = Config.get('test'); const androidDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abc', 'deviceType': 'android' }; const iosDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abd', 'deviceType': 'ios' }; const request = { config: config, auth: auth.master(config), body: {}, query: { where: { deviceType: 'android' } }, info: {} }; const 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) => { const results = res.response.results; expect(results.length).toEqual(1); done(); }).catch((err) => { jfail(err); done(); }); }); it('query installations with limit = 0', (done) => { const config = Config.get('test'); const androidDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abc', 'deviceType': 'android' }; const iosDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abd', 'deviceType': 'ios' }; const request = { config: config, auth: auth.master(config), body: {}, query: { limit: 0 }, info: {} }; Config.get('test'); const 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) => { const response = res.response; expect(response.results.length).toEqual(0); done(); }).catch((err) => { fail(JSON.stringify(err)); done(); }); }); it('query installations with count = 1', done => { const config = Config.get('test'); const androidDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abc', 'deviceType': 'android' }; const iosDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abd', 'deviceType': 'ios' }; const request = { config: config, auth: auth.master(config), body: {}, query: { count: 1 }, info: {} }; const 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) => { const 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) => { const config = Config.get('test'); const androidDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abc', 'deviceType': 'android' }; const iosDeviceRequest = { 'installationId': '12345678-abcd-abcd-abcd-123456789abd', 'deviceType': 'ios' }; const request = { config: config, auth: auth.master(config), body: {}, query: { limit: 0, count: 1 }, info: {} }; const 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) => { const response = res.response; expect(response.results.length).toEqual(0); expect(response.count).toEqual(2); done(); }).catch((err) => { fail(JSON.stringify(err)); done(); }); }); });