Skip to content

Commit 47fc669

Browse files
committed
Fixing hierarchical grid tests.
1 parent fa450a1 commit 47fc669

File tree

3 files changed

+37
-21
lines changed

3 files changed

+37
-21
lines changed

src/iggrid/iggridbase.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,12 @@ export class IgGridBase<Model> extends IgControlBase<Model> implements AfterCont
8484
}
8585
updateRow(rec, currValue, key) {
8686
const pkKey = this["primaryKey"] || this.options["primaryKey"];
87+
let widgetName = this._widgetName;
88+
if (this._widgetName === "igHierarchicalGrid") {
89+
widgetName = "igGrid";
90+
}
8791
const element = jQuery(this._el);
88-
const grid = element.data(this._widgetName);
92+
const grid = element.data(widgetName);
8993
const tr = element.find("tr[data-id='" + rec[pkKey] + "']");
9094
const column = grid.columnByKey(key);
9195
let newFormattedVal;

src/ighierarchicalgrid/ighierarchicalgrid.component.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ export class IgHierarchicalGridComponent extends IgGridBase<IgHierarchicalGrid>
4444
super.updateRow(rec, currValue, key);
4545
}
4646
}
47+
public markForCheck(){
48+
super.markForCheck();
49+
const element = jQuery(this._el);
50+
const childrenDataProperty = this["childrenDataProperty"] || this.options.childrenDataProperty;
51+
var childGrids= element.data(this._widgetName).allChildrenWidgets();
52+
for (var i = 0; i < childGrids.length; i++) {
53+
childGrids[i].dataBind();
54+
}
55+
}
4756
/**
4857
* Data binds the hierarchical grid. No child grids will be created or rendered by default, unless there is initialExpandDepth >= 0 set.
4958
*/

tests/unit/ighierarchicalgrid/hierarchicalgrid.spec.ts

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,28 +29,28 @@ export function main() {
2929
});
3030

3131
it('should reflect changes when a record in the data changes', (done) => {
32-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
32+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [options]="opts" [dataSource]="data"></ig-hierarchical-grid></div>';
3333
TestBed.overrideComponent(TestComponent, {
3434
set: {
3535
template: template
3636
}
3737
});
3838
TestBed.compileComponents().then(() => {
39-
let fixture = TestBed.createComponent(TestComponent);
40-
fixture.detectChanges();
41-
fixture.componentInstance.data[0].Name = "Test";
39+
let fixture = TestBed.createComponent(TestComponent);
4240
fixture.detectChanges();
43-
setTimeout(() => {
44-
fixture.detectChanges();
45-
expect($(fixture.debugElement.nativeElement).find("#grid1 tr:first td[aria-describedby='grid1_Name']").text())
46-
.toBe("Test");
47-
done();
48-
}, 10);
41+
fixture.componentInstance.data[0].Name = "";
42+
fixture.detectChanges();
43+
fixture.componentInstance.data[0].Name = "Test";
44+
fixture.detectChanges();
45+
expect($(fixture.debugElement.nativeElement).find("#grid1 tr:first td[aria-describedby='grid1_Name']").text())
46+
.toBe("Test");
47+
done();
48+
4949
});
5050
});
5151

5252
it('should reflect changes when a record is removed from the data', (done) => {
53-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
53+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
5454
TestBed.overrideComponent(TestComponent, {
5555
set: {
5656
template: template
@@ -74,7 +74,7 @@ export function main() {
7474
});
7575

7676
it('should reflect changes when a record is added from the data', (done) => {
77-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
77+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
7878
TestBed.overrideComponent(TestComponent, {
7979
set: {
8080
template: template
@@ -97,7 +97,7 @@ export function main() {
9797
});
9898

9999
it('should reflect changes when records in the grid are updated', (done) => {
100-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
100+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
101101
TestBed.overrideComponent(TestComponent, {
102102
set: {
103103
template: template
@@ -119,7 +119,7 @@ export function main() {
119119
});
120120

121121
it('should reflect changes when records in the grid are deleted', (done) => {
122-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
122+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
123123
TestBed.overrideComponent(TestComponent, {
124124
set: {
125125
template: template
@@ -140,7 +140,7 @@ export function main() {
140140
});
141141

142142
it('should reflect changes when records in the grid are added', (done) => {
143-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
143+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
144144
TestBed.overrideComponent(TestComponent, {
145145
set: {
146146
template: template
@@ -160,7 +160,7 @@ export function main() {
160160
});
161161

162162
it('should reflect changes when child records are changed', (done) => {
163-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
163+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
164164
TestBed.overrideComponent(TestComponent, {
165165
set: {
166166
template: template
@@ -186,7 +186,7 @@ export function main() {
186186
});
187187

188188
it('should reflect changes when a value in the child grid changes', (done) => {
189-
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [changeDetectionInterval]="cdi"></ig-hierarchical-grid></div>';
189+
var template = '<div><ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="opts" [dataSource]="data" #hgrid></ig-hierarchical-grid></div>';
190190
TestBed.overrideComponent(TestComponent, {
191191
set: {
192192
template: template
@@ -200,6 +200,8 @@ export function main() {
200200
$("#grid1").igHierarchicalGrid("expand", row, () => {
201201
//change data child data
202202
fixture.componentInstance.data[0].Products[0].Name = "Custom Name";
203+
fixture.componentInstance.viewChild.markForCheck();
204+
203205
setTimeout(() => {
204206
fixture.detectChanges();
205207
expect($($(fixture.debugElement.nativeElement).find("#grid1_0_Products_child").igGrid("cellAt", 1, 0)).text())
@@ -234,7 +236,7 @@ export function main() {
234236
});
235237
});
236238
it("should detect changes when original data source is changed but the data source length is the same.", (done) => {
237-
var template = '<ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="optsNew"></ig-hierarchical-grid>';
239+
var template = '<ig-hierarchical-grid [(widgetId)]="gridID" [(options)]="optsNew" [dataSource]="singleRecData"></ig-hierarchical-grid>';
238240
TestBed.overrideComponent(TestComponent, {
239241
set: {
240242
template: template
@@ -316,7 +318,8 @@ class TestComponent {
316318
this.gridID2 = "hgrid";
317319
this.opts = {
318320
autoCommit: true,
319-
dataSource: this.data,
321+
localSchemaTransform: false,
322+
//dataSource: this.data,
320323
primaryKey: "ID",
321324
width: "100%",
322325
height: "400px",
@@ -348,7 +351,7 @@ class TestComponent {
348351
};
349352
this.optsNew = {
350353
autoCommit: true,
351-
dataSource: this.singleRecData,
354+
//dataSource: this.singleRecData,
352355
primaryKey: "ID",
353356
width: "100%",
354357
height: "400px",

0 commit comments

Comments
 (0)