From 1680f5fc9df2e15f909bb55c03b8c82d98567c85 Mon Sep 17 00:00:00 2001 From: Anna Frankova Date: Fri, 19 Jul 2024 15:07:00 +0200 Subject: [PATCH 1/3] plugin-select-readme Describe how to mock a selector return value --- packages/plugin-select/README.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/packages/plugin-select/README.md b/packages/plugin-select/README.md index 5487f637..b7496ddb 100644 --- a/packages/plugin-select/README.md +++ b/packages/plugin-select/README.md @@ -118,6 +118,35 @@ The first one is setCreatorOfStateSelector where you can redefine your own selec The second one is setHoistStaticMethod where you can override [hoist-non-react-statics](https://www.npmjs.com/package/hoist-non-react-statics) module like [example](https://github.com/seznam/IMA.js-plugins/blob/master/packages/plugin-select/src/select/__tests__/SelectSpec.js#L155). +## How to mock in tests + +To test a component wrapped in `select`, mock `context.$Utils.$PermissionValidator.getState()` and `context.$Utils.$Dispatcher.listen()`. + +Example: + +```js +const context = { + $Utils: { + $PermissionValidator: { + hasPermission: hasPermissionMock, + }, + $PageStateManager: { + getState: jest.fn(), + }, + $Dispatcher: { + listen: () => {} + }, + }, +}; + +const setup = setupMountFactory(AuthedComponent, context); +const wrapper = setup(props); + +context.$Utils.$PageStateManager.getState.mockReturnValue({foo: 'bar'}) + +``` + + ## IMA.js The [IMA.js](https://imajs.io) is an application development stack for developing From 8062bc30b4119f63e5abab85a9594b9c3194557a Mon Sep 17 00:00:00 2001 From: Anna Frankova Date: Mon, 22 Jul 2024 12:58:18 +0200 Subject: [PATCH 2/3] plugin-select-readme Use Enzyme mount instead of cusom helper tool --- packages/plugin-select/README.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/packages/plugin-select/README.md b/packages/plugin-select/README.md index b7496ddb..2ef9970a 100644 --- a/packages/plugin-select/README.md +++ b/packages/plugin-select/README.md @@ -120,16 +120,17 @@ The second one is setHoistStaticMethod where you can override [hoist-non-react-s ## How to mock in tests -To test a component wrapped in `select`, mock `context.$Utils.$PermissionValidator.getState()` and `context.$Utils.$Dispatcher.listen()`. +To test a component wrapped in `select`, mock `context.$Utils.$PageStateManager.getState()` and `context.$Utils.$Dispatcher.listen()`. Example: ```js + +import { mount } from 'enzyme'; +import { PageContext } from '@ima/react-page-renderer'; + const context = { $Utils: { - $PermissionValidator: { - hasPermission: hasPermissionMock, - }, $PageStateManager: { getState: jest.fn(), }, @@ -139,8 +140,13 @@ const context = { }, }; -const setup = setupMountFactory(AuthedComponent, context); -const wrapper = setup(props); +const wrapper = mount( + React.createElement( + PageContext.Provider, + { value: context }, + React.createElement(MyComponent, { permissions }) + ) + ); context.$Utils.$PageStateManager.getState.mockReturnValue({foo: 'bar'}) From 23d41ecb28e421637daeeb440c5996670329d2d4 Mon Sep 17 00:00:00 2001 From: Anna Frankova Date: Mon, 22 Jul 2024 14:54:51 +0200 Subject: [PATCH 3/3] plugin-select-readme Send just props --- packages/plugin-select/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/plugin-select/README.md b/packages/plugin-select/README.md index 2ef9970a..9ebf239d 100644 --- a/packages/plugin-select/README.md +++ b/packages/plugin-select/README.md @@ -140,11 +140,13 @@ const context = { }, }; +//.. + const wrapper = mount( React.createElement( PageContext.Provider, { value: context }, - React.createElement(MyComponent, { permissions }) + React.createElement(MyComponent, props) ) );