-
Notifications
You must be signed in to change notification settings - Fork 155
/
Copy pathloadChildOnDemand.spec.ts
93 lines (87 loc) · 3.65 KB
/
loadChildOnDemand.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import { TreeGrid } from '../../src/treegrid/base/treegrid';
import { createElement, EmitType, remove, extend } from '@syncfusion/ej2-base';
import { DataManager, Query } from '@syncfusion/ej2-data';
import { projectDatas as data } from './datasource.spec';
describe('OnDemand load Child', () => {
type MockAjaxReturn = { promise: Promise<Object>, request: JasmineAjaxRequest };
type ResponseType = { result: Object[], count: number | string };
let mockAjax: Function = (d: { data: { [o: string]: Object | Object[] } | Object[], dm?: DataManager }, query: Query | Function, response?: Object):
MockAjaxReturn => {
jasmine.Ajax.install();
let dataManager = d.dm || new DataManager({
url: '/api/Employees',
});
let prom: Promise<Object> = dataManager.executeQuery(query);
let request: JasmineAjaxRequest;
let defaults: Object = {
'status': 200,
'contentType': 'application/json',
'responseText': JSON.stringify(d.data)
};
let responses: Object = {};
request = jasmine.Ajax.requests.mostRecent();
extend(responses, defaults, response);
request.respondWith(responses);
return {
promise: prom,
request: request
}
};
let gridObj: TreeGrid;
let elem: HTMLElement = createElement('div', { id: 'Grid' });
let request: JasmineAjaxRequest;
let dataManager: DataManager;
let originalTimeout: number;
beforeAll((done: Function) => {
let dataBound: EmitType<Object> = () => { done(); };
spyOn(window, 'fetch').and.returnValue(Promise.resolve(
new Response(JSON.stringify({ d: data.slice(0,3), __count: 3}), {
status: 200,
})
));
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 4000;
dataManager = new DataManager({
url: 'http://localhost:50499/Home/UrlData',
crossDomain: true
});
document.body.appendChild(elem);
gridObj = new TreeGrid(
{
dataSource: dataManager, dataBound: dataBound,
hasChildMapping: 'isParent',
idMapping: 'TaskID',
loadChildOnDemand: false,
parentIdMapping: 'parentID',
treeColumnIndex: 1,
columns: [
{ field: "TaskID", headerText: "Task Id" },
{ field: "TaskName", headerText: "Task Name" },
{ field: "StartDate", headerText: "Start Date" },
{ field: "EndDate", headerText: "End Date" },
{ field: "Progress", headerText: "Progress" }
]
});
gridObj.appendTo('#Grid');
request = window.fetch['calls'].mostRecent();
});
it('Render the data with expaned state', () => {
expect(gridObj.element.querySelectorAll('.e-treegridexpand').length).toBe(1);
expect(gridObj.element.querySelectorAll('.e-treegridcollapse').length).toBe(0);
expect(gridObj.getRows().length).toBe(3);
});
it('CollapseAll method testing', () => {
gridObj.collapseAll();
expect(gridObj.element.querySelectorAll('.e-treegridexpand').length).toBe(0);
});
it('ExpandAll method testing', () => {
gridObj.expandAll();
expect(gridObj.element.querySelectorAll('.e-treegridcollapse').length).toBe(0);
});
afterAll(() => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
gridObj.destroy();
remove(elem);
jasmine.Ajax.uninstall();
});
});