UNPKG

respond-framework

Version:
58 lines (54 loc) 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactTestRenderer = require("react-test-renderer"); var _matchSnapshots = require("./matchSnapshots.js"); const createTrigger = (respond, renderer) => async (e, meta, conf = {}, revived) => { const event = respond.eventsByType[e.type]; const arg = revived ? e.arg : e.arg ? respond.revive(e.arg) : undefined; const snapMore = (conf.snapTrigger || conf.snapAll) && snap.bind(null, respond, renderer, e, conf); const unsub = snapMore && respond.subscribe(snapMore, conf.snapAll); // subscribe(cb, true) for snapping all reductions/dispatches, subscribe(cb) for just trigger await (0, _reactTestRenderer.act)(async () => { await event.trigger(arg, meta); await renderer.render(); // optimization: if we aren't snapping triggers to capture loading states, then we only need to commit updates to the component tree once after awaiting trigger and all possible nested events dispatched await jest.runAllTimersAsync(); }); unsub?.(); }; var _default = exports.default = createTrigger; const snap = (respond, renderer, eTest, conf, state, e) => { if (!renderer._renderer) return; // no need to snap trigger before initial render if (e.meta.trigger) { eTest = { ...eTest, snipes: eTest.triggerSnipes }; conf = { ...conf, snapState: false, // by default turn these thints for trigger snaps logState: false, testIDs: false, snipes: false, ...conf.snapTrigger, // can supply `true` or object with overrides suffix: 'trigger' }; } else { conf = { ...conf, snapState: false, // by default turn these thints for trigger snaps logState: false, testIDs: false, snipes: false, ...conf.snapIntermediateStates, // can supply `true` or object with overrides suffix: 'intermediate' }; } (0, _reactTestRenderer.act)(() => respond.commit()); (0, _matchSnapshots.default)(respond, renderer, eTest, conf); };