Skip to content

Commit e049b15

Browse files
authored
Merge pull request #15614 from IgniteUI/ipetrov/dnd-test-break-down-19.1
fix(query-builder): refactor drag and drop test - 19.1.x
2 parents b699f4d + b6780ab commit e049b15

File tree

2 files changed

+81
-78
lines changed

2 files changed

+81
-78
lines changed

projects/igniteui-angular/src/lib/query-builder/query-builder-functions.spec.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,4 +934,71 @@ export class QueryBuilderFunctions {
934934

935935
return [dropGhost, prevElement, nextElement, newChipContents];
936936
}
937+
938+
public static verifyGhostPositionOnMouseDrag(fix: ComponentFixture<any>, draggedChip: any, X: number, Y: number, moveDown: boolean) {
939+
const ghostPositionVisits: boolean[] = [false, false, false, false, false, false, false, false];
940+
const draggedChipCenter = QueryBuilderFunctions.getElementCenter(draggedChip.chipArea.nativeElement);
941+
const dragDir = draggedChip.dragDirective;
942+
943+
//pickup chip
944+
dragDir.onPointerDown({ pointerId: 1, pageX: draggedChipCenter.X, pageY: draggedChipCenter.Y });
945+
fix.detectChanges();
946+
947+
//trigger ghost
948+
QueryBuilderFunctions.dragMove(dragDir, draggedChipCenter.X + 10, draggedChipCenter.Y + 10);
949+
fix.detectChanges();
950+
951+
spyOn(dragDir.ghostElement, 'dispatchEvent').and.callThrough();
952+
953+
let target = moveDown ? 350 : 0;
954+
let shift = moveDown ? 1 : -1
955+
//Drag ghost up or down and check if drop ghost is rendered in the expected positions
956+
for (let i = moveDown ? 0 : 350; moveDown ? i <= target : i >= target; i += shift) {
957+
Y += moveDown ? 1 : -1;
958+
959+
QueryBuilderFunctions.dragMove(dragDir, X, Y);
960+
tick();
961+
fix.detectChanges();
962+
963+
const [dropGhost, prevElement, nextElement] = QueryBuilderFunctions.getDropGhostAndItsSiblings(fix);
964+
965+
if (i < 40 && !ghostPositionVisits[0]) {
966+
if (i <= 42) tick(50);
967+
if (!dropGhost) ghostPositionVisits[0] = true;
968+
}
969+
970+
if (i > 35 && i < 122 && !ghostPositionVisits[1]) {
971+
if (dropGhost && !prevElement && nextElement == 'OrderName Equals foo') ghostPositionVisits[1] = true;
972+
}
973+
974+
if (i > 120 && i < 165 && !ghostPositionVisits[2]) {
975+
if (dropGhost && prevElement == 'OrderName Equals foo' && nextElement === 'or OrderName Ends With a OrderDate Today') ghostPositionVisits[2] = true;
976+
}
977+
978+
if (i > 166 && i < 201 && !ghostPositionVisits[3]) {
979+
if (dropGhost && !prevElement && nextElement == 'OrderName Ends With a') ghostPositionVisits[3] = true;
980+
}
981+
982+
if (i > 202 && i < 241 && !ghostPositionVisits[4]) {
983+
if (dropGhost && prevElement == 'OrderName Ends With a' && nextElement === 'OrderDate Today') ghostPositionVisits[4] = true;
984+
}
985+
986+
if (i > 240 && i < 273 && !ghostPositionVisits[5]) {
987+
if (dropGhost && prevElement == 'OrderDate Today' && !nextElement) ghostPositionVisits[5] = true;
988+
}
989+
990+
if (i > 256 && i < 316 && !ghostPositionVisits[6]) {
991+
if (X > 400 || (dropGhost && prevElement == 'or OrderName Ends With a OrderDate Today' && !nextElement)) ghostPositionVisits[6] = true;
992+
}
993+
994+
if (i > 320 && !ghostPositionVisits[7]) {
995+
if (i >= 340) tick(50);
996+
if (!dropGhost) ghostPositionVisits[7] = true;
997+
}
998+
}
999+
1000+
//When dragged to the end, check results
1001+
expect(ghostPositionVisits).not.toContain(false,
1002+
`Ghost was not rendered on position(s) ${ghostPositionVisits.reduce((arr, e, ix) => ((e == false) && arr.push(ix), arr), []).toString()}`);
1003+
}
9371004
}

projects/igniteui-angular/src/lib/query-builder/query-builder.component.spec.ts

Lines changed: 14 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2461,88 +2461,24 @@ describe('IgxQueryBuilder', () => {
24612461
expect(chipComponents[1].nativeElement.getBoundingClientRect().height).toBe(0);
24622462
});
24632463

2464-
it('Should render drop ghost properly when mouse dragged.', fakeAsync(() => {
2464+
it('Should render drop ghost properly when mouse dragged down on the left.', fakeAsync(() => {
24652465
const draggedChip = chipComponents[1].componentInstance;
2466-
const draggedChipCenter = QueryBuilderFunctions.getElementCenter(draggedChip.chipArea.nativeElement);
2467-
const dragDir = draggedChip.dragDirective;
2468-
2469-
let X = 100, Y = 75;
2470-
2471-
//pickup chip
2472-
dragDir.onPointerDown({ pointerId: 1, pageX: draggedChipCenter.X, pageY: draggedChipCenter.Y });
2473-
fix.detectChanges();
2474-
2475-
//trigger ghost
2476-
QueryBuilderFunctions.dragMove(dragDir, draggedChipCenter.X + 10, draggedChipCenter.Y + 10);
2477-
fix.detectChanges();
2478-
2479-
spyOn(dragDir.ghostElement, 'dispatchEvent').and.callThrough();
2480-
2481-
const ghostPositionVisits: boolean[] = [false, false, false, false, false, false, false, false]
2482-
2483-
let i = 0, pass = 1, inc = 1;
2484-
2485-
//Drag ghost up and down four times and check if drop ghost is rendered in the expected positions
2486-
while (pass <= 4) {
2487-
i += inc;
2488-
Y += inc;
2489-
2490-
QueryBuilderFunctions.dragMove(dragDir, X, Y);
2491-
tick();
2492-
fix.detectChanges();
2493-
2494-
const [dropGhost, prevElement, nextElement] = QueryBuilderFunctions.getDropGhostAndItsSiblings(fix);
2495-
2496-
if (i < 40 && !ghostPositionVisits[0]) {
2497-
if (i <= 42) tick(50);
2498-
if (!dropGhost) ghostPositionVisits[0] = true;
2499-
}
2500-
2501-
if (i > 35 && i < 122 && !ghostPositionVisits[1]) {
2502-
if (dropGhost && !prevElement && nextElement == 'OrderName Equals foo') ghostPositionVisits[1] = true;
2503-
}
2504-
2505-
if (i > 120 && i < 165 && !ghostPositionVisits[2]) {
2506-
if (dropGhost && prevElement == 'OrderName Equals foo' && nextElement === 'or OrderName Ends With a OrderDate Today') ghostPositionVisits[2] = true;
2507-
}
2508-
2509-
if (i > 166 && i < 201 && !ghostPositionVisits[3]) {
2510-
if (dropGhost && !prevElement && nextElement == 'OrderName Ends With a') ghostPositionVisits[3] = true;
2511-
}
2512-
2513-
if (i > 202 && i < 241 && !ghostPositionVisits[4]) {
2514-
if (dropGhost && prevElement == 'OrderName Ends With a' && nextElement === 'OrderDate Today') ghostPositionVisits[4] = true;
2515-
}
2516-
2517-
if (i > 240 && i < 273 && !ghostPositionVisits[5]) {
2518-
if (dropGhost && prevElement == 'OrderDate Today' && !nextElement) ghostPositionVisits[5] = true;
2519-
}
2520-
2521-
if (i > 256 && i < 316 && !ghostPositionVisits[6]) {
2522-
if (pass > 2 || (dropGhost && prevElement == 'or OrderName Ends With a OrderDate Today' && !nextElement)) ghostPositionVisits[6] = true;
2523-
}
2524-
2525-
if (i > 320 && !ghostPositionVisits[7]) {
2526-
if (i >= 340) tick(50);
2527-
if (!dropGhost) ghostPositionVisits[7] = true;
2528-
}
2529-
2530-
//When dragged to the end, check results and reverse direction for next pass
2531-
if (i === 350 || i === 0) {
2532-
expect(ghostPositionVisits).not.toContain(false,
2533-
`Ghost was not rendered on position(s) ${ghostPositionVisits.reduce((arr, e, ix) => ((e == false) && arr.push(ix), arr), []).toString()} on pass:${pass}`);
2466+
QueryBuilderFunctions.verifyGhostPositionOnMouseDrag(fix, draggedChip, 100, 75, true);
2467+
}));
25342468

2535-
ghostPositionVisits.fill(false);
2536-
pass++;
2537-
inc *= -1;
2538-
if (pass % 2 === 0) Y -= ROW_HEIGHT;
2539-
if (pass % 2 !== 0) Y += ROW_HEIGHT;
2469+
it('Should render drop ghost properly when mouse dragged up on the left.', fakeAsync(() => {
2470+
const draggedChip = chipComponents[1].componentInstance;
2471+
QueryBuilderFunctions.verifyGhostPositionOnMouseDrag(fix, draggedChip, 100, 75 + 350, false);
2472+
}));
25402473

2541-
//go to the left and test the whole chip div as well(blank space to the right)
2542-
if (pass == 3) X += 400;
2543-
}
2544-
}
2474+
it('Should render drop ghost properly when mouse dragged down on the right.', fakeAsync(() => {
2475+
const draggedChip = chipComponents[1].componentInstance;
2476+
QueryBuilderFunctions.verifyGhostPositionOnMouseDrag(fix, draggedChip, 500, 75, true);
2477+
}));
25452478

2479+
it('Should render drop ghost properly when mouse dragged up on the right.', fakeAsync(() => {
2480+
const draggedChip = chipComponents[1].componentInstance;
2481+
QueryBuilderFunctions.verifyGhostPositionOnMouseDrag(fix, draggedChip, 500, 75 + 350, false);
25462482
}));
25472483

25482484
it('Should position drop ghost below the target condition on dragging down.', () => {

0 commit comments

Comments
 (0)