tm-apps-list-api
Version:
71 lines (61 loc) • 2.22 kB
JavaScript
const assert = require('chai').assert;
const db = require('tm-apps-db')(require('config').db);
const R = require('ramda');
let rewire = require('rewire');
let app = rewire('../../src/server');
let request = require('supertest');
let config = require('config');
let nock = require('nock');
let server = request(app(config, void 0, db));
const createBasicArticle = id => {
return {
'data': {
'attributes': {
},
'id': id
}
};
};
before(() => {
nock('http://apps-test-endpoint.com')
.persist()
.get(/\/(?:nationals|regionals)\/\d+\/articles\/(\d+)/)
.reply(200, uri => createBasicArticle(R.match(/\/(?:nationals|regionals)\/\d+\/articles\/(\d+)/, uri)[1]));
nock('https://apps-curated-lists-test-endpoint.com')
.persist()
.get(/\/(?:nationals|regionals)\/71/)
.reply(200, () => [1, 3, 2, 6, 4, 5]);
});
after(() => {
nock.restore();
});
describe('Curated Lists Component', function () {
this.timeout(6000);
it('Gets the 6 articles in curated list 71', done => {
server
.get('/nationals/2/curated-lists/71')
.end((err, res) => {
assert.equal(res.header['content-type'], 'application/json; charset=utf-8');
assert.equal(res.body.data.type, 'articles');
assert.equal(res.body.included.length, 6);
const included = res.body.included;
assert.equal(included[0].data.id, 1);
assert.equal(included[1].data.id, 3);
assert.equal(included[2].data.id, 2);
assert.equal(included[3].data.id, 6);
assert.equal(included[4].data.id, 4);
assert.equal(included[5].data.id, 5);
done();
});
});
it('Handles 404s correctly', done => {
server
.get('/nationals/2/curated-lists/6814768416841')
.end((err, res) => {
assert.equal(res.body.message, 'No curated lists found for list /nationals/6814768416841');
assert.equal(res.body.code, 'NotFoundError');
done();
});
});
});
;