UNPKG

cannery-adapter-rest

Version:
114 lines (93 loc) 2.99 kB
'use strict'; var assert = require('assert'); var proxyquire = require('proxyquire'); var Car = require('../__mocks__/car_model.mock'); var RestAdapter = proxyquire('../index', { 'then-request': require('../__mocks__/findAll_request.mock') }); describe('findAll()', function () { it('Should let us use our own url path', function (done) { var adapter = new RestAdapter({}, { Car: { findAll: 'foo/bar/baz' } }); adapter.findAll(Car).then(function (data) { assert.equal(data[0].id, 100); done(); }); }); it('Should respond with an array of data', function (done) { var adapter = new RestAdapter(); adapter.findAll(Car).then(function (data) { assert.equal(data.length, 2); assert.equal(data[0].id, 1); done(); }); }); it('Should allow us to pass in an envelope for nested data', function (done) { var adapter = new RestAdapter({ arrayEnvelope: 'cars' }); adapter.findAll(Car, { envelope: 'cars' }).then(function (data) { assert.equal(data.length, 2); assert.equal(data[1].id, 2); done(); }); }); it('Should catch errors', function (done) { var adapter = new RestAdapter(); adapter.findAll(Car, { throwError: true }).catch(function (data) { assert.equal(data.statusCode, 500); done(); }); }); it('Should allow us to specify a urlRoot', function (done) { var adapter = new RestAdapter({ urlRoot: 'api/v1/' }); adapter.findAll(Car).then(function (data) { assert.equal(data[0].make, 'Pontiac'); done(); }); }); it('Should pass headers included in the adapter config', function (done) { var adapter = new RestAdapter({ headers: { everything: 'cool' } }); adapter.formatFindAllResponse = function (response) { assert.equal(response.headers.everything, 'cool'); done(); }; adapter.findAll(Car); }); it('Should pass headers included in the request options', function (done) { var adapter = new RestAdapter(); adapter.formatFindAllResponse = function (response) { assert.equal(response.headers.part, 'of a team'); done(); }; adapter.findAll(Car, { headers: { part: 'of a team' } }); }); it('Should pass querystring params included in the request options', function (done) { var adapter = new RestAdapter(); adapter.findAll(Car).then(function (data) { done(); }); adapter.findAll(Car, { qs: { type: 'chevy' } }); }); });