import {execPseudoSelectorCommands, handleFetchActionErrorFields, handleFetchActionSuccessJson} from './common-fetch-action.ts'; import {createElementFromHTML} from '../utils/dom.ts'; import {captureNavigations, normalizeTestHtml} from '../utils/testhelper.ts'; test('execPseudoSelectorCommands', () => { window.document.body.innerHTML = `
`; let ret = execPseudoSelectorCommands(document.querySelector('#u1')!, ''); expect(ret.targets).toEqual([document.querySelector('#u1')]); ret = execPseudoSelectorCommands(document.querySelector('#u1')!, '$this'); expect(ret.targets).toEqual([document.querySelector('#u1')]); expect(ret.cmdInnerHTML).toBeFalsy(); expect(ret.cmdMorph).toBeFalsy(); ret = execPseudoSelectorCommands(document.querySelector('#u1')!, '$body $morph $innerHTML'); expect(ret.targets).toEqual([document.body]); expect(ret.cmdInnerHTML).toBeTruthy(); expect(ret.cmdMorph).toBeTruthy(); ret = execPseudoSelectorCommands(document.querySelector('#u1')!, '$body .x'); expect(ret.targets.length).toEqual(3); expect(ret.targets).toEqual(Array.from(document.querySelectorAll('.x'))); ret = execPseudoSelectorCommands(document.querySelector('#u1 .x')!, '$closest(div) .x'); expect(ret.targets.length).toEqual(2); expect(ret.targets).toEqual(Array.from(document.querySelectorAll('#d1 .x'))); }); test('handleFetchActionSuccessJson', async () => { const navigations = captureNavigations(); await handleFetchActionSuccessJson(document.body, {redirect: '/'}); await handleFetchActionSuccessJson(document.body, {redirect: ''}); await handleFetchActionSuccessJson(document.body, {}); expect(navigations.map((n) => n.type)).toEqual(['push', 'reload', 'reload']); }); test('handleFetchActionErrorFields', () => { const elForm = createElementFromHTML(`
`); handleFetchActionErrorFields(elForm, ['foo-BAR', 'other']); expect(normalizeTestHtml(elForm.outerHTML)).toEqual(normalizeTestHtml(`
`)); });