import { RENDER_ERROR, REQUEST_OBJECT_ERROR, METHOD, BASE_URL } from "../config/config"; import { compile, stringify } from "../../src/main"; import { e, eq, aeq, aeqe, createTestObj2, createTestObj3, createTestObj4 } from "./functions"; /** * Template function */ describe("template function", () => { e( "", () => compile( createTestObj2( `{{ "src":"/api/test", "method": "test", "after": "click:#increment" }}` ) )(), `${REQUEST_OBJECT_ERROR}: The "${METHOD}" property has only GET, POST, PUT, PATCH or DELETE values` ); e( "", () => compile(`{{ "src":"/api/test", "after": "click:#increment" }}`)(), `${RENDER_ERROR}: EventTarget is undefined` ); e( "", () => compile(`{{ "src":"/api/test", "memo": true }}`)(), `${REQUEST_OBJECT_ERROR}: Memoization works in the enabled repetition mode` ); e( "", () => compile( createTestObj2( `{{ "src":"/api/test", "after": "click:#increment", "memo": true, "repeat": false }}` ) )(), `${REQUEST_OBJECT_ERROR}: Memoization works in the enabled repetition mode` ); e( "", () => compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment" }}` ) )(), `${RENDER_ERROR}: Selectors nodes not found` ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment" }}` ), { memo: true } )().response?.outerHTML, '
' ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment", "repeat": false }}` ), { memo: true } )().response?.outerHTML, '
' ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment", "memo": true }}` ), { memo: false } )().response?.outerHTML, '
' ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment", "memo": true }}` ), { memo: false } )().response?.outerHTML, '
' ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment", "memo": false }}` ), { memo: true } )().response?.outerHTML, '
' ); eq( "", compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))().response ?.outerHTML, "
" ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment" }}` ) )().response?.outerHTML, '
' ); eq( "", compile( createTestObj2( `{{ "src":"/api/test", "after":"click:#increment" }}` ) )({ keepalive: true } as any).response?.outerHTML, '
' ); aeq( createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`), (res, prop, value) => { switch (prop) { case "response": if (value?.outerHTML === `
123
`) { res(true); } else { res(false); } break; } } ); const aeq0 = stringify({ src: `${BASE_URL}/api/test`, indicators: [ { trigger: "pending", content: "

Loading...

" } ] }); aeq(createTestObj2(`{${aeq0}}`), (res, prop, value) => { switch (prop) { case "response": if (value?.outerHTML === `

Loading...

`) { res(true); } else { res(false); } break; } }); aeq( createTestObj2(`{${aeq0}}`), (res, prop, value) => { switch (prop) { case "response": if (value?.outerHTML === `

Loading...

`) { res(true); } else { res(false); } break; } }, { mode: "cors", cache: "no-cache", credentials: "same-origin", timeout: 4000, redirect: "follow", referrerPolicy: "no-referrer", headers: { "Cache-Control": "no-cache" } } ); const aeq1 = stringify({ src: `${BASE_URL}/api/test`, after: "click:#click" }); aeqe(createTestObj3(`{${aeq1}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { res(true); } else { res(false); } break; } }); let memoItem: Element | undefined = undefined; aeqe( createTestObj3(`{${aeq1}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { if (!memoItem) { memoItem = value; } else { res(memoItem.childNodes[1] === value.childNodes[1]); } } else { res(false); } break; } }, { memo: true }, {}, {}, 2 ); let memoItem1: Element | undefined = undefined; aeqe( createTestObj3(`{${aeq1}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { if (!memoItem1) { memoItem1 = value; } else { // this is false res(memoItem1.childNodes[1] === value.childNodes[1]); } } else { res(false); } break; } }, {}, {}, {}, 2 ); let memoItem2: Element | undefined = undefined; const aeq2 = stringify({ src: `${BASE_URL}/api/test`, after: "click:#click", indicators: [ { trigger: "pending", content: "

Loading...

" } ] }); aeqe( createTestObj3(`{${aeq2}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { if (!memoItem2) { memoItem2 = value; } else { res(memoItem2.childNodes[1] === value.childNodes[1]); } } break; } }, {}, {}, {}, 2 ); aeqe( createTestObj3(`{${aeq2}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { if (!memoItem2) { memoItem2 = value; } else { res(memoItem2.childNodes[1] !== value.childNodes[1]); } } break; } }, { memo: true }, {}, {}, 2 ); aeqe( createTestObj3(`{${aeq2}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { if (!memoItem2) { memoItem2 = value; } else { res(memoItem2.childNodes[1] !== value.childNodes[1]); } } break; } }, { memo: true }, {}, {}, 2 ); const aeq3 = stringify({ src: `${BASE_URL}/api/getFormComponent`, after: "submit:#form", method: "post" }); aeqe( createTestObj4(`{${aeq3}}`), (res, prop, value) => { switch (prop) { case "response": if ( value?.outerHTML === `
123
` ) { res(true); } else { res(false); } break; } }, { autoBody: true }, {}, { route: "/api/getFormComponent", method: "post" }, 1, (el) => { return el?.getElementsByTagName("form")?.[0]; }, "submit" ); });