UNPKG

usa-state-legislatures

Version:

This package will return various information about a given state legislature- including number of members, term length, and party division.

173 lines (156 loc) 6 kB
const { stateLegislatureName, stateLegislatureMembers, stateLegislatureTermLength, stateLegislatureTermLengthByChamber, totalStateLegislativeMembers, stateLegislatureMembersByChamber } = require('./stateLegislatures'); describe('State Legislature Info', () => { const stateLegislatureData = [ { input: {name: 'ohio', abbr: 'oh'}, expectedResult: { legislatureName:{ "legislatureName": "General Assembly", "lowerHouse": "House of Representatives", "upperHouse": "Senate" }, legislatureMembers: { "House of Representatives": 99, "Senate": 33 }, totalMembers: { "House of Representatives": 99, "Senate": 33, "totalStateLegislativeMembers": 132 }, legislatureTermLength: { "House of Representatives": "2", "Senate": "4" } } } ]; const errorStateLegislatureData = [ stateLegislatureName, stateLegislatureMembers, stateLegislatureTermLength ]; test.each(stateLegislatureData)('state legislature information is returned successfully - name, member count, and term length',(data) =>{ expect(stateLegislatureName(data.input.abbr)).toEqual(data.expectedResult.legislatureName); expect(stateLegislatureName(data.input.name)).toEqual(data.expectedResult.legislatureName); expect(stateLegislatureMembers(data.input.abbr)).toEqual(data.expectedResult.legislatureMembers); expect(stateLegislatureMembers(data.input.name)).toEqual(data.expectedResult.legislatureMembers); expect(stateLegislatureTermLength(data.input.abbr)).toEqual(data.expectedResult.legislatureTermLength); expect(stateLegislatureTermLength(data.input.name)).toEqual(data.expectedResult.legislatureTermLength); expect(totalStateLegislativeMembers(data.input.abbr)).toEqual(data.expectedResult.totalMembers); expect(totalStateLegislativeMembers(data.input.name)).toEqual(data.expectedResult.totalMembers); }); test.each(errorStateLegislatureData)('when an invalid state is passed, the correct error is thrown',(functionName) =>{ expect(() => {functionName("NotAState")}).toThrow(Error("NotAState is not a valid USA state or USA state abbreviation.")); }); }); describe('stateLegislatureTermLengthByChamber', () => { const termLengthData = [ { input: { state: 'ohio', chamber: 'senate' }, expectedResult: { term: "4", memberCount: 33 } }, { input: { state: 'ohio', chamber: 'house' }, expectedResult: { term: "2", memberCount: 99 } }, { input: { state: 'ohio', chamber: 'upper' }, expectedResult: { term: "4", memberCount: 33 } }, { input: { state: 'ohio', chamber: 'lower' }, expectedResult: { term: "2", memberCount: 99 } }, { input: { state: 'WI', chamber: 'state senate' }, expectedResult: { term: "4", memberCount: 33 } }, { input: { state: 'VA', chamber: 'House of Delegates ' }, expectedResult: { term: "2", memberCount: 100 } }, { input: { state: 'NE', chamber: 'Legislature' }, expectedResult: { term: "4", memberCount: 49 } } ]; const errorTermLengthData = [ { input: { state: 'ohio', chamber: 123 }, expectedResult: Error("number is not a valid type for chamber. Input must be a string.") }, { input: { state: 'ohio', chamber: 'typo' }, expectedResult:Error("typo is not a valid state legislative chamber for Ohio. Please enter either 'House of Representatives' (can also use 'House') or 'Senate' (can also use 'Senate').") }, { input: { state: 'NotAState', chamber: 'upper' }, expectedResult: Error("NotAState is not a valid USA state or USA state abbreviation.") } ]; test.each(termLengthData)('term limit information by chamber is returned successfully',(data) =>{ expect(stateLegislatureTermLengthByChamber(data.input.state, data.input.chamber)).toEqual(data.expectedResult.term); expect(stateLegislatureMembersByChamber(data.input.state, data.input.chamber)).toEqual(data.expectedResult.memberCount); }); test.each(errorTermLengthData)('when an invalid state or chamber is passed, the correct error is thrown',(data) =>{ expect(() => {stateLegislatureTermLengthByChamber(data.input.state, data.input.chamber);}).toThrow(data.expectedResult); expect(() => { stateLegislatureMembersByChamber(data.input.state, data.input.chamber);}).toThrow(data.expectedResult); }); });