diff --git a/src/testing/mocks/middleware/block.ts b/src/testing/mocks/middleware/block.ts new file mode 100644 index 000000000..637ca388e --- /dev/null +++ b/src/testing/mocks/middleware/block.ts @@ -0,0 +1,24 @@ +import { create } from '../../../core/vdom'; +import { DefaultMiddlewareResult } from '../../../core/interfaces'; + +const factory = create(); + +export function createBlockMock(blocks: [Function, any][] = []) { + const blocksMockMap = new Map(blocks); + const mockBlockMiddleware = factory(() => { + return (block: any) => { + const mock = blocksMockMap.get(block); + if (mock) { + return mock; + } + return (() => {}) as any; + }; + }); + + function mockBlock(): DefaultMiddlewareResult { + return mockBlockMiddleware(); + } + return mockBlock; +} + +export default createBlockMock; diff --git a/tests/testing/unit/mocks/middleware/all.ts b/tests/testing/unit/mocks/middleware/all.ts index d237b4887..5a28e381b 100644 --- a/tests/testing/unit/mocks/middleware/all.ts +++ b/tests/testing/unit/mocks/middleware/all.ts @@ -6,3 +6,4 @@ import './store'; import './breakpoint'; import './icache'; import './validity'; +import './block'; diff --git a/tests/testing/unit/mocks/middleware/block.tsx b/tests/testing/unit/mocks/middleware/block.tsx new file mode 100644 index 000000000..7d04ba564 --- /dev/null +++ b/tests/testing/unit/mocks/middleware/block.tsx @@ -0,0 +1,64 @@ +const { it } = intern.getInterface('bdd'); +const { describe } = intern.getPlugin('jsdom'); +import createBlockMock from '../../../../../src/testing/mocks/middleware/block'; +import block from '../../../../../src/core/middleware/block'; +import { tsx, create } from '../../../../../src/core/vdom'; +import renderer, { assertion } from '../../../../../src/testing/renderer'; + +describe('block mock', () => { + it('should mock block middleware calls', () => { + function func() { + return null; + } + const blockMock = createBlockMock([[func, () => 'func result']]); + const factory = create({ block }); + const App = factory(({ middleware: { block } }) => { + const blockResult = block(func)(); + return