UNPKG

apprun

Version:

JavaScript library that has Elm inspired architecture, event pub-sub and components

87 lines 2.72 kB
let win; app['debug'] = true; function openWin(name) { win = window.open('', name); win.document.write(`<html> <title>AppRun Analyzer | ${document.location.href}</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI" } </style> <body><pre>`); } function write(text) { win.document.write(text + '\n'); } function closeWin() { win.document.write(`</pre> </body> </html>`); win.document.close(); } export const _createEventTests = () => { const o = { components: {} }; app.run('get-components', o); const { components } = o; openWin(''); Object.keys(components).forEach(el => { components[el].forEach(component => { write(`const component = ${component.constructor.name};`); write(`describe('${component.constructor.name}', ()=>{`); component._actions.forEach(action => { write(` it ('should handle event: ${action.name}', ()=>{`); write(` component.run('${action.name}');`); write(` expect(component.state).toBeTruthy();`); write(` })`); }); write(`});`); }); }); closeWin(); }; let recording = false; let events = []; app.on('debug', p => { if (recording && p.vdom) { events.push(p); console.log(`* ${events.length} state(s) recorded.`); } }); export const _createStateTests = (s) => { const printTests = () => { if (events.length === 0) { console.log('* No state recorded.'); return; } openWin(''); events.forEach((event, idx) => { write(` it ('view snapshot: #${idx + 1}', ()=>{`); write(` const component = ${event.component.constructor.name};`); write(` const state = ${JSON.stringify(event.state, undefined, 2)};`); write(` const vdom = component['view'](state);`); write(` expect(JSON.stringify(vdom)).toMatchSnapshot();`); write(` })`); }); closeWin(); }; if (s === 'start') { events = []; recording = true; console.log('* State logging started.'); } else if (s === 'stop') { printTests(); recording = false; events = []; console.log('* State logging stopped.'); } else { console.log('create-state-tests <start|stop>'); } }; // window['_apprun-create-event-tests'] = ['create-event-tests', // () => _createEventTests() // ] // window['_apprun-create-state-tests'] = ['create-state-tests <start|stop>', // (p?) => _createStateTests(p) // ] //# sourceMappingURL=apprun-dev-tools-tests.js.map