cannery-adapter-rest
Version:
The Cannery REST adapter
114 lines (93 loc) • 2.99 kB
JavaScript
;
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'
}
});
});
});