import {IProcess, Processor} from "../src/lib"; import {data} from "../src/lib/Processor/Processor"; function generateProcesses() { const processA = { id: "processA", run: jest.fn(input => (input).toLowerCase()) } const processB = { id: "processB", run: jest.fn(input => input + input) } const processC = { id: "processC", run: jest.fn(input => (input).split("").reverse().join("")) } return {processA, processB, processC}; } describe("Processor", () => { test("has methods", () => { const processor = new Processor(); const methods = [ "use", "extend", "exclude", "compute" ] for(let method of methods){ expect(processor).toHaveProperty(method) } }) test("mocky processes race", () => { const processor = new Processor(); const {processA, processB, processC} = generateProcesses(); processor.use(processA).use(processB).use(processC); const output = processor.compute("TeSt"); expect(output.length).toEqual("testtest".length); expect(output).toEqual("testtest".split("").reverse().join("")) }) test("extend process", () => { const processor = new Processor(); const {processA, processB, processC} = generateProcesses(); processor.use(processA).use(processB).use(processC); const output = processor.compute("abc"); expect(output).toEqual("cbacba"); processor.extend("processB", (process: IProcess) => { return { get id(){return process.id}, run(input:data){ let output = process.run(input); output = output + output; return output; } } return process; }) const output2 = processor.compute("ab"); expect(output2).toEqual("babababa"); }) })