UNPKG

tm-apps-list-api

Version:

85 lines (69 loc) 2.36 kB
"use strict"; let assert = require("chai").assert; let nock = require("nock"); let config = require("config"); let R = require("ramda"); let rewire = require("rewire"); let request = require("supertest"); let sinon = require("sinon"); let app = rewire("../../src/server"); const dynamodbData = { "Id": "regionals.1", "Area": "topStories-0", "ArticleIds": R.range(0, 40) }; let db = { "query": sinon.stub().callsArgWith(1, null, {Items: [dynamodbData]}) }; let server = request(app(config, db)); const createBasicArticle = id => { return { "data": { "id": id, "attributes": {} } }; }; 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])); }); after(() => { nock.restore(); }); describe("Pools Component", function () { beforeEach(() => { db.query.reset(); }); it("gets by section id", done => { server .get("/regionals/1/pool/1/top-stories-0") .end((err, res) => { assert.equal(db.query.callCount, 1); const attrs = db.query.firstCall.args[0].ExpressionAttributeValues; assert.equal(attrs[":hkey"], "regionals.1"); assert.equal(attrs[":rkey"], "top-stories-0"); assert.equal(res.header['content-type'], 'application/json; charset=utf-8'); assert.equal(res.body.data.type, "articles"); assert.equal(res.body.included.length, 40); res.body.included.forEach((item, i) => { assert.equal(item.data.id, i); }); done(); }); }); it("section doesn't exist", done => { db.query.callsArgWith(1, null, {Items: []}); server .get("/regionals/1/pool/1/top-stories-0") .end((err, res) => { assert.equal(res.error.status, 404); assert.equal(res.body.code, "NotFoundError"); assert.equal(res.body.message, "No pools found for /regionals/1/pool/1/"); assert.equal(db.query.callCount, 1); done(); }); }); });