mirror of
https://github.com/lxsang/antos-frontend.git
synced 2024-11-08 14:08:22 +01:00
324 lines
9.2 KiB
TypeScript
324 lines
9.2 KiB
TypeScript
|
import * as JQuery from "../src/libs/jquery-3.2.1.min"
|
||
|
import {OS as _OS_} from "../dist/antos";
|
||
|
// some global variable
|
||
|
const _w_ = window as any;
|
||
|
_w_.$ = JQuery;
|
||
|
const OS = _OS_ as any;
|
||
|
_w_.OS = OS;
|
||
|
|
||
|
// an example tag
|
||
|
class ExampleTag extends OS.GUI.AFXTag
|
||
|
{
|
||
|
private _prop1: number;
|
||
|
private _prop2: string;
|
||
|
constructor() {
|
||
|
super();
|
||
|
}
|
||
|
set prop1(v: number) {
|
||
|
this._prop1 = v;
|
||
|
}
|
||
|
set prop2(v: string) {
|
||
|
this._prop2 = v;
|
||
|
}
|
||
|
get prop1(): number {
|
||
|
return this._prop1;
|
||
|
}
|
||
|
get prop2(): string {
|
||
|
return this._prop2;
|
||
|
}
|
||
|
layout() {
|
||
|
return [];
|
||
|
}
|
||
|
init() {
|
||
|
this._prop1 = 0;
|
||
|
this._prop2 = "test";
|
||
|
}
|
||
|
mount() {}
|
||
|
}
|
||
|
|
||
|
OS.GUI.tag.define("afx-example-tag", ExampleTag);
|
||
|
|
||
|
test("Test base tag getter/setter", ()=>{
|
||
|
const tag = new ExampleTag();
|
||
|
tag.uify();
|
||
|
expect(tag.aid).toBeDefined();
|
||
|
tag.aid = "test";
|
||
|
expect(tag.aid).toBe("test");
|
||
|
expect(tag.prop1).toBe(0);
|
||
|
expect(tag.prop2).toBe("test");
|
||
|
tag.set({
|
||
|
prop1: 10,
|
||
|
prop2: "Hello",
|
||
|
prop3: "test"
|
||
|
});
|
||
|
expect(tag.prop1).toBe(10);
|
||
|
expect(tag.prop2).toBe("Hello");
|
||
|
expect(tag.prop3).toBeUndefined();
|
||
|
tag.tooltip = "tooltip";
|
||
|
expect(tag.tooltip).toBeUndefined();
|
||
|
expect($(tag).attr("tooltip")).toBe("tooltip");
|
||
|
});
|
||
|
|
||
|
// Button test
|
||
|
|
||
|
test("Test button tag setter/getter", () =>{
|
||
|
const bt = new OS.GUI.tag.ButtonTag();
|
||
|
bt.uify();
|
||
|
expect(bt.enable).toBe(true);
|
||
|
expect(bt.toggle).toBe(false);
|
||
|
expect(bt).toBeDefined();
|
||
|
bt.text = "test";
|
||
|
expect(bt.text).toBe("test");
|
||
|
bt.enable = true;
|
||
|
expect(bt.enable).toBe(true);
|
||
|
bt.enable = false;
|
||
|
expect(bt.enable).toBe(false);
|
||
|
bt.icon = "test";
|
||
|
bt.iconclass = "test";
|
||
|
expect(bt.icon).toBeUndefined();
|
||
|
expect(bt.iconclass).toBeUndefined();
|
||
|
bt.selected = true;
|
||
|
expect(bt.selected).toBe(true);
|
||
|
bt.selected = false;
|
||
|
expect(bt.selected).toBe(false);
|
||
|
|
||
|
bt.toggle = true;
|
||
|
expect(bt.toggle).toBe(true);
|
||
|
bt.toggle = false;
|
||
|
expect(bt.toggle).toBe(false);
|
||
|
});
|
||
|
|
||
|
test("Test button tag behavior", () =>{
|
||
|
const bt = new OS.GUI.tag.ButtonTag();
|
||
|
bt.uify();
|
||
|
const cb = jest.fn();
|
||
|
bt.onbtclick = cb
|
||
|
$("button",bt).trigger("click");
|
||
|
expect(cb).toBeCalledTimes(1);
|
||
|
});
|
||
|
|
||
|
// Label test
|
||
|
|
||
|
test("Test label tag setter/getter", () =>{
|
||
|
const lbl = new OS.GUI.tag.LabelTag();
|
||
|
expect(lbl).toBeDefined();
|
||
|
lbl.uify();
|
||
|
expect(lbl.icon).toBeUndefined();
|
||
|
expect(lbl.iconclass).toBeUndefined();
|
||
|
expect(lbl.text).toBeUndefined();
|
||
|
lbl.icon = "test";
|
||
|
lbl.iconclass = "test";
|
||
|
lbl.text = "test";
|
||
|
expect(lbl.icon).toBeUndefined();
|
||
|
expect(lbl.iconclass).toBeUndefined();
|
||
|
expect(lbl.text).toBe("test");
|
||
|
});
|
||
|
|
||
|
// switch test
|
||
|
test("Test switcher getter/setter", () =>{
|
||
|
const sw = new OS.GUI.tag.SwitchTag();
|
||
|
sw.uify();
|
||
|
expect(sw.swon).toBe(false);
|
||
|
sw.swon = true;
|
||
|
expect(sw.swon).toBe(true);
|
||
|
sw.swon = false;
|
||
|
expect(sw.swon).toBe(false);
|
||
|
expect(sw.enable).toBe(true);
|
||
|
sw.enable = false;
|
||
|
expect(sw.enable).toBe(false);
|
||
|
});
|
||
|
|
||
|
test("Test switch behavior", ()=>{
|
||
|
const sw = new OS.GUI.tag.SwitchTag();
|
||
|
sw.uify();
|
||
|
const cb = jest.fn();
|
||
|
sw.onswchange = cb;
|
||
|
$("span", sw).trigger("click");
|
||
|
expect(cb).toBeCalledTimes(1);
|
||
|
expect(sw.swon).toBe(true);
|
||
|
})
|
||
|
|
||
|
// List view item test
|
||
|
test("Test simple list view item setter/getter", ()=>{
|
||
|
const item = new OS.GUI.tag.SimpleListItemTag();
|
||
|
item.uify();
|
||
|
expect(item.closable).toBe(false);
|
||
|
expect(item.selected).toBe(false);
|
||
|
item.closable = true;
|
||
|
expect(item.closable).toBe(true);
|
||
|
expect(item.data).toBeDefined();
|
||
|
item.closable = false;
|
||
|
item.selected = false;
|
||
|
const data = { text: "Hello", closable: true, selected: true };
|
||
|
item.data = data;
|
||
|
expect(item.closable).toBe(true);
|
||
|
expect(item.selected).toBe(true);
|
||
|
expect(($("afx-label",item)[0] as any).text).toBe("Hello");
|
||
|
});
|
||
|
|
||
|
|
||
|
test("Test simple list view item behaviour", ()=>{
|
||
|
const item = new OS.GUI.tag.SimpleListItemTag();
|
||
|
item.uify();
|
||
|
const cb = jest.fn();
|
||
|
item.onitemselect = cb;
|
||
|
item.onitemclick = cb;
|
||
|
item.onitemdbclick = cb;
|
||
|
item.onitemclose = cb;
|
||
|
const data = { text: "hello", closable: true, selected: true };
|
||
|
item.data = data;
|
||
|
expect(cb).toBeCalledTimes(1);
|
||
|
$("li", item).trigger("click");
|
||
|
expect(cb).toBeCalledTimes(2);
|
||
|
$("li", item).trigger("dblclick");
|
||
|
expect(cb).toBeCalledTimes(3);
|
||
|
$("i.closable", item).trigger("click");
|
||
|
expect(cb).toBeCalledTimes(4);
|
||
|
});
|
||
|
|
||
|
// list view test
|
||
|
test("Test list view setter/getter", ()=>{
|
||
|
const item = new OS.GUI.tag.ListViewTag();
|
||
|
item.uify();
|
||
|
expect(item.data).toBeDefined();
|
||
|
expect(item.data.length).toBe(0);
|
||
|
expect(item.multiselect).toBe(false);
|
||
|
expect(item.dropdown).toBe(false);
|
||
|
expect(item.selected).toBe(-1);
|
||
|
expect(item.dragndrop).toBe(false);
|
||
|
expect(item.itemtag).toBe("afx-list-item");
|
||
|
expect(item.selectedItem).toBeUndefined();
|
||
|
expect(item.selectedItems).toBeDefined();
|
||
|
expect(item.selectedItems.length).toBe(0);
|
||
|
item.multiselect = true;
|
||
|
expect(item.multiselect).toBe(true);
|
||
|
item.dragndrop = true;
|
||
|
item.dropdown = true;
|
||
|
item.itemtag = "afx-sample";
|
||
|
expect(item.multiselect).toBe(false);
|
||
|
expect(item.dropdown).toBe(true);
|
||
|
expect(item.dragndrop).toBe(true);
|
||
|
expect(item.itemtag).toBe("afx-sample");
|
||
|
})
|
||
|
|
||
|
test("Test list view behaviour", () =>{
|
||
|
const item = new OS.GUI.tag.ListViewTag();
|
||
|
item.uify();
|
||
|
const cb = jest.fn();
|
||
|
item.onlistselect = cb;
|
||
|
item.onlistdbclick = cb;
|
||
|
item.onlist
|
||
|
const data = [
|
||
|
{ text: "Item 1", closable: true, selected: false },
|
||
|
{ text: "Item 2", closable: true, selected: true },
|
||
|
{ text: "Item 3", closable: true, selected: false }
|
||
|
];
|
||
|
item.data = data;
|
||
|
expect(item.data).toBe(data);
|
||
|
expect(cb).toBeCalledTimes(1);
|
||
|
expect(item.selectedItem).toBe((data[1] as any).domel);
|
||
|
expect(item.selectedItems.length).toBe(1);
|
||
|
expect(item.selectedItems[0]).toBe((data[1] as any).domel);
|
||
|
expect(item.selected).toBe(1);
|
||
|
item.multiselect = true;
|
||
|
data[2].selected = true;
|
||
|
item.data = data;
|
||
|
expect(cb).toBeCalledTimes(3);
|
||
|
expect(item.selectedItem).toBe((data[2] as any).domel);
|
||
|
expect(item.selectedItems.length).toBe(2);
|
||
|
var el = (data[0] as any).domel
|
||
|
$("li", el).trigger("click");
|
||
|
expect(cb).toBeCalledTimes(4);
|
||
|
expect(item.selectedItems.length).toBe(3);
|
||
|
expect(item.selectedItem).toBe((data[0] as any).domel);
|
||
|
item.unselect();
|
||
|
expect(item.selectedItems.length).toBe(0);
|
||
|
expect(item.selectedItem).toBeUndefined();
|
||
|
item.multiselect = false;
|
||
|
data[0].selected = true;
|
||
|
data[2].selected = true;
|
||
|
item.dragndrop = true;
|
||
|
item.data = data;
|
||
|
expect(item.selectedItem).toBe((data[2] as any).domel);
|
||
|
expect(item.selectedItems.length).toBe(1);
|
||
|
el = (data[1] as any).domel
|
||
|
$("li", el).trigger("dblclick");
|
||
|
expect(cb).toBeCalledTimes(8);
|
||
|
expect(item.selectedItem).toBe(el);
|
||
|
item.selectPrev();
|
||
|
expect(item.selectedItem).toBe((data[0] as any).domel);
|
||
|
expect(item.selectedItems.length).toBe(1);
|
||
|
item.selectNext();
|
||
|
expect(item.selectedItem).toBe((data[1] as any).domel);
|
||
|
expect(item.selectedItems.length).toBe(1);
|
||
|
// close an element
|
||
|
var close_cb = jest.fn((x) => false);
|
||
|
item.onitemclose = close_cb;
|
||
|
el = (data[0] as any).domel
|
||
|
$("i.closable", el).trigger("click");
|
||
|
expect(close_cb).toBeCalledTimes(1);
|
||
|
expect(item.data.length).toBe(3);
|
||
|
expect(item.selectedItem).toBe((data[1] as any).domel);
|
||
|
close_cb = jest.fn((x) => true);
|
||
|
item.onitemclose = close_cb;
|
||
|
$("i.closable", el).trigger("click");
|
||
|
expect(item.data.length).toBe(2);
|
||
|
expect(item.selectedItem).toBe((data[0] as any).domel);
|
||
|
expect(close_cb).toBeCalledTimes(1);
|
||
|
el = (data[0] as any).domel;
|
||
|
$("i.closable", el).trigger("click");
|
||
|
expect(item.data.length).toBe(1);
|
||
|
expect(item.selectedItem).toBeUndefined();
|
||
|
expect(close_cb).toBeCalledTimes(2);
|
||
|
})
|
||
|
|
||
|
// test Menu item
|
||
|
const tree_data = {
|
||
|
name: 'My Tree',
|
||
|
nodes: [
|
||
|
{ name: 'child 1', iconclass:'fa fa-car'},
|
||
|
{ name: 'child 2' },
|
||
|
{
|
||
|
name: 'sub tree 1',
|
||
|
nodes: [
|
||
|
{
|
||
|
name: 'sub sub tree 1',
|
||
|
nodes: [
|
||
|
{ name: 'leaf 1' },
|
||
|
{ name: 'leaf 2' }
|
||
|
]
|
||
|
},
|
||
|
{ name: 'leaf 3' },
|
||
|
{ name: 'leaf 4' }
|
||
|
]
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
test("Test menu item setter/getter",()=>{
|
||
|
const item = new OS.GUI.tag.SimpleMenuEntryTag();
|
||
|
item.uify();
|
||
|
expect(item.data).toBeUndefined();
|
||
|
expect(item.switch).toBe(false);
|
||
|
expect(item.radio).toBe(false);
|
||
|
expect(item.checked).toBe(false);
|
||
|
expect(item.nodes).toBeUndefined();
|
||
|
expect(item.parent).toBeUndefined();
|
||
|
expect(item.root).toBeUndefined();
|
||
|
const leaf = tree_data.nodes[0];
|
||
|
item.data = leaf;
|
||
|
expect(item.data).toBe(leaf);
|
||
|
expect(item.data.nodes).toBeUndefined();
|
||
|
})
|
||
|
|
||
|
test("Test menu item behaviour",()=>{
|
||
|
|
||
|
})
|
||
|
|
||
|
// test Menu
|
||
|
test("Test menu setter/getter",()=>{
|
||
|
|
||
|
})
|
||
|
|
||
|
test("Test menu behavior",()=>{
|
||
|
|
||
|
})
|