forked from extern/egroupware
Add tests for description widget
This commit is contained in:
parent
e2c09aa1b0
commit
8d5f39b2d3
127
api/js/etemplate/Et2Description/test/Et2Description.test.ts
Normal file
127
api/js/etemplate/Et2Description/test/Et2Description.test.ts
Normal file
@ -0,0 +1,127 @@
|
||||
/**
|
||||
* Test file for Etemplate webComponent Description
|
||||
*/
|
||||
import {assert, elementUpdated, fixture} from '@open-wc/testing';
|
||||
import {Et2Description} from "../Et2Description";
|
||||
import {html} from "lit-element";
|
||||
import * as sinon from "sinon";
|
||||
|
||||
// Reference to component under test
|
||||
let element : Et2Description;
|
||||
|
||||
async function before()
|
||||
{
|
||||
// Create an element to test with, and wait until it's ready
|
||||
element = await fixture<Et2Description>(html`
|
||||
<et2-description></et2-description>
|
||||
`);
|
||||
|
||||
// Stub egw()
|
||||
sinon.stub(element, "egw").returns({
|
||||
tooltipUnbind: () => {},
|
||||
lang: (param) => {return param;}
|
||||
});
|
||||
return element;
|
||||
}
|
||||
|
||||
describe("Textbox widget", () =>
|
||||
{
|
||||
|
||||
// Setup run before each test
|
||||
beforeEach(before);
|
||||
|
||||
it('is defined', () =>
|
||||
{
|
||||
assert.instanceOf(element, Et2Description);
|
||||
});
|
||||
|
||||
it('has a label', () =>
|
||||
{
|
||||
element.set_label("Yay label");
|
||||
|
||||
assert.isNotEmpty(element.querySelectorAll('.et2_label'));
|
||||
assert.equal(element.querySelector(".et2_label").textContent, "Yay label");
|
||||
});
|
||||
|
||||
it("shows its value", async() =>
|
||||
{
|
||||
let value = "This is my value";
|
||||
|
||||
// Turn off translation
|
||||
element.no_lang = true;
|
||||
|
||||
element.set_value(value);
|
||||
|
||||
// wait for asynchronous changes to the DOM
|
||||
// @ts-ignore TypeScript doesn't recognize widgets as Elements
|
||||
await elementUpdated(element);
|
||||
|
||||
// Firefox puts the style tag in, so it's not an exact match
|
||||
assert.match(element.shadowRoot.textContent, new RegExp(value));
|
||||
});
|
||||
|
||||
it("translates its value", async() =>
|
||||
{
|
||||
let value = "This is my original value";
|
||||
|
||||
// Set up translation to give a different value
|
||||
// @ts-ignore restore() is created by sinon.stub()
|
||||
element.egw.restore();
|
||||
sinon.stub(element, "egw").returns({
|
||||
tooltipUnbind: () => {},
|
||||
lang: (param) => {return "Translated!";}
|
||||
});
|
||||
|
||||
element.set_value(value);
|
||||
|
||||
// wait for asynchronous changes to the DOM
|
||||
// @ts-ignore TypeScript doesn't recognize widgets as Elements
|
||||
await elementUpdated(element);
|
||||
|
||||
// Firefox puts the style tag in, so it's not an exact match
|
||||
assert.match(element.shadowRoot.textContent, new RegExp("Translated!"));
|
||||
});
|
||||
|
||||
it("links when given href", async() =>
|
||||
{
|
||||
let href = "not_real_url";
|
||||
|
||||
element.href = href;
|
||||
element.value = "click me";
|
||||
|
||||
// wait for asynchronous changes to the DOM
|
||||
// @ts-ignore TypeScript doesn't recognize widgets as Elements
|
||||
await elementUpdated(element);
|
||||
|
||||
let a = element.shadowRoot.querySelector("a");
|
||||
assert.isNotNull(a, "Did not find A tag");
|
||||
assert.match(a.href, new RegExp(href), "A tag had wrong href");
|
||||
});
|
||||
|
||||
it("activates links when asked", async() =>
|
||||
{
|
||||
let content = "hey, check out www.egroupware.org";
|
||||
element.value = content;
|
||||
|
||||
// wait for asynchronous changes to the DOM
|
||||
// @ts-ignore TypeScript doesn't recognize widgets as Elements
|
||||
await elementUpdated(element);
|
||||
|
||||
// Not turned on, make sure there is no links
|
||||
assert.isNull(element.shadowRoot.querySelector("a"), "Links got activated when activate_links property is false");
|
||||
|
||||
// Turn it on
|
||||
element.activate_links = true;
|
||||
|
||||
// wait for asynchronous changes to the DOM
|
||||
// @ts-ignore TypeScript doesn't recognize widgets as Elements
|
||||
await elementUpdated(element);
|
||||
|
||||
assert.isNotNull(element.shadowRoot.querySelector("a"), "Links did not get activated when activate_links property is true");
|
||||
assert.equal(element.shadowRoot.querySelector("a").href, "http://www.egroupware.org/", "Incorrect href in activated link");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
// Description is not an input widget, do not run inputBasicTests
|
||||
// inputBasicTests(before, "I'm a good test value", "input");
|
Loading…
Reference in New Issue
Block a user