123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455 |
- import nock from "nock";
- import {
- RENDER_ERROR,
- REQUEST_OBJECT_ERROR,
- METHOD,
- BASE_URL,
- RESPONSE_ERROR,
- DEFAULT_ALLOWED_CONTENT_TYPES,
- REQUEST_INIT_ERROR,
- REQUEST_INIT_GET
- } from "../config/config";
- import { JSDOM } from "jsdom";
- import createDOMPurify from "dompurify";
- import { compile, stringify } from "../../src/main";
- import {
- waeq,
- e,
- eq,
- eaeq,
- aeq,
- aeqe,
- createTestObj2,
- createTestObj3,
- createTestObj4
- } from "./functions";
- import sinon from "sinon";
- /**
- * Template function
- */
- const eq0 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: "pending",
- content: "<p>Loading...</p>"
- },
- {
- trigger: "pending",
- content: "<p>Loading...</p>"
- }
- ]
- });
- const eq1 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: 123 as any,
- content: "<p>Loading...</p>"
- }
- ]
- });
- const eq2 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- content: "<p>Loading...</p>"
- } as any
- ]
- });
- const eq3 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: 100 as any
- } as any
- ]
- });
- const eaeq1 = stringify({
- src: `${BASE_URL}/api/test`,
- initId: "1"
- });
- const aeq0 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: "pending",
- content: "<p>Loading...</p>"
- }
- ]
- });
- const aeq1 = stringify({
- src: `${BASE_URL}/api/test`,
- after: "click:#click"
- });
- const aeq2 = stringify({
- src: `${BASE_URL}/api/test`,
- after: "click:#click",
- indicators: [
- {
- trigger: "pending",
- content: "<p>Loading...</p>"
- }
- ]
- });
- const aeq3 = stringify({
- src: `${BASE_URL}/api/getFormComponent`,
- after: "submit:#form",
- method: "post"
- });
- const aeq4 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: 405,
- content: "<p>405</p>"
- }
- ]
- });
- const aeq5 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: "error",
- content: "<p>Error</p>"
- }
- ]
- });
- const aeq6 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: "rejected",
- content: "<p>Rejected</p>"
- }
- ]
- });
- const aeq7 = stringify({
- src: `${BASE_URL}/api/test`,
- indicators: [
- {
- trigger: 100,
- content: "<p>100</p>"
- }
- ]
- });
- const aeq8 = stringify({
- src: `${BASE_URL}/api/test`,
- after: "click:#click",
- repeat: false
- });
- const aeqe0 = stringify({
- src: `${BASE_URL}/api/test`,
- after: "click:#click",
- initId: "1"
- });
- const contentType1 = "application/octet-stream";
- describe("template function", () => {
- e(
- `only accepts the '${METHOD}' property in the REQUEST OBJECT as GET, POST, PUT, PATCH or DELETE`,
- () =>
- 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(
- "throws an error if the EVENT TARGET doesn't exist",
- () => compile(`{{ "src":"/api/test", "after": "click:#increment" }}`)(),
- `${RENDER_ERROR}: EventTarget is undefined`
- );
- e(
- "throws an error if Memoization enabled without the Repetition mode enabled",
- () => compile(`{{ "src":"/api/test", "memo": true }}`)(),
- `${REQUEST_OBJECT_ERROR}: Memoization works in the enabled repetition mode`
- );
- e(
- `throws an error if the '${REQUEST_INIT_GET}' property in the RequestInit object is a function`,
- () => compile(createTestObj2(`{{ "src":"123" }}`))({ get: "" as any }),
- `${REQUEST_INIT_ERROR}: The "${REQUEST_INIT_GET}" property has a function value`
- );
- e(
- "throws an error if the value being passed is a number for RequestInit",
- () =>
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))(123 as any),
- `${REQUEST_INIT_ERROR}: The type of the value being passed does not match the supported types for RequestInit`
- );
- e(
- "throws an error if passed duplicate IDs for the RequestInit objects",
- () =>
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))([
- { id: "1", value: {} },
- { id: "1", value: {} }
- ]),
- `${REQUEST_INIT_ERROR}: ID with value "1" already exists`
- );
- e(
- "",
- () =>
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))([
- { id: 1, value: {} },
- { id: 1, value: {} }
- ]),
- `${REQUEST_INIT_ERROR}: ID with value 1 already exists`
- );
- e(
- "throws an error if the ID is not a string or a number",
- () =>
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))([
- { id: [] as any, value: {} },
- { id: 1, value: {} }
- ]),
- `${REQUEST_INIT_ERROR}: ID must be a string or a number`
- );
- e(
- "throws an error if the value is not an object for RequestInit object",
- () =>
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))([
- "123" as any,
- { id: 1, value: {} }
- ]),
- `${REQUEST_INIT_ERROR}: IdentificationRequestInit is of type object`
- );
- e(
- "throws an error if the ID or value is not present for RequestInit object",
- () =>
- compile(createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`))([
- {} as any,
- { id: 1, value: {} }
- ]),
- `${REQUEST_INIT_ERROR}: Missing "id" or "value" property`
- );
- e(
- "throws an error if Memoization enabled without the Repetition mode enabled",
- () =>
- 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(
- "throws an error if the selector nodes are not found",
- () =>
- 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>'
- );
- e(
- "throws an error if passed duplicate indicator triggers",
- () => compile(createTestObj2(`{${eq0}}`))(),
- `${REQUEST_OBJECT_ERROR}: Indicator trigger must be unique`
- );
- e(
- "throws an error if provided an invalid indicator trigger",
- () => compile(createTestObj2(`{${eq1}}`))(),
- `${REQUEST_OBJECT_ERROR}: Failed to activate or detect the indicator`
- );
- e(
- "throws an error if trigger is not provided to the indicators",
- () => compile(createTestObj2(`{${eq2}}`))(),
- `${REQUEST_OBJECT_ERROR}: Failed to activate or detect the indicator`
- );
- e(
- "throws an error if trigger is a number and the value is not provided to the indicators",
- () => compile(createTestObj2(`{${eq3}}`))(),
- `${REQUEST_OBJECT_ERROR}: Failed to activate or detect the indicator`
- );
- 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>'
- );
- eaeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`),
- `${RESPONSE_ERROR}: Expected ${DEFAULT_ALLOWED_CONTENT_TYPES.map(
- (type) => `"${type}"`
- ).join(", ")}, but received "${contentType1}"`,
- () => ({}) as any,
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": contentType1
- }
- }
- );
- eaeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`),
- `${RESPONSE_ERROR}: Expected ${DEFAULT_ALLOWED_CONTENT_TYPES.map(
- (type) => `"${type}"`
- ).join(", ")}, but received ""`,
- () => ({}) as any,
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": ""
- }
- }
- );
- eaeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`),
- `${REQUEST_INIT_ERROR}: Expected type string, but received type object`,
- () => ({}) as any,
- {
- headers: {
- a: {}
- }
- },
- {}
- );
- eaeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`),
- `${REQUEST_INIT_ERROR}: Expected an object with initialization options`,
- () => ({}) as any,
- () => () => 1 as any,
- {}
- );
- eaeq(
- createTestObj2(
- `{{ "src":"${BASE_URL}/api/test" }}{{ "src":"${BASE_URL}/api/test" }}`
- ),
- `${REQUEST_INIT_ERROR}: Expected an object with initialization options`,
- () => ({}) as any,
- () => () => 1 as any,
- {}
- );
- eaeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test" }}`),
- `${REQUEST_INIT_ERROR}: The "headers" property must contain a value object`,
- () => ({}) as any,
- {
- headers: []
- },
- {}
- );
- eaeq(
- createTestObj2(`{${eaeq1}}`),
- `${REQUEST_OBJECT_ERROR}: ID referenced by request not found`,
- () => ({}) as any,
- (res: any) => [
- {
- id: "2",
- value: {}
- }
- ],
- {}
- );
- eaeq(
- createTestObj2(`{${eaeq1}}`),
- `${REQUEST_OBJECT_ERROR}: ID referenced by request not found`,
- () => ({}) as any,
- (res: any) => [
- {
- id: "2",
- value: {}
- }
- ],
- {}
- );
- eaeq(
- createTestObj2(`{${eaeq1}}`),
- `${REQUEST_OBJECT_ERROR}: ID referenced by request not found`,
- () => ({}) as any,
- (res: any) => ({}),
- {}
- );
- aeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test", initId:"" }}`),
- () => ({}),
- (res: any) => [
- {
- id: "2",
- value: {}
- }
- ],
- undefined,
- undefined,
- true
- );
- aeq(
- `{{ "src":"${BASE_URL}/api/test" }}`,
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<template><div>123</div></template>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {}
- );
- aeq(
- createTestObj2(`{${aeq5}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><p>Error</p></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- isRejected: true
- }
- );
- aeq(
- createTestObj2(`{{ src: "${BASE_URL}/api/test" }}`),
- (res, prop, value) => {
- switch (prop) {
- case "status":
- if (value === "rejected") {
- res(true);
- }
- break;
- }
- },
- {},
- {
- isRejected: true
- }
- );
- aeq(
- createTestObj2(`{${aeq7}}`),
- (res, prop, value) => {
- switch (prop) {
- case "status":
- if (value === "rejected") {
- res(true);
- }
- break;
- }
- },
- {},
- {
- isRejected: true
- }
- );
- aeq(
- createTestObj2(`{{ src: "${BASE_URL}/api/test", indicators:[] }}`),
- (res, prop, value) => {
- switch (prop) {
- case "status":
- if (value === 100) {
- res(true);
- }
- break;
- }
- },
- {},
- {
- code: 100
- }
- );
- aeq(
- createTestObj2(`{${aeq6}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><p>Rejected</p></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- isRejected: true
- }
- );
- aeq(
- createTestObj2(`{${aeq7}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><p>100</p></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- code: 100
- }
- );
- waeq(
- `{{ "src":"${BASE_URL}/api/test" }}`,
- `${REQUEST_INIT_ERROR}: The "signal" property overwrote the AbortSignal from "timeout"`,
- () => ({}) as any,
- {
- timeout: 1000,
- signal: new AbortController().signal
- },
- {}
- );
- waeq(
- `{{ "src":"${BASE_URL}/api/test" }}`,
- `${REQUEST_INIT_ERROR}: The "keepalive" property is not yet supported`,
- () => ({}) as any,
- {
- keepalive: true
- },
- {}
- );
- aeq(
- createTestObj2(
- `{{ "src":"${BASE_URL}/api/test", disallowedTags:["script"] }}`
- ),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- template: "<div>123</div><script></script>"
- }
- );
- aeq(
- createTestObj2(
- `{{ "src":"${BASE_URL}/api/test", disallowedTags:["script"] }}`
- ),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- template: "<div>123</div><script></script>"
- },
- {
- disallowedTags: ["style"]
- }
- );
- aeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test", sanitize:true }}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- template: "<div>123</div><script></script>"
- },
- {}
- );
- aeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test", sanitize:true }}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- template: "<div>123</div><script></script>"
- },
- {
- sanitize: false
- }
- );
- 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;
- }
- },
- {},
- {},
- {
- memo: true
- }
- );
- 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;
- }
- }
- );
- aeq(
- createTestObj2(`{{ "src":"${BASE_URL}/api/test", indicators: [
- {
- trigger: "pending",
- content: "<p>Loading...</p>"
- }
- ] }}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><p>Loading...</p></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- }
- );
- 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;
- }
- },
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": "application/octet-stream"
- }
- },
- {
- allowedContentTypes: ["application/octet-stream"]
- }
- );
- 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;
- }
- },
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": "application/octet-stream"
- }
- },
- {
- allowedContentTypes: ["text/html", "application/octet-stream"]
- }
- );
- 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;
- }
- },
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": "application/octet-stream"
- }
- },
- {
- allowedContentTypes: []
- }
- );
- aeq(
- createTestObj2(
- `{{ "src":"${BASE_URL}/api/test" }}{{ "src":"${BASE_URL}/api/test" }}`
- ),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div><div>123</div></div>`) {
- res(true);
- }
- break;
- }
- },
- {}
- );
- 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;
- }
- },
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": "application/octet-stream"
- }
- },
- {
- allowedContentTypes: "*"
- }
- );
- aeq(
- createTestObj2(
- `{{ "src":"${BASE_URL}/api/test", allowedContentTypes: ["application/octet-stream"] }}`
- ),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {},
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": "application/octet-stream"
- }
- },
- {
- allowedContentTypes: ["text/html"]
- }
- );
- aeq(
- createTestObj2(
- `{{ "src":"${BASE_URL}/api/test", allowedContentTypes: ["application/octet-stream"] }}`
- ),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<div><div>123</div></div>`) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- },
- {
- timeout: 1000
- },
- {
- template: Buffer.from("<div>123</div>", "utf-8"),
- headers: {
- "Content-Type": "application/octet-stream"
- }
- }
- );
- 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(`{${aeq0}}`, (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<template><div>123</div></template>`) {
- res(true);
- }
- break;
- }
- });
- aeq(
- `{${aeq4}}`,
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<template><p>405</p></template>`) {
- res(true);
- }
- break;
- }
- },
- {},
- {
- code: 405
- }
- );
- aeq(
- `{${aeq5}}`,
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value?.outerHTML === `<template><p>Error</p></template>`) {
- res(true);
- }
- break;
- }
- },
- {},
- {
- code: 405
- }
- );
- 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",
- integrity: "sha256",
- referrer: "about:client",
- credentials: "same-origin",
- redirect: "follow",
- window: "",
- referrerPolicy: "no-referrer",
- headers: {
- "Cache-Control": "no-cache"
- }
- }
- );
- aeqe(
- `<pre><button id="click">click</button>{${aeq1}}</pre>`,
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<pre><button id="click">click</button><div>123</div></pre>`
- ) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- }
- );
- aeqe(
- createTestObj3(`{${aeq1}}`),
- () => ({}),
- {},
- (res: any) => () => {
- return {
- get: (prop: any, value: any) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- res(true);
- } else {
- res(false);
- }
- break;
- }
- }
- };
- }
- );
- aeqe(
- createTestObj3(`{${aeqe0}}`),
- () => ({}),
- {},
- (res: any) => [
- {
- id: "1",
- value: {
- get: (prop: any, value: any) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- res(true);
- }
- break;
- }
- }
- }
- }
- ]
- );
- aeqe(createTestObj3(`{${aeq1}}{${aeq1}}`), (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div><div>123</div></div>`
- ) {
- res(true);
- }
- 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
- );
- aeqe(
- createTestObj3(`{${aeq8}}{${aeq8}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div><div>123</div></div>`
- ) {
- res(true);
- }
- break;
- }
- },
- {},
- {},
- {},
- 1
- );
- aeqe(
- createTestObj3(`<pre>{${aeq8}}</pre>`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><pre><pre>123</pre></pre></div>`
- ) {
- res(true);
- }
- break;
- }
- },
- {},
- {},
- {
- template: "<pre>123</pre>"
- },
- 1
- );
- 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;
- 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
- );
- let count = 0;
- aeqe(
- createTestObj3(`{${aeq1}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- if (!memoItem2) {
- if (!count) {
- count++;
- } else {
- memoItem2 = value;
- }
- } else {
- res(true);
- }
- }
- break;
- }
- },
- {},
- {},
- {},
- 3
- );
- 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
- );
- // status templateObject check
- aeqe(
- createTestObj3(`{${aeq1}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><!--hmpl0--></div>`
- ) {
- res(true);
- }
- break;
- }
- },
- {
- memo: true
- },
- {},
- {
- isAfter: true,
- afterCode: 200,
- afterHeaders: {
- "Content-Type": contentType1
- },
- times: 1
- },
- 2,
- undefined,
- undefined,
- {
- timeout: 300
- }
- );
- 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(
- 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"
- );
- aeqe(
- `{${aeq0}}`,
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value === undefined) {
- res(true);
- }
- break;
- }
- },
- {},
- {},
- {
- code: 405
- }
- );
- aeqe(
- createTestObj3(`{${aeq0}}{${aeq0}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><!--hmpl0--><!--hmpl1--></div>`
- ) {
- res(true);
- }
- break;
- }
- },
- {},
- {},
- {
- code: 405,
- times: 1,
- isAfter: true
- },
- 2
- );
- aeqe(
- createTestObj3(`{${aeq1}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>567</div></div>`
- ) {
- res(true);
- }
- break;
- }
- },
- {
- memo: true
- },
- {},
- {
- afterCode: 200,
- afterTemplate: "<div>567</div>",
- times: 1,
- isAfter: true
- },
- 2
- );
- let memoItem3: Element | undefined;
- aeqe(
- createTestObj3(`{${aeq2}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><div>123</div></div>`
- ) {
- if (!memoItem3) {
- memoItem3 = value;
- } else {
- res(memoItem3.childNodes[1] === value.childNodes[1]);
- }
- }
- break;
- }
- },
- {
- memo: true
- },
- {},
- {},
- 2,
- undefined,
- undefined,
- {
- timeout: 300
- }
- );
- aeqe(
- createTestObj3(`{${aeq2}}`),
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (
- value?.outerHTML ===
- `<div><button id="click">click</button><!--hmpl0--></div>`
- ) {
- res(true);
- }
- break;
- }
- },
- {
- memo: true
- },
- {},
- {
- afterCode: 405,
- times: 1,
- isAfter: true
- },
- 2
- );
- aeqe(
- `{${aeq0}}`,
- (res, prop, value) => {
- switch (prop) {
- case "response":
- if (value === undefined) {
- res(true);
- }
- break;
- }
- },
- {},
- {},
- {
- code: 405
- }
- );
- afterEach(() => {
- sinon.restore();
- nock.cleanAll();
- });
- });
|