UNPKG

chromogen

Version:

simple, interaction-driven Jest test generator for Recoil and React Hooks apps

59 lines (49 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.output = exports.setFilter = void 0; const output_utils_1 = require("./output-utils"); const setFilter = (selectors, setters) => selectors.filter((key) => !setters.includes(key)); exports.setFilter = setFilter; const output = ({ atoms, selectors, setters, atomFamilies, selectorFamilies, initialRender, transactions, setTransactions, }) => `import { renderRecoilHook, act } from 'react-recoil-hooks-testing-library'; import { useRecoilValue, useRecoilState } from 'recoil'; import { ${(0, output_utils_1.importRecoilState)(selectors) + (0, output_utils_1.importRecoilFamily)(selectorFamilies)} } from '<ADD STORE FILEPATH>'; import { ${(0, output_utils_1.importRecoilState)(atoms) + (0, output_utils_1.importRecoilFamily)(atomFamilies)} } from '<ADD ATOM FILEPATH>'; // Suppress 'Batcher' warnings from React / Recoil conflict console.error = jest.fn(); // Hook to return atom/selector values and/or modifiers for react-recoil-hooks-testing-library const useStoreHook = () => { // atoms ${(0, output_utils_1.writeableHook)(atoms)} // writeable selectors ${(0, output_utils_1.writeableHook)(setters)} // read-only selectors ${(0, output_utils_1.readableHook)((0, exports.setFilter)(selectors, setters))} // atom families ${(0, output_utils_1.atomFamilyHook)(transactions)} // writeable selector families ${(0, output_utils_1.selectorFamilyHook)(selectorFamilies, true)} // read-only selector families ${(0, output_utils_1.selectorFamilyHook)(selectorFamilies, false)} return { ${(0, output_utils_1.returnWriteable)(atoms) + (0, output_utils_1.returnWriteable)(setters) + (0, output_utils_1.returnReadable)((0, exports.setFilter)(selectors, setters)) + (0, output_utils_1.returnAtomFamily)(transactions) + (0, output_utils_1.returnSelectorFamily)(selectorFamilies, true) + (0, output_utils_1.returnSelectorFamily)(selectorFamilies, false)}\t}; }; describe('INITIAL RENDER', () => { const { result } = renderRecoilHook(useStoreHook); ${(0, output_utils_1.initializeSelectors)(initialRender)} }); describe('SELECTORS', () => { ${(0, output_utils_1.testSelectors)(transactions)}}); describe('SETTERS', () => { ${(0, output_utils_1.testSetters)(setTransactions)}});`; exports.output = output;