blob: f318fbd351d2cb45808477d56974ca9682cd6ea3 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {elementByIdFn, querySelectorFn} from "/script/tobago-test.js";
import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
it("Select 2,2,0 and submit", function (done) {
const hiddenInput = elementByIdFn("page:mainForm:listbox::selected");
const submit = elementByIdFn("page:mainForm:submit");
const output = querySelectorFn("#page\\:mainForm\\:output tobago-out");
const node1 = elementByIdFn("page:mainForm:listbox:1:node");
const node3 = elementByIdFn("page:mainForm:listbox:3:node"); // 2
const node6 = elementByIdFn("page:mainForm:listbox:6:node"); // 2,2
const node7 = elementByIdFn("page:mainForm:listbox:7:node"); // 2,2,0
const test = new JasmineTestTool(done);
test.setup(() => isLevelSelectVisible(2, 1),
() => {
node1().selected = true;
node1().dispatchEvent(new Event("change", {bubbles: true}));
});
test.setup(() => output().textContent !== "[[2, 2, 0]]",
() => submit().dispatchEvent(new Event("click", {bubbles: true})));
test.do(() => node3().selected = true);
test.event("change", node3,
() => hiddenInput().value === "[2]" && isLevelSelectVisible(2, 2));
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeFalse());
test.do(() => node6().selected = true);
test.event("change", node6,
() => hiddenInput().value === "[2,2]" && isLevelSelectVisible(3, 2));
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeFalse());
test.do(() => node7().selected = true);
test.event("change", node7, () => hiddenInput().value === "[2,2,0]");
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeFalse());
test.event("click", submit, () => output().textContent === "[[2, 2, 0]]");
test.do(() => expect(output().textContent).toBe("[[2, 2, 0]]"));
test.start();
});
it("Select 3 and submit", function (done) {
const hiddenInput = elementByIdFn("page:mainForm:listbox::selected");
const submit = elementByIdFn("page:mainForm:submit");
const output = querySelectorFn("#page\\:mainForm\\:output tobago-out");
const node1 = elementByIdFn("page:mainForm:listbox:1:node");
const node9 = elementByIdFn("page:mainForm:listbox:9:node"); // 3
const test = new JasmineTestTool(done);
test.setup(() => isLevelSelectVisible(2, 1),
() => {
node1().selected = true;
node1().dispatchEvent(new Event("change", {bubbles: true}));
});
test.setup(() => output().textContent !== "[[3]]",
() => submit().dispatchEvent(new Event("click", {bubbles: true})));
test.do(() => node9().selected = true);
test.event("change", node9,
() => hiddenInput().value === "[3]" && isLevelSelectVisible(2, 1));
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeFalse());
test.event("click", submit, () => output().textContent === "[[3]]");
test.do(() => expect(output().textContent).toBe("[[3]]"));
test.start();
});
it("Select 4,2,1,1 and submit", function (done) {
const hiddenInput = elementByIdFn("page:mainForm:listbox::selected");
const submit = elementByIdFn("page:mainForm:submit");
const output = querySelectorFn("#page\\:mainForm\\:output tobago-out");
const node1 = elementByIdFn("page:mainForm:listbox:1:node");
const node10 = elementByIdFn("page:mainForm:listbox:10:node"); // 4
const node15 = elementByIdFn("page:mainForm:listbox:15:node"); // 4,2
const node17 = elementByIdFn("page:mainForm:listbox:17:node"); // 4,2,1
const node19 = elementByIdFn("page:mainForm:listbox:19:node"); // 4,2,1,1
const test = new JasmineTestTool(done);
test.setup(() => isLevelSelectVisible(2, 1),
() => {
node1().selected = true;
node1().dispatchEvent(new Event("change", {bubbles: true}));
});
test.setup(() => output().textContent !== "[[4, 2, 1, 1]]",
() => submit().dispatchEvent(new Event("click", {bubbles: true})));
test.do(() => node10().selected = true);
test.event("change", node10,
() => hiddenInput().value === "[4]" && isLevelSelectVisible(2, 3));
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeFalse());
test.do(() => node15().selected = true);
test.event("change", node15,
() => hiddenInput().value === "[4,2]" && isLevelSelectVisible(3, 4));
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeFalse());
test.do(() => node17().selected = true);
test.event("change", node17,
() => hiddenInput().value === "[4,2,1]" && isLevelSelectVisible(4, 2));
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeTrue());
test.do(() => node19().selected = true);
test.event("change", node19, () => hiddenInput().value === "[4,2,1,1]");
test.do(() => expect(isLevelSelectVisible(1, 1)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(2, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(2, 3)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(3, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 2)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 3)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(3, 4)).toBeTrue());
test.do(() => expect(isLevelSelectVisible(4, 1)).toBeFalse());
test.do(() => expect(isLevelSelectVisible(4, 2)).toBeTrue());
test.event("click", submit, () => output().textContent === "[[4, 2, 1, 1]]");
test.do(() => expect(output().textContent).toBe("[[4, 2, 1, 1]]"));
test.start();
});
function isLevelSelectVisible(level, select) {
const selectElement = querySelectorFn("#page\\:mainForm\\:listbox .tobago-treeListbox-level:nth-of-type("
+ level + ") .tobago-treeListbox-select:nth-of-type(" + select + ")");
return !selectElement().classList.contains("d-none");
}