UNPKG

dodex-vertx

Version:

A java asynchronous server for Dodex and Dodex-mess

242 lines (224 loc) 7.56 kB
export default function (dodex, timer) { /* * Test Dodex input (private content) operation. */ var dodexToggle, dodexTopElement, card27, back1, back27, mainContainer = "#main_container", dblClickEvent = new MouseEvent("dblclick"); // changeEvent = new Event("change"); describe("Dodex Input Operation Validation", function () { beforeAll(function (done) { if (!$(mainContainer)[0]) { $("body").append("<div id=\"main_container\"><div class=\"loading-page\"></div></div>"); } /** * Note, dodex and dodex-input are already loaded from previous Dodex tests. */ dodexToggle = getElement(".dodex--open"); dodexToggle.onmousedown = event => { dodex.openDodex(event); }; const numbers = timer(75, 10); const observable = numbers.subscribe(timer => { dodexTopElement = getElement(".top--dodex"); if ((typeof dodexTopElement !== "undefined" && dodexTopElement.length !== 0) && dodexTopElement.classList.contains("plus-thousand")) { card27 = getElement(".card27"); back27 = getElement(".back27"); back1 = getElement(".back1"); observable.unsubscribe(); done(); } else if (timer === 75) { observable.unsubscribe(); done(); } }); }); afterAll(function (done) { $(".top--dodex").remove(); done(); }); it("Dodex Input - popup on mouse double click", function (done) { let popupElement = getElement("#dodexInput"); expect(popupElement).toBe(null); card27.dispatchEvent(dblClickEvent); popupElement = getElement("#dodexInput"); expect(popupElement).toBeDefined(); let numbers = timer(75, 25); let observable = numbers.subscribe(timer => { const target = getElement(".content-input"); // Waiting for the popup to fade in if (getComputedStyle(target).opacity === "1") { expect(isVisible(target)).toBeTruthy(); observable.unsubscribe(); done(); } else if (timer === 75) { observable.unsubscribe(); done(); expect(isVisible(target)).toBeTruthy(); } }); }); it("Dodex Input - Verify that form elements exist", function (done) { const inputs = getAllElements("input"); expect(inputs[0].type).toMatch("file"); expect(inputs[1].value).toMatch("replace"); expect(inputs[2].value).toMatch("append"); done(); }); it("Dodex Input - verify that uploaded file is processed", function (done) { // Emulate file upload var file = new File([testContent], "content.private.json", { type: "application/json", lastModified: Date.now() }); var fArray = [file]; // The file upload handler is exposed for testing only. window.handleFileSelect(null, fArray); const numbers = timer(100, 10); const observable = numbers.subscribe(timer => { const results = getElement("#results"); if (results.innerHTML) { expect(results.innerHTML).toContain("Processed Cards:"); back27 = document.querySelector(".back27 > p"); expect(back27.innerHTML).toMatch("Test Content"); expect(back1.querySelector("div").innerHTML).toMatch("Back - First Page"); done(); observable.unsubscribe(); } else if (timer === 100) { done(); observable.unsubscribe(); } }); }); it("Dodex Input - close popup on button click", function (done) { const closeElement = getElement(".close"); closeElement.click(); const numbers = timer(75, 10); const observable = numbers.subscribe(timer => { // have to wait for the fade out to finish if (getComputedStyle(getElement(".content-input")).opacity === "0") { const target = getElement(".content-input"); expect(isVisible(target)).toBeFalsy(); observable.unsubscribe(); done(); } else if (timer === 75) { observable.unsubscribe(); done(); } }); }); }); } function getElement(element) { return document.querySelector(element); } function getAllElements(element) { return document.querySelector("#dodexInput").querySelectorAll(element); } function isVisible(elem) { if (getComputedStyle(elem).zIndex === "-1000" || getComputedStyle(elem).opacity == "0") { return false; } else { // per jQuery return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); } } var testContent = `{ "cards": { "card1": { "tab": "A", "front": { "content": "<h1>Application Access</h1><div class='mr-2'>Log in:<a href='#' class='login'><i class='fa fa-sign-in'></i></a></div>" }, "back": { "content": "<div>Back - First Page</div>" } }, "card2": { "tab": "B", "front": { "content": "" }, "back": { "content": "" } }, "card3": { "tab": "C", "front": { "content": "<h1>Best's Contact Form</h1><a href='#/contact'><i class='fa fa-fw fa-phone'></i>Contact</a>" }, "back": { "content": "<h1>Lorem Ipsum</h1><a href='https://www.yahoo.com' target='_'>Yahoo13</a>" } }, "card4": { "tab": "D", "front": { "content": "" }, "back": { "content": "" } }, "card5": { "tab": "E", "front": { "content": "" }, "back": { "content": "" } }, "card6": { "tab": "F", "front": { "content": "" }, "back": { "content": "" } }, "card16": { "tab": "P", "front": { "content": "<h1>Test Pdf</h1><a href='#!pdf/test'><i class='far fa-fw fa-file-pdf'></i>PDF View</a>" }, "back": { "content": "<h1>Lorem Ipsum</h1><a href='https://www.yahoo.com' target='_'>Yahoo16</a>" } }, "card20": { "tab": "T", "front": { "content": "<h1>Test Table</h1><a href='#!table/tools'><i class='fa fa-fw fa-table'></i>Table View</a>" }, "back": { "content": "<h1>Lorem Ipsum</h1><a href='https://www.yahoo.com' target='_'>Yahoo20</a>" } }, "card8": { "tab": "H", "front": { "content": "<h1>Description</h1><a href='#!'><i class='fa fa-fw fa-home'></i>Home</a>" }, "back": { "content": "<h1>Lorem Ipsum</h1><a href='https://www.yahoo.com' target='_'>Yahoo8</a>" } }, "card27": { "tab": "", "front": { "content": "" }, "back": { "content": "<h1 style='font-size: 14px;'><svg height='18' width='17' style='font-family: 'Open Sans', sans-serif;'><text x='3' y='18' fill='#059'>O</text><text x='0' y='15' fill='#059'>D</text></svg> doDex</h1><br><p>Test Content</p>" } } } }`;