UNPKG

cspanvideos

Version:

A small api for gathering video information from CSPAN for a particular legislator.

72 lines (70 loc) 10.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chai = require("chai"); const request = require("request"); const src_1 = require("../src"); const dummydata_1 = require("./dummydata"); const expect = chai.expect; describe("cspanvideos", () => { it("Should have the proper url.", () => { expect(src_1.cspanvideos.CSPAN_BASE_URL).to.equal("https://www.c-span.org/person/?"); }); it("Should have the _makeRequest method available", () => { expect(src_1.cspanvideos).to.have.property("_makeRequest"); }); describe("_parseRequestForData", () => { const mockDom = dummydata_1.dummyData().mockCSPANDom; const rp = src_1.cspanvideos._parseRequestForData(mockDom); it("Should detect proper amount of li elements", () => { expect(rp.length).to.be.equal(6); }); it("Should provide proper for each element", () => { expect(rp[0].thumbnail).to.be.a('string'); expect(rp[3].date).to.be.a('string'); expect(rp[4].title).to.be.a('string'); }); }); describe("_isBadURL", () => { it("Should get the proper URL when a bad one is provided", () => { request(src_1.cspanvideos.CSPAN_BAD_URL + "Ted Cruz", (err, response, body) => { const isBadURL = src_1.cspanvideos._isBadURL(body); expect(isBadURL).not.to.be.false; }); }); }); describe("fetchVideoData", () => { it("Should work as expected for a normal name format", (done) => { src_1.cspanvideos.fetchVideoData("Marco Rubio") .then((data) => { expect(data.length).to.be.above(3); expect(data[0].embed_url).to.be.a("string"); }) .then(() => done(), done); }); it("Should work with a weird name format", (done) => { src_1.cspanvideos.fetchVideoData("marcorubio") .then((data) => { expect(data.length).to.be.above(3); expect(data[0].embed_url).to.be.a("string"); }).then(() => done(), done); }); /** * For example, Ted Cruz's name in the url * would be "rcruz". Need to handle that. */ it("Should work with a name that diffs from url", (done) => { src_1.cspanvideos.fetchVideoData("Ted Cruz") .then((data) => { expect(data.length).to.be.above(3); }).then(() => done(), done); }); it("Should work with a nonsense name", (done) => { src_1.cspanvideos.fetchVideoData("aragsseafe") .then((data) => { expect(data instanceof Error).to.be.true; }) .then(() => done(), done); }); }); }); //# sourceMappingURL=data:application/json;charset=utf8;base64,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SSxFQUFFLEVBQUU7WUFDOUMsaUJBQVcsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDO2lCQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDYixNQUFNLENBQUMsSUFBSSxZQUFZLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQzNDLENBQUMsQ0FBQztpQkFDSCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFDIiwiZmlsZSI6InRlc3QvY3BhbnZpZGVvcy5zcGVjLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZGVjbGFyZSB2YXIgcmVxdWlyZTogYW55O1xuZGVjbGFyZSB2YXIgZG9uZTogYW55O1xuXG5pbXBvcnQgKiBhcyBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0ICogYXMgbW9jaGEgZnJvbSAnbW9jaGEnO1xuaW1wb3J0ICogYXMgcmVxdWVzdCBmcm9tICdyZXF1ZXN0JztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcblxuaW1wb3J0IHsgY3NwYW52aWRlb3MgfSBmcm9tICcuLi9zcmMnO1xuaW1wb3J0IHsgZHVtbXlEYXRhIH0gZnJvbSAnLi9kdW1teWRhdGEnO1xuXG5jb25zdCBleHBlY3QgPSBjaGFpLmV4cGVjdDtcblxuXG5kZXNjcmliZShcImNzcGFudmlkZW9zXCIsICgpID0+IHtcblxuICBpdChcIlNob3VsZCBoYXZlIHRoZSBwcm9wZXIgdXJsLlwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNzcGFudmlkZW9zLkNTUEFOX0JBU0VfVVJMKS50by5lcXVhbChcImh0dHBzOi8vd3d3LmMtc3Bhbi5vcmcvcGVyc29uLz9cIik7XG4gIH0pO1xuXG5cbiAgaXQoXCJTaG91bGQgaGF2ZSB0aGUgX21ha2VSZXF1ZXN0IG1ldGhvZCBhdmFpbGFibGVcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChjc3BhbnZpZGVvcykudG8uaGF2ZS5wcm9wZXJ0eShcIl9tYWtlUmVxdWVzdFwiKVxuICB9KTtcblxuXG4gIGRlc2NyaWJlKFwiX3BhcnNlUmVxdWVzdEZvckRhdGFcIiwgKCkgPT4ge1xuICAgIGNvbnN0IG1vY2tEb20gPSBkdW1teURhdGEoKS5tb2NrQ1NQQU5Eb207XG4gICAgY29uc3QgcnAgPSBjc3BhbnZpZGVvcy5fcGFyc2VSZXF1ZXN0Rm9yRGF0YShtb2NrRG9tKTtcblxuICAgIGl0KFwiU2hvdWxkIGRldGVjdCBwcm9wZXIgYW1vdW50IG9mIGxpIGVsZW1lbnRzXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdChycC5sZW5ndGgpLnRvLmJlLmVxdWFsKDYpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJTaG91bGQgcHJvdmlkZSBwcm9wZXIgZm9yIGVhY2ggZWxlbWVudFwiLCAoKSA9PiB7XG4gICAgICBleHBlY3QocnBbMF0udGh1bWJuYWlsKS50by5iZS5hKCdzdHJpbmcnKTtcbiAgICAgIGV4cGVjdChycFszXS5kYXRlKS50by5iZS5hKCdzdHJpbmcnKTtcbiAgICAgIGV4cGVjdChycFs0XS50aXRsZSkudG8uYmUuYSgnc3RyaW5nJyk7XG4gICAgfSlcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJfaXNCYWRVUkxcIiwgKCkgPT4ge1xuICAgIGl0KFwiU2hvdWxkIGdldCB0aGUgcHJvcGVyIFVSTCB3aGVuIGEgYmFkIG9uZSBpcyBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICByZXF1ZXN0KGNzcGFudmlkZW9zLkNTUEFOX0JBRF9VUkwgKyBcIlRlZCBDcnV6XCIsIChlcnI6IEVycm9yLCByZXNwb25zZTogcmVxdWVzdC5SZXF1ZXN0UmVzcG9uc2UsIGJvZHk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBpc0JhZFVSTCA9IGNzcGFudmlkZW9zLl9pc0JhZFVSTChib2R5KTtcblxuICAgICAgICBleHBlY3QoaXNCYWRVUkwpLm5vdC50by5iZS5mYWxzZTtcbiAgICAgIH0pXG4gICAgfSlcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJmZXRjaFZpZGVvRGF0YVwiLCAoKSA9PiB7XG5cbiAgICBpdCAoXCJTaG91bGQgd29yayBhcyBleHBlY3RlZCBmb3IgYSBub3JtYWwgbmFtZSBmb3JtYXRcIiwgKGRvbmUpID0+IHtcbiAgICAgIGNzcGFudmlkZW9zLmZldGNoVmlkZW9EYXRhKFwiTWFyY28gUnViaW9cIilcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGV4cGVjdChkYXRhLmxlbmd0aCkudG8uYmUuYWJvdmUoMyk7XG4gICAgICAgIGV4cGVjdChkYXRhWzBdLmVtYmVkX3VybCkudG8uYmUuYShcInN0cmluZ1wiKTtcbiAgICAgIH0pXG4gICAgICAudGhlbigoKSA9PiBkb25lKCksIGRvbmUpXG4gICAgfSk7XG4gICAgXG4gICAgaXQoXCJTaG91bGQgd29yayB3aXRoIGEgd2VpcmQgbmFtZSBmb3JtYXRcIiwgKGRvbmUpID0+IHtcbiAgICAgIGNzcGFudmlkZW9zLmZldGNoVmlkZW9EYXRhKFwibWFyY29ydWJpb1wiKVxuICAgICAgLnRoZW4oKGRhdGEpID0+IHtcbiAgICAgICAgZXhwZWN0KGRhdGEubGVuZ3RoKS50by5iZS5hYm92ZSgzKVxuICAgICAgICBleHBlY3QoZGF0YVswXS5lbWJlZF91cmwpLnRvLmJlLmEoXCJzdHJpbmdcIik7XG4gICAgICB9KS50aGVuKCgpID0+IGRvbmUoKSwgZG9uZSlcbiAgICB9KTtcbiAgICBcbiAgICAvKipcbiAgICAgKiBGb3IgZXhhbXBsZSwgVGVkIENydXoncyBuYW1lIGluIHRoZSB1cmxcbiAgICAgKiB3b3VsZCBiZSBcInJjcnV6XCIuIE5lZWQgdG8gaGFuZGxlIHRoYXQuXG4gICAgICovXG4gICAgaXQoXCJTaG91bGQgd29yayB3aXRoIGEgbmFtZSB0aGF0IGRpZmZzIGZyb20gdXJsXCIsIChkb25lKSA9PiB7XG4gICAgICBjc3BhbnZpZGVvcy5mZXRjaFZpZGVvRGF0YShcIlRlZCBDcnV6XCIpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGRhdGEubGVuZ3RoKS50by5iZS5hYm92ZSgzKTtcbiAgICAgICAgfSkudGhlbigoKSA9PiBkb25lKCksIGRvbmUpXG4gICAgfSk7XG4gIFxuXG4gICAgaXQoXCJTaG91bGQgd29yayB3aXRoIGEgbm9uc2Vuc2UgbmFtZVwiLCAoZG9uZSkgPT4ge1xuICAgICAgY3NwYW52aWRlb3MuZmV0Y2hWaWRlb0RhdGEoXCJhcmFnc3NlYWZlXCIpXG4gICAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgICAgZXhwZWN0KGRhdGEgaW5zdGFuY2VvZiBFcnJvcikudG8uYmUudHJ1ZTtcbiAgICAgICAgfSlcbiAgICAgIC50aGVuKCgpID0+IGRvbmUoKSwgZG9uZSk7XG4gICAgfSlcbiAgfSlcbn0pO1xuIl19