Skip to content

Commit b155f3e

Browse files
committed
chore(query-builder): commit/discard fields tests, mark QB tree comp as hidden
1 parent 2bc8b5d commit b155f3e

File tree

3 files changed

+89
-40
lines changed

3 files changed

+89
-40
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ export class QueryBuilderFunctions {
753753
expect(columnSpan.textContent.toLowerCase().trim()).toBe(columnText.toLowerCase(), 'incorrect chip column');
754754
expect(operatorSpan.textContent.toLowerCase().trim()).toBe(operatorText.toLowerCase(), 'incorrect chip operator');
755755
if (valueSpan != undefined && valueText != undefined) {
756-
expect(valueSpan.textContent.toLowerCase().trim()).toBe(valueText.toLowerCase(), 'incorrect chip filter value');
756+
expect(valueSpan.textContent.toLowerCase().trim().replaceAll(/\s/g, '')).toBe(valueText.toLowerCase().replaceAll(/\s/g, ''), 'incorrect chip filter value');
757757
}
758758
};
759759

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ class ExpressionOperandItem extends ExpressionItem {
117117
}
118118
}
119119

120+
/** @hidden */
120121
@Component({
121122
selector: 'igx-query-builder-tree',
122123
templateUrl: './query-builder-tree.component.html',

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

Lines changed: 87 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,45 +1059,6 @@ describe('IgxQueryBuilder', () => {
10591059
}`);
10601060
}));
10611061

1062-
it('Should disable value fields when isNestedQuery condition is selected', fakeAsync(() => {
1063-
//Run test for all data type fields of the Order entity
1064-
for (let i = 0; i <= 3; i++) {
1065-
QueryBuilderFunctions.clickQueryBuilderInitialAddGroupButton(fix, 0); // Click the initial 'Add Or Group' button.
1066-
tick(100);
1067-
fix.detectChanges();
1068-
1069-
QueryBuilderFunctions.selectEntityInEditModeExpression(fix, 1); // Select 'Orders' entity
1070-
tick(100);
1071-
fix.detectChanges();
1072-
1073-
QueryBuilderFunctions.selectColumnInEditModeExpression(fix, i); // Select 'OrderId','OrderName','OrderDate','Delivered' column.
1074-
1075-
let InConditionIndex;
1076-
switch(i){
1077-
case 0:
1078-
case 1: InConditionIndex = 10; break;// for string and number
1079-
case 2: InConditionIndex = 16; break; //for date
1080-
case 3: InConditionIndex = 7; break; // for boolean
1081-
}
1082-
1083-
//Verify 'In' disables value input and renders empty sub query
1084-
QueryBuilderFunctions.selectOperatorInEditModeExpression(fix, InConditionIndex); // Select 'In' operator.
1085-
QueryBuilderFunctions.verifyEditModeExpressionInputStates(fix, true, true, false, false);
1086-
let nestedTree = fix.debugElement.query(By.css(QueryBuilderConstants.QUERY_BUILDER_TREE));
1087-
expect(nestedTree).toBeDefined();
1088-
1089-
//Verify 'NotIn' disables value input and renders empty sub query
1090-
QueryBuilderFunctions.selectOperatorInEditModeExpression(fix, InConditionIndex + 1); // Select 'NotIn' operator.
1091-
QueryBuilderFunctions.verifyEditModeExpressionInputStates(fix, true, true, false, false);
1092-
nestedTree = fix.debugElement.query(By.css(QueryBuilderConstants.QUERY_BUILDER_TREE));
1093-
expect(nestedTree).toBeDefined();
1094-
1095-
const closeBtn = QueryBuilderFunctions.getQueryBuilderExpressionCloseButton(fix);
1096-
closeBtn.click();
1097-
fix.detectChanges();
1098-
}
1099-
}));
1100-
11011062
it('Should correctly apply an \'not-in\' column condition through UI.', fakeAsync(() => {
11021063
// Verify there is no expression.
11031064
expect(queryBuilder.expressionTree).toBeUndefined();
@@ -1183,6 +1144,45 @@ describe('IgxQueryBuilder', () => {
11831144
}`);
11841145
}));
11851146

1147+
it('Should disable value fields when isNestedQuery condition is selected', fakeAsync(() => {
1148+
//Run test for all data type fields of the Order entity
1149+
for (let i = 0; i <= 3; i++) {
1150+
QueryBuilderFunctions.clickQueryBuilderInitialAddGroupButton(fix, 0); // Click the initial 'Add Or Group' button.
1151+
tick(100);
1152+
fix.detectChanges();
1153+
1154+
QueryBuilderFunctions.selectEntityInEditModeExpression(fix, 1); // Select 'Orders' entity
1155+
tick(100);
1156+
fix.detectChanges();
1157+
1158+
QueryBuilderFunctions.selectColumnInEditModeExpression(fix, i); // Select 'OrderId','OrderName','OrderDate','Delivered' column.
1159+
1160+
let InConditionIndex;
1161+
switch (i) {
1162+
case 0:
1163+
case 1: InConditionIndex = 10; break;// for string and number
1164+
case 2: InConditionIndex = 16; break; //for date
1165+
case 3: InConditionIndex = 7; break; // for boolean
1166+
}
1167+
1168+
//Verify 'In' disables value input and renders empty sub query
1169+
QueryBuilderFunctions.selectOperatorInEditModeExpression(fix, InConditionIndex); // Select 'In' operator.
1170+
QueryBuilderFunctions.verifyEditModeExpressionInputStates(fix, true, true, false, false);
1171+
let nestedTree = fix.debugElement.query(By.css(QueryBuilderConstants.QUERY_BUILDER_TREE));
1172+
expect(nestedTree).toBeDefined();
1173+
1174+
//Verify 'NotIn' disables value input and renders empty sub query
1175+
QueryBuilderFunctions.selectOperatorInEditModeExpression(fix, InConditionIndex + 1); // Select 'NotIn' operator.
1176+
QueryBuilderFunctions.verifyEditModeExpressionInputStates(fix, true, true, false, false);
1177+
nestedTree = fix.debugElement.query(By.css(QueryBuilderConstants.QUERY_BUILDER_TREE));
1178+
expect(nestedTree).toBeDefined();
1179+
1180+
const closeBtn = QueryBuilderFunctions.getQueryBuilderExpressionCloseButton(fix);
1181+
closeBtn.click();
1182+
fix.detectChanges();
1183+
}
1184+
}));
1185+
11861186
it('Should correctly focus the search value input when editing the filtering expression', fakeAsync(() => {
11871187
//Create dateTime filtering expression
11881188
const tree = new FilteringExpressionsTree(FilteringLogic.And, null, 'Orders', ['OrderId']);
@@ -1685,6 +1685,31 @@ describe('IgxQueryBuilder', () => {
16851685
ControlsFunction.verifyButtonIsDisabled(parentCommitBtn as HTMLElement, false);
16861686
}));
16871687

1688+
it(`'In' condition 'commit' button should be disabled if there are no return fields in the nested query.`, fakeAsync(() => {
1689+
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
1690+
fix.detectChanges();
1691+
tick(100);
1692+
fix.detectChanges();
1693+
1694+
// Double-click the parent chip 'Products' to enter edit mode.
1695+
QueryBuilderFunctions.clickQueryBuilderTreeExpressionChip(fix, [0], true);
1696+
tick(50);
1697+
fix.detectChanges();
1698+
1699+
let commitBtn = QueryBuilderFunctions.getQueryBuilderExpressionCommitButton(fix);
1700+
ControlsFunction.verifyButtonIsDisabled(commitBtn as HTMLElement, false);
1701+
1702+
// Deselect all fields
1703+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [0], 1);
1704+
commitBtn = QueryBuilderFunctions.getQueryBuilderExpressionCommitButton(fix);
1705+
ControlsFunction.verifyButtonIsDisabled(commitBtn as HTMLElement);
1706+
1707+
// Select all fields
1708+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [0], 1);
1709+
commitBtn = QueryBuilderFunctions.getQueryBuilderExpressionCommitButton(fix);
1710+
ControlsFunction.verifyButtonIsDisabled(commitBtn as HTMLElement, false);
1711+
}));
1712+
16881713
it('Should collapse nested query when it is committed.', fakeAsync(() => {
16891714
// Click the initial 'Add Or Group' button.
16901715
QueryBuilderFunctions.clickQueryBuilderInitialAddGroupButton(fix, 0);
@@ -1711,6 +1736,29 @@ describe('IgxQueryBuilder', () => {
17111736
expect(fix.debugElement.query(By.css(`.${QueryBuilderConstants.QUERY_BUILDER_TREE}--level-1`)).nativeElement.checkVisibility()).toBeFalse();
17121737
}));
17131738

1739+
it(`Should discard the changes in the fields if 'close' button of nested query condition is clicked.`, fakeAsync(() => {
1740+
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
1741+
fix.detectChanges();
1742+
tick(100);
1743+
fix.detectChanges();
1744+
// Verify parent chip expression
1745+
QueryBuilderFunctions.verifyExpressionChipContent(fix, [0], 'OrderId', 'In', 'Products / Id');
1746+
1747+
// Double-click the parent chip 'Products' to enter edit mode.
1748+
QueryBuilderFunctions.clickQueryBuilderTreeExpressionChip(fix, [0], true);
1749+
tick(50);
1750+
fix.detectChanges();
1751+
1752+
// Select 'Product Name' fields
1753+
QueryBuilderFunctions.selectFieldsInEditModeExpression(fix, [1, 2], 1);
1754+
const closeBtn = QueryBuilderFunctions.getQueryBuilderExpressionCloseButton(fix);
1755+
closeBtn.click();
1756+
tick(50);
1757+
fix.detectChanges();
1758+
// Verify parent chip expression is not changed
1759+
QueryBuilderFunctions.verifyExpressionChipContent(fix, [0], 'OrderId', 'In', 'Products / Id');
1760+
}));
1761+
17141762
it(`Should toggle the nested query on 'expand'/'collapse' button click.`, fakeAsync(() => {
17151763
queryBuilder.expressionTree = QueryBuilderFunctions.generateExpressionTree();
17161764
fix.detectChanges();

0 commit comments

Comments
 (0)