@@ -24,6 +24,7 @@ import { IFilteringEventArgs } from '../public_api';
2424import { SampleTestData } from '../../test-utils/sample-test-data.spec' ;
2525import { QueryBuilderConstants , QueryBuilderFunctions } from '../../query-builder/query-builder-functions.spec' ;
2626import { By } from '@angular/platform-browser' ;
27+ import { IgxDateTimeEditorDirective } from '../../directives/date-time-editor/date-time-editor.directive' ;
2728
2829describe ( 'IgxGrid - Advanced Filtering #grid - ' , ( ) => {
2930 configureTestSuite ( ( ( ) => {
@@ -633,10 +634,11 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
633634 QueryBuilderFunctions . clickQueryBuilderColumnSelect ( fix ) ;
634635 fix . detectChanges ( ) ;
635636 const dropdownItems = QueryBuilderFunctions . getQueryBuilderSelectDropdownItems ( queryBuilderElement ) ;
636- expect ( dropdownItems . length ) . toBe ( 3 ) ;
637+ expect ( dropdownItems . length ) . toBe ( 4 ) ;
637638 expect ( ( dropdownItems [ 0 ] as HTMLElement ) . innerText ) . toBe ( 'HeaderID' ) ;
638639 expect ( ( dropdownItems [ 1 ] as HTMLElement ) . innerText ) . toBe ( 'ProductName' ) ;
639640 expect ( ( dropdownItems [ 2 ] as HTMLElement ) . innerText ) . toBe ( 'Another Field' ) ;
641+ expect ( ( dropdownItems [ 3 ] as HTMLElement ) . innerText ) . toBe ( 'ReleaseTime' ) ;
640642 } ) ) ;
641643
642644 it ( 'Should scroll the adding buttons into view when the add icon of a chip is clicked.' , fakeAsync ( ( ) => {
@@ -1050,112 +1052,113 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
10501052 expect ( rows . length ) . toEqual ( 1 , 'Wrong filtered rows count' ) ;
10511053 } ) ) ;
10521054
1053- // it('DateTime: Should set editorOptions.dateTimeFormat prop as inputFormat for the filter value editor', fakeAsync(() => {
1054- // const releaseDateColumn = grid.getColumnByName('ReleaseDate');
1055- // releaseDateColumn.dataType = 'dateTime';
1056- // releaseDateColumn.editorOptions = {
1057- // dateTimeFormat: 'dd-MM-yyyy HH:mm aaaaa'
1058- // }
1059- // fix.detectChanges();
1060-
1061- // grid.openAdvancedFilteringDialog();
1062- // fix.detectChanges();
1063-
1064- // GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
1065- // tick(100);
1066- // fix.detectChanges();
1067-
1068- // GridFunctions.clickAdvancedFilteringColumnSelect(fix);
1069- // fix.detectChanges();
1070- // const dropdownItems = GridFunctions.getAdvancedFilteringSelectDropdownItems(fix);
1071- // expect(dropdownItems[4].innerText).toBe('ReleaseDate');
1072-
1073- // selectColumnInEditModeExpression(fix, 4); // Select 'ReleaseDate' column
1074- // selectOperatorInEditModeExpression(fix, 0);
1075-
1076- // const dateTimeEditor = fix.debugElement.query(By.directive(IgxDateTimeEditorDirective))
1077- // .injector.get(IgxDateTimeEditorDirective);
1078- // expect(dateTimeEditor.inputFormat.normalize('NFKC')).toMatch(releaseDateColumn.editorOptions.dateTimeFormat);
1079- // expect(dateTimeEditor.displayFormat.normalize('NFKC')).toMatch(releaseDateColumn.pipeArgs.format);
1080- // expect(dateTimeEditor.locale).toMatch(grid.locale);
1081- // }));
1082-
1083- // it('DateTime: Should set pipeArgs.format as inputFormat for the filter editor if numeric and editorOptions.dateTimeFormat not set', fakeAsync(() => {
1084- // const releaseDateColumn = grid.getColumnByName('ReleaseDate');
1085- // releaseDateColumn.dataType = 'dateTime';
1086- // releaseDateColumn.pipeArgs = {
1087- // format: 'dd-MM-yyyy HH:mm aaaaa'
1088- // }
1089- // fix.detectChanges();
1090-
1091- // grid.openAdvancedFilteringDialog();
1092- // fix.detectChanges();
1093-
1094- // GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
1095- // tick(100);
1096- // fix.detectChanges();
1097-
1098- // GridFunctions.clickAdvancedFilteringColumnSelect(fix);
1099- // fix.detectChanges();
1100-
1101- // selectColumnInEditModeExpression(fix, 4);
1102- // selectOperatorInEditModeExpression(fix, 0);
1103-
1104- // const dateTimeEditor = fix.debugElement.query(By.directive(IgxDateTimeEditorDirective))
1105- // .injector.get(IgxDateTimeEditorDirective);
1106- // expect(dateTimeEditor.inputFormat.normalize('NFKC')).toMatch(releaseDateColumn.pipeArgs.format);
1107- // expect(dateTimeEditor.displayFormat.normalize('NFKC')).toMatch(releaseDateColumn.pipeArgs.format);
1108- // }));
1109-
1110- // it('Time: Should set editorOptions.dateTimeFormat prop as inputFormat for the filter value editor', fakeAsync(() => {
1111- // const releaseTimeColumn = grid.getColumnByName('ReleaseTime');
1112- // releaseTimeColumn.editorOptions = {
1113- // dateTimeFormat: 'hh:mm'
1114- // }
1115- // fix.detectChanges();
1116-
1117- // grid.openAdvancedFilteringDialog();
1118- // fix.detectChanges();
1119-
1120- // GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
1121- // tick(100);
1122- // fix.detectChanges();
1123-
1124- // GridFunctions.clickAdvancedFilteringColumnSelect(fix);
1125- // fix.detectChanges();
1126-
1127- // selectColumnInEditModeExpression(fix, 6);
1128- // selectOperatorInEditModeExpression(fix, 0);
1129-
1130- // const dateTimeEditor = fix.debugElement.query(By.directive(IgxDateTimeEditorDirective))
1131- // .injector.get(IgxDateTimeEditorDirective);
1132- // expect(dateTimeEditor.inputFormat.normalize('NFKC')).toMatch(releaseTimeColumn.editorOptions.dateTimeFormat);
1133- // }));
1134-
1135- // it('Time: Should set pipeArgs.format as inputFormat for the filter editor if numeric and editorOptions.dateTimeFormat not set', fakeAsync(() => {
1136- // const releaseTimeColumn = grid.getColumnByName('ReleaseTime');
1137- // releaseTimeColumn.pipeArgs = {
1138- // format: 'hh:mm'
1139- // }
1140- // fix.detectChanges();
1141-
1142- // grid.openAdvancedFilteringDialog();
1143- // fix.detectChanges();
1144-
1145- // GridFunctions.clickAdvancedFilteringInitialAddGroupButton(fix, 0);
1146- // tick(100);
1147- // fix.detectChanges();
1148-
1149- // GridFunctions.clickAdvancedFilteringColumnSelect(fix);
1150- // fix.detectChanges();
1151-
1152- // selectColumnInEditModeExpression(fix, 6);
1153- // selectOperatorInEditModeExpression(fix, 0);
1154-
1155- // const dateTimeEditor = fix.debugElement.query(By.directive(IgxDateTimeEditorDirective))
1156- // .injector.get(IgxDateTimeEditorDirective);
1157- // expect(dateTimeEditor.inputFormat.normalize('NFKC')).toMatch(releaseTimeColumn.pipeArgs.format);
1158- // }));
1055+ it ( 'DateTime: Should set editorOptions.dateTimeFormat prop as inputFormat for the filter value editor' , fakeAsync ( ( ) => {
1056+ const releaseDateColumn = grid . getColumnByName ( 'ReleaseDate' ) ;
1057+ releaseDateColumn . dataType = 'dateTime' ;
1058+ releaseDateColumn . editorOptions = {
1059+ dateTimeFormat : 'dd-MM-yyyy HH:mm aaaaa'
1060+ }
1061+ fix . detectChanges ( ) ;
1062+
1063+ grid . openAdvancedFilteringDialog ( ) ;
1064+ fix . detectChanges ( ) ;
1065+
1066+ const queryBuilderElement : HTMLElement = fix . debugElement . queryAll ( By . css ( `.${ QueryBuilderConstants . QUERY_BUILDER_TREE } ` ) ) [ 0 ] . nativeElement ;
1067+ QueryBuilderFunctions . clickQueryBuilderInitialAddGroupButton ( fix , 0 ) ;
1068+ tick ( 100 ) ;
1069+ fix . detectChanges ( ) ;
1070+
1071+ QueryBuilderFunctions . clickQueryBuilderColumnSelect ( fix ) ;
1072+ fix . detectChanges ( ) ;
1073+ const dropdownItems = QueryBuilderFunctions . getQueryBuilderSelectDropdownItems ( queryBuilderElement ) ;
1074+ expect ( ( dropdownItems [ 4 ] as HTMLElement ) . innerText ) . toBe ( 'ReleaseDate' ) ;
1075+
1076+ QueryBuilderFunctions . selectColumnInEditModeExpression ( fix , 4 ) ; // Select 'ReleaseDate' column
1077+ QueryBuilderFunctions . selectOperatorInEditModeExpression ( fix , 0 ) ;
1078+
1079+ const dateTimeEditor = fix . debugElement . query ( By . directive ( IgxDateTimeEditorDirective ) )
1080+ . injector . get ( IgxDateTimeEditorDirective ) ;
1081+ expect ( dateTimeEditor . inputFormat . normalize ( 'NFKC' ) ) . toMatch ( releaseDateColumn . editorOptions . dateTimeFormat ) ;
1082+ expect ( dateTimeEditor . displayFormat . normalize ( 'NFKC' ) ) . toMatch ( releaseDateColumn . pipeArgs . format ) ;
1083+ expect ( dateTimeEditor . locale ) . toMatch ( grid . locale ) ;
1084+ } ) ) ;
1085+
1086+ it ( 'DateTime: Should set pipeArgs.format as inputFormat for the filter editor if numeric and editorOptions.dateTimeFormat not set' , fakeAsync ( ( ) => {
1087+ const releaseDateColumn = grid . getColumnByName ( 'ReleaseDate' ) ;
1088+ releaseDateColumn . dataType = 'dateTime' ;
1089+ releaseDateColumn . pipeArgs = {
1090+ format : 'dd-MM-yyyy HH:mm aaaaa'
1091+ }
1092+ fix . detectChanges ( ) ;
1093+
1094+ grid . openAdvancedFilteringDialog ( ) ;
1095+ fix . detectChanges ( ) ;
1096+
1097+ QueryBuilderFunctions . clickQueryBuilderInitialAddGroupButton ( fix , 0 ) ;
1098+ tick ( 100 ) ;
1099+ fix . detectChanges ( ) ;
1100+
1101+ QueryBuilderFunctions . clickQueryBuilderColumnSelect ( fix ) ;
1102+ fix . detectChanges ( ) ;
1103+
1104+ QueryBuilderFunctions . selectColumnInEditModeExpression ( fix , 4 ) ;
1105+ QueryBuilderFunctions . selectOperatorInEditModeExpression ( fix , 0 ) ;
1106+
1107+ const dateTimeEditor = fix . debugElement . query ( By . directive ( IgxDateTimeEditorDirective ) )
1108+ . injector . get ( IgxDateTimeEditorDirective ) ;
1109+ expect ( dateTimeEditor . inputFormat . normalize ( 'NFKC' ) ) . toMatch ( releaseDateColumn . pipeArgs . format ) ;
1110+ expect ( dateTimeEditor . displayFormat . normalize ( 'NFKC' ) ) . toMatch ( releaseDateColumn . pipeArgs . format ) ;
1111+ } ) ) ;
1112+
1113+ it ( 'Time: Should set editorOptions.dateTimeFormat prop as inputFormat for the filter value editor' , fakeAsync ( ( ) => {
1114+ const releaseTimeColumn = grid . getColumnByName ( 'ReleaseTime' ) ;
1115+ releaseTimeColumn . editorOptions = {
1116+ dateTimeFormat : 'hh:mm'
1117+ }
1118+ fix . detectChanges ( ) ;
1119+
1120+ grid . openAdvancedFilteringDialog ( ) ;
1121+ fix . detectChanges ( ) ;
1122+
1123+ QueryBuilderFunctions . clickQueryBuilderInitialAddGroupButton ( fix , 0 ) ;
1124+ tick ( 100 ) ;
1125+ fix . detectChanges ( ) ;
1126+
1127+ QueryBuilderFunctions . clickQueryBuilderColumnSelect ( fix ) ;
1128+ fix . detectChanges ( ) ;
1129+
1130+ QueryBuilderFunctions . selectColumnInEditModeExpression ( fix , 6 ) ;
1131+ QueryBuilderFunctions . selectOperatorInEditModeExpression ( fix , 0 ) ;
1132+
1133+ const dateTimeEditor = fix . debugElement . query ( By . directive ( IgxDateTimeEditorDirective ) )
1134+ . injector . get ( IgxDateTimeEditorDirective ) ;
1135+ expect ( dateTimeEditor . inputFormat . normalize ( 'NFKC' ) ) . toMatch ( releaseTimeColumn . editorOptions . dateTimeFormat ) ;
1136+ } ) ) ;
1137+
1138+ it ( 'Time: Should set pipeArgs.format as inputFormat for the filter editor if numeric and editorOptions.dateTimeFormat not set' , fakeAsync ( ( ) => {
1139+ const releaseTimeColumn = grid . getColumnByName ( 'ReleaseTime' ) ;
1140+ releaseTimeColumn . pipeArgs = {
1141+ format : 'hh:mm'
1142+ }
1143+ fix . detectChanges ( ) ;
1144+
1145+ grid . openAdvancedFilteringDialog ( ) ;
1146+ fix . detectChanges ( ) ;
1147+
1148+ QueryBuilderFunctions . clickQueryBuilderInitialAddGroupButton ( fix , 0 ) ;
1149+ tick ( 100 ) ;
1150+ fix . detectChanges ( ) ;
1151+
1152+ QueryBuilderFunctions . clickQueryBuilderColumnSelect ( fix ) ;
1153+ fix . detectChanges ( ) ;
1154+
1155+ QueryBuilderFunctions . selectColumnInEditModeExpression ( fix , 6 ) ;
1156+ QueryBuilderFunctions . selectOperatorInEditModeExpression ( fix , 0 ) ;
1157+
1158+ const dateTimeEditor = fix . debugElement . query ( By . directive ( IgxDateTimeEditorDirective ) )
1159+ . injector . get ( IgxDateTimeEditorDirective ) ;
1160+ expect ( dateTimeEditor . inputFormat . normalize ( 'NFKC' ) ) . toMatch ( releaseTimeColumn . pipeArgs . format ) ;
1161+ } ) ) ;
11591162
11601163 it ( 'should handle advanced filtering correctly when grid columns and data are dynamically changed' , fakeAsync ( ( ) => {
11611164 const fixture = TestBed . createComponent ( IgxGridAdvancedFilteringDynamicColumnsComponent ) ;
0 commit comments