chromogen
Version:
simple, interaction-driven Jest test generator for Recoil and React Hooks apps
59 lines (49 loc) • 2.33 kB
JavaScript
;
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;