@@ -38,6 +38,8 @@ import {BreakpointObserver} from "@angular/cdk/layout";
38
38
import { FilesCacheService } from "../files-cache/files-cache.service" ;
39
39
import { mockFilesCacheService } from "../files-cache/files-cache.service.spec" ;
40
40
import { RuleService } from "../rules/rule.service" ;
41
+ import { MatTooltipModule } from "@angular/material/tooltip" ;
42
+ import { MatTooltipHarness } from "@angular/material/tooltip/testing" ;
41
43
42
44
function mockRenderAndWaitForChanges ( ) {
43
45
let fixture = MockRender ( FileListComponent , null , { reset : true } ) ;
@@ -62,6 +64,7 @@ describe('FileListComponent', () => {
62
64
. keep ( MatChipsModule )
63
65
. keep ( MatSortModule )
64
66
. keep ( BreakpointObserver )
67
+ . keep ( MatTooltipModule )
65
68
. provide ( {
66
69
provide : FilesCacheService ,
67
70
useValue : mock < FilesCacheService > ( )
@@ -526,23 +529,29 @@ describe('FileListComponent', () => {
526
529
527
530
it ( 'should prevent category assignment when the file categories were automatically assigned' , fakeAsync ( async ( ) => {
528
531
// Arrange
529
- let file = mockFileElement ( 'name' ) ;
530
- mockFilesCacheService ( [ file ] , true ) ;
532
+ let folder = mockFolderElement ( 'Auto' ) ;
533
+ let file = mockFileElement ( 'name' , folder . id ) ;
534
+ mockFilesCacheService ( [ file , folder ] , true ) ;
531
535
532
536
let ruleService = ngMocks . get ( RuleService ) ;
533
537
let fileToMatchingRuleMap = new Map ( ) ;
534
- fileToMatchingRuleMap . set ( file . id , "existing rule " ) ;
538
+ fileToMatchingRuleMap . set ( file . id , "Existing Rule " ) ;
535
539
when ( ( ) => ruleService . getFileToMatchingRuleMap ( ) ) . thenResolve ( fileToMatchingRuleMap ) ;
536
540
537
541
let fixture = mockRenderAndWaitForChanges ( ) ;
538
542
let page = new Page ( fixture ) ;
539
543
540
544
// Act
541
545
Page . openItemMenu ( 'name' ) ;
542
- let isMenuDisabled = await page . isMenuAssignCategoryDisabled ( ) ;
543
546
544
547
// Assert
548
+ fixture . detectChanges ( ) ;
549
+ flush ( ) ;
550
+ let isMenuDisabled = await page . isMenuAssignCategoryDisabled ( ) ;
545
551
expect ( isMenuDisabled ) . toBeTruthy ( ) ;
552
+ let tooltip = await page . getMenuAssignCategoryTooltip ( ) ;
553
+ expect ( tooltip ) . toEqual ( 'Automatically assigned by rule "Existing Rule"' ) ;
554
+ expect ( Page . getTableRows ( ) ) . toEqual ( [ [ 'name' , 'calculateAuto' , 'Jan 1, 2000, 12:00:00 AM' , '0 B' , 'more_vert' ] ] ) ;
546
555
} ) )
547
556
} )
548
557
@@ -878,15 +887,25 @@ class Page {
878
887
}
879
888
880
889
async clickMenuTrash ( ) {
881
- await this . clickMenu ( '.trash-file' ) ;
890
+ let matMenuItemHarness = await this . getMenu ( '.trash-file' ) ;
891
+ await matMenuItemHarness . click ( ) ;
882
892
}
883
893
884
894
async clickMenuAssignCategory ( ) {
885
- await this . clickMenu ( '.set-category-file' ) ;
895
+ let matMenuItemHarness = await this . getMenu ( '.set-category-file' ) ;
896
+ await matMenuItemHarness . click ( ) ;
897
+ }
898
+
899
+ async isMenuAssignCategoryDisabled ( ) {
900
+ let matMenuItemHarness = await this . getMenu ( '.set-category-file' ) ;
901
+ return matMenuItemHarness . isDisabled ( ) ;
886
902
}
887
903
888
- isMenuAssignCategoryDisabled ( ) {
889
- return this . isMenuDisabled ( '.set-category-file' ) ;
904
+ async getMenuAssignCategoryTooltip ( ) {
905
+ // There is only one toolTip in our tests, so we can simplify this method
906
+ let matTooltipHarness = await this . loader . getHarness ( MatTooltipHarness ) ;
907
+ await matTooltipHarness . show ( ) ;
908
+ return matTooltipHarness . getTooltipText ( ) ;
890
909
}
891
910
892
911
async setCategoryInDialog ( category : string ) {
@@ -962,22 +981,15 @@ class Page {
962
981
return this . fixture . debugElement . parent ?. query ( By . directive ( SelectFileCategoryDialog ) ) . componentInstance as SelectFileCategoryDialog ;
963
982
}
964
983
965
- private async clickMenu ( selector : string ) {
966
- let matMenuHarnesses = await this . loader . getAllHarnesses ( MatMenuHarness ) ;
967
- // The menu should be the one opened
968
- let matMenuHarness = await findAsyncSequential ( matMenuHarnesses , value => value . isOpen ( ) ) ;
969
- await matMenuHarness ?. clickItem ( { selector : selector } ) ;
970
- }
971
-
972
- private async isMenuDisabled ( selector : string ) {
984
+ private async getMenu ( selector : string ) {
973
985
let matMenuHarnesses = await this . loader . getAllHarnesses ( MatMenuHarness ) ;
974
986
// The menu should be the one opened
975
987
let matMenuHarness = await findAsyncSequential ( matMenuHarnesses , value => value . isOpen ( ) ) ;
976
988
if ( ! matMenuHarness ) {
977
989
throw new Error ( "No menu for selector: " + selector ) ;
978
990
}
979
991
let menuItems = await matMenuHarness . getItems ( { selector : selector } ) ;
980
- return menuItems [ 0 ] . isDisabled ( ) ;
992
+ return menuItems [ 0 ] ;
981
993
}
982
994
983
995
}
0 commit comments