123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- 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(
- `<button>Click</button>{{ "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(
- `<button>Click</button>{{ "src":"/api/test", "after": "click:#increment", "memo": true, "repeat": false }}`
- )
- )(),
- `${REQUEST_OBJECT_ERROR}: Memoization works in the enabled repetition mode`
- );
- e(
- "",
- () =>
- compile(
- createTestObj2(
- `<button>Click</button>{{ "src":"/api/test", "after":"click:#increment" }}`
- )
- )(),
- `${RENDER_ERROR}: Selectors nodes not found`
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment" }}`
- ),
- { memo: true }
- )().response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment", "repeat": false }}`
- ),
- { memo: true }
- )().response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment", "memo": true }}`
- ),
- { memo: false }
- )().response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment", "memo": true }}`
- ),
- { memo: false }
- )().response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment", "memo": false }}`
- ),
- { memo: true }
- )().response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- eq(
- "",
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))().response
- ?.outerHTML,
- "<div><!--hmpl0--></div>"
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment" }}`
- )
- )().response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- eq(
- "",
- compile(
- createTestObj2(
- `<button id="increment">Click</button>{{ "src":"/api/test", "after":"click:#increment" }}`
- )
- )({
- keepalive: true
- } as any).response?.outerHTML,
- '<div><button id="increment">Click</button><!--hmpl0--></div>'
- );
- aeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- }
- );
- const aeq0 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: "pending",
- content: "<p>Loading...</p>"
- }
- ]
- });
- aeq(createTestObj2(`{${aeq0}}`), (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><p>Loading...</p></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- });
- aeq(
- createTestObj2(`{${aeq0}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><p>Loading...</p></div>`) {
- 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 ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- });
- let memoItem: Element | undefined = undefined;
- aeqe(
- createTestObj3(`{${aeq1}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- 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 ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- 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: "<p>Loading...</p>"
- }
- ]
- });
- aeqe(
- createTestObj3(`{${aeq2}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- 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 ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- 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 ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- 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 ===
- `<div><form onsubmit="function prevent(e){e.preventDefault();};return prevent(event);" id="form"></form><div>123</div></div>`
- ) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {
- autoBody: true
- },
- {},
- {
- route: "/api/getFormComponent",
- method: "post"
- },
- 1,
- (el) => {
- return el?.getElementsByTagName("form")?.[0];
- },
- "submit"
- );
- });
|