UNPKG

@tvkitchen/countertop

Version:

The entry point for developers who want to set up a TV Kitchen.

188 lines (182 loc) 7.62 kB
"use strict"; var _assert = _interopRequireDefault(require("assert")); var _CountertopStream = _interopRequireDefault(require("../CountertopStream")); var _CountertopStation = _interopRequireDefault(require("../CountertopStation")); var _jest = require("../../tools/utils/jest"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } describe('CountertopStream #unit', () => { describe('constructor', () => { it('Should not require tributaries for all inputs', () => { const Appliance = (0, _jest.generateMockAppliance)({ inputTypes: ['bar'], outputTypes: [] }); const station = new _CountertopStation.default(Appliance); const stream = new _CountertopStream.default(station); expect(stream.mouth).toBe(station); expect(stream.source).toBe(null); }); it('Should throw an error when passed irrelevant tributaries', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['bar'], outputTypes: ['baz'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); expect(() => new _CountertopStream.default(stationB, new Map([['foo', streamA]]))).toThrow(_assert.default.AssertionError); }); }); describe('getSource', () => { it('Should return the core station if it is a source station', () => { const Appliance = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: [] }); const station = new _CountertopStation.default(Appliance); const stream = new _CountertopStream.default(station); expect(stream.getSource()).toBe(station); }); it('Should return the source station', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); const streamB = new _CountertopStream.default(stationB, new Map([['foo', streamA]])); expect(streamB.getSource()).toBe(stationA); }); }); describe('getMouth', () => { it('Should return the core station', () => { const Appliance = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: [] }); const station = new _CountertopStation.default(Appliance); const stream = new _CountertopStream.default(station); expect(stream.getMouth()).toBe(station); }); }); describe('getTributaryMap', () => { it('Should return a tributary map', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); const streamB = new _CountertopStream.default(stationB, new Map([['foo', streamA]])); const tributaryMap = streamB.getTributaryMap(); expect(tributaryMap.get('foo')).toBe(streamA); }); }); describe('getTributaryArray', () => { it('Should return a tributary map', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); const streamB = new _CountertopStream.default(stationB, new Map([['foo', streamA]])); const tributaryArray = streamB.getTributaryArray(); expect(tributaryArray).toContain(streamA); }); }); describe('getLength', () => { it('Should have length 1 if it is a source stream', () => { const Appliance = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: [] }); const station = new _CountertopStation.default(Appliance); const stream = new _CountertopStream.default(station); expect(stream.getLength()).toBe(1); }); it('Should have the correct length', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); const streamB = new _CountertopStream.default(stationB, new Map([['foo', streamA]])); expect(streamB.getLength()).toBe(2); }); }); describe('includesStation', () => { it('Should return true if a station is in the stream', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); const streamB = new _CountertopStream.default(stationB, new Map([['foo', streamA]])); expect(streamB.includesStation(stationA)).toBe(true); expect(streamB.includesStation(stationB)).toBe(true); }); it('Should return false if a station is not in the stream', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); expect(streamA.includesStation(stationB)).toBe(false); }); }); describe('getOutputTypes', () => { it('Should return the output types of the mouth station', () => { const ApplianceA = (0, _jest.generateMockAppliance)({ inputTypes: [], outputTypes: ['foo'] }); const ApplianceB = (0, _jest.generateMockAppliance)({ inputTypes: ['foo'], outputTypes: ['bar', 'baz'] }); const stationA = new _CountertopStation.default(ApplianceA); const stationB = new _CountertopStation.default(ApplianceB); const streamA = new _CountertopStream.default(stationA); const streamB = new _CountertopStream.default(stationB, new Map([['foo', streamA]])); expect(streamB.getOutputTypes(stationA)).toEqual(['bar', 'baz']); }); }); });