UNPKG

chromogen

Version:

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

115 lines (114 loc) 4.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateFile = exports.generateTests = exports.styles = void 0; const ledger_1 = require("../utils/ledger"); const utils_1 = require("../utils/utils"); const output_1 = require("../output/output"); const buttonStyle = { display: 'inline-block', margin: '8px', marginLeft: '13px', padding: '0px', height: '25px', width: '65px', borderRadius: '4px', justifyContent: 'space-evenly', border: '1px', cursor: 'pointer', color: '#90d1f0', fontSize: '10px', }; const divStyle = { display: 'flex', position: 'absolute', bottom: '100px', left: '100px', backgroundColor: '#aaa', borderRadius: '4px', margin: 0, padding: 0, zIndex: 999999, }; const playStyle = { boxSizing: 'border-box', marginLeft: '25px', borderStyle: 'solid', borderWidth: '7px 0px 7px 14px', }; const pauseStyle = { width: '14px', height: '14px', borderWidth: '0px 0px 0px 10px', borderStyle: 'double', marginLeft: '27px', }; exports.styles = { buttonStyle, divStyle, playStyle, pauseStyle }; const generateTests = (storeMap) => { const { atoms, selectors, setters, atomFamilies, selectorFamilies, initialRender, initialRenderFamilies, transactions, setTransactions, } = ledger_1.ledger; const finalLedger = storeMap.size > 0 ? { atoms: atoms.map(({ key }) => storeMap.get(key) || key), selectors: selectors.map((key) => storeMap.get(key) || key), atomFamilies: (0, utils_1.convertFamilyTrackerKeys)(atomFamilies, storeMap), selectorFamilies: (0, utils_1.convertFamilyTrackerKeys)(selectorFamilies, storeMap), setters: setters.map((key) => storeMap.get(key) || key), initialRender: initialRender.map(({ key, value }) => { const newKey = storeMap.get(key) || key; return { key: newKey, value }; }), initialRenderFamilies: initialRenderFamilies.map(({ key, value, params }) => { const newKey = storeMap.get(key) || key; return { key: newKey, value, params }; }), transactions: transactions.map(({ state, updates, atomFamilyState, familyUpdates }) => { const newState = state.map((eachAtom) => { const key = storeMap.get(eachAtom.key) || eachAtom.key; return Object.assign(Object.assign({}, eachAtom), { key }); }); const newUpdates = updates.map((eachSelector) => { const key = storeMap.get(eachSelector.key) || eachSelector.key; const { value } = eachSelector; return { key, value }; }); const newAtomFamilyState = atomFamilyState.map((eachFamAtom) => { const family = storeMap.get(eachFamAtom.family) || eachFamAtom.family; const oldKey = eachFamAtom.key; const keySuffix = oldKey.substring(eachFamAtom.family.length); const key = family + keySuffix; return Object.assign(Object.assign({}, eachFamAtom), { family, key }); }); const newFamilyUpdates = familyUpdates.map((eachFamSelector) => { const key = storeMap.get(eachFamSelector.key) || eachFamSelector.key; return Object.assign(Object.assign({}, eachFamSelector), { key }); }); return { state: newState, updates: newUpdates, atomFamilyState: newAtomFamilyState, familyUpdates: newFamilyUpdates, }; }), setTransactions: setTransactions.map(({ state, setter }) => { const newState = state.map((eachAtom) => { const key = storeMap.get(eachAtom.key) || eachAtom.key; return Object.assign(Object.assign({}, eachAtom), { key }); }); const newSetter = setter; if (newSetter) { const { key } = newSetter; newSetter.key = storeMap.get(key) || key; } return { state: newState, setter: newSetter }; }), } : Object.assign(Object.assign({}, ledger_1.ledger), { atoms: atoms.map(({ key }) => key) }); return [(0, output_1.output)(finalLedger)]; }; exports.generateTests = generateTests; const generateFile = (setFile, storeMap) => { const tests = (0, exports.generateTests)(storeMap); const blob = new Blob(tests); setFile(URL.createObjectURL(blob)); return tests; }; exports.generateFile = generateFile;