1- import { describe , it , expect } from 'vitest' ;
2- import { mount } from '../test-utils' ;
1+ import { describe , expect , it } from 'vitest' ;
2+ import { mount , requestAnimationFrameAsPromise , retryUntil } from '../test-utils' ;
33import GridCell from '@/components/GridCell.vue' ;
44
55describe ( '<GridCell />' , ( ) => {
@@ -9,33 +9,101 @@ describe('<GridCell />', () => {
99 lastExecutedTime : '2022-08-16T03:45:02.000Z'
1010 } ;
1111
12- it ( 'should render grid cell' , ( ) => {
13- const wrapper = mount ( GridCell , {
14- props : { ...defaultProps }
12+ const rootId = `${ defaultProps . name . replaceAll ( / [ \\ : \s ] / g, '-' ) } ` ;
13+
14+ it . each ( [
15+ [ undefined , undefined , undefined , undefined , undefined ] ,
16+ [ false , undefined , undefined , undefined , undefined ] ,
17+ [ true , undefined , undefined , undefined , undefined ] ,
18+ [ false , 'success' , undefined , undefined , undefined ] ,
19+ [ false , 'SUCCESS' , undefined , undefined , undefined ] ,
20+ [ false , 'unknown' , undefined , undefined , undefined ] ,
21+ [ false , 'FAILURE' , undefined , undefined , undefined ] ,
22+ [ false , 'random' , undefined , undefined , undefined ] ,
23+ [ true , 'success' , undefined , undefined , undefined ] ,
24+ [ true , 'SUCCESS' , undefined , undefined , undefined ] ,
25+ [ true , 'unknown' , undefined , undefined , undefined ] ,
26+ [ true , 'FAILURE' , undefined , undefined , undefined ] ,
27+ [ true , 'random' , undefined , undefined , undefined ] ,
28+ [ false , 'failure' , undefined , undefined , true ] ,
29+ [ false , 'success' , undefined , undefined , true ] ,
30+ [ true , 'failure' , undefined , undefined , true ] ,
31+ [ true , 'success' , undefined , undefined , true ] ,
32+ [ true , 'failure' , undefined , undefined , false ] ,
33+ [ true , 'success' , undefined , undefined , false ] ,
34+ [ false , 'failure' , false , true , true ]
35+ ] ) (
36+ 'should render grid cell when inProgress=%s, status=%s, hidden=%s, displayToggleVisibility=%s, showRelativeTime=%s' ,
37+ ( inProgress , status , hidden , displayToggleVisibility , showRelativeTime ) => {
38+ const wrapper = mount ( GridCell , {
39+ props : { ...defaultProps , inProgress, status, hidden, displayToggleVisibility, showRelativeTime }
40+ } ) ;
41+ expect ( wrapper . html ( ) ) . toMatchSnapshot ( ) ;
1542 } ) ;
16- expect ( wrapper . html ( ) ) . toMatchSnapshot ( ) ;
17- } ) ;
1843
19- describe ( 'Toggle Visibility' , ( ) => {
20- it . each ( [
21- [ undefined ] ,
22- [ false ] ,
23- [ true ]
24- ] ) ( 'should display toggle visibility icon with hide icon when hidden passed as %s' , async ( hidden ) => {
44+ it . each ( [
45+ [ true , true , true ] ,
46+ [ false , true , true ] ,
47+ [ true , false , true ] ,
48+ [ false , false , true ] ,
49+ [ true , true , false ] ,
50+ [ false , false , false ] ,
51+ [ false , true , false ] , [ true , false , false ]
52+ ] ) ( 'should flip on hover when hidden=%s, displayToggleVisibility=%s, showRelativeTime=%s' ,
53+ async ( hidden , displayToggleVisibility , showRelativeTime ) => {
2554 const wrapper = mount ( GridCell , {
26- props : { ...defaultProps , displayToggleVisibility : true , hidden }
55+ props : { ...defaultProps , hidden, displayToggleVisibility, showRelativeTime }
56+ } ) ;
57+ await wrapper . find ( `#${ defaultProps . name . replaceAll ( / [ \\ : \s ] / g, '-' ) } ` ) . trigger ( 'mouseenter' ) ;
58+ await retryUntil ( async ( ) => {
59+ await requestAnimationFrameAsPromise ( ) ;
60+ expect ( wrapper . find ( `[test-id="${ rootId } -toolbar"]` ) . exists ( ) ) . toBeTruthy ( ) ;
2761 } ) ;
62+ expect ( wrapper . html ( ) ) . toMatchSnapshot ( ) ;
63+ } ) ;
2864
29- expect ( wrapper . html ( ) ) . toMatchSnapshot ( ) ;
65+ it . each ( [
66+ [ true , true , true ] ,
67+ [ false , true , true ] ,
68+ [ true , false , true ] ,
69+ [ false , false , true ] ,
70+ [ true , true , false ] ,
71+ [ false , false , false ] ,
72+ [ false , true , false ] , [ true , false , false ]
73+ ] ) ( 'should flip back once mouse is moved away when hidden=%s, displayToggleVisibility=%s, showRelativeTime=%s' ,
74+ async ( hidden , displayToggleVisibility , showRelativeTime ) => {
75+ const wrapper = mount ( GridCell , {
76+ props : { ...defaultProps , hidden, displayToggleVisibility, showRelativeTime }
77+ } ) ;
3078
31- const toggleVisibilityTooltip = wrapper . find ( '[aria-describedby="v-tooltip-1"]' ) ;
32- expect ( toggleVisibilityTooltip . exists ( ) ) . toBeTruthy ( ) ;
79+ await wrapper . find ( `#${ rootId } ` ) . trigger ( 'mouseenter' ) ;
80+ await retryUntil ( async ( ) => {
81+ await requestAnimationFrameAsPromise ( ) ;
82+ expect ( wrapper . find ( `[test-id="${ rootId } -toolbar"]` ) . exists ( ) ) . toBeTruthy ( ) ;
83+ } ) ;
3384
34- await toggleVisibilityTooltip . trigger ( 'click' ) ;
85+ await wrapper . find ( `#${ rootId } ` ) . trigger ( 'mouseleave' ) ;
86+ await retryUntil ( async ( ) => {
87+ await requestAnimationFrameAsPromise ( ) ;
88+ expect ( wrapper . find ( `[test-id="${ rootId } -toolbar"]` ) . exists ( ) ) . toBeFalsy ( ) ;
89+ } ) ;
90+ expect ( wrapper . html ( ) ) . toMatchSnapshot ( ) ;
91+ } ) ;
3592
36- const emitted = wrapper . emitted ( ) ;
37- expect ( emitted ) . toHaveProperty ( 'toggleVisibility' ) ;
38- expect ( emitted . toggleVisibility ) . toEqual ( [ [ defaultProps . name ] ] ) ;
93+ it ( 'should emit toggle visibility event when clicked on toggle icon' , async ( ) => {
94+ const wrapper = mount ( GridCell , {
95+ props : { ...defaultProps , displayToggleVisibility : true }
96+ } ) ;
97+
98+ await wrapper . find ( `#${ defaultProps . name . replaceAll ( / [ \\ : \s ] / g, '-' ) } ` ) . trigger ( 'mouseenter' ) ;
99+ await retryUntil ( async ( ) => {
100+ await requestAnimationFrameAsPromise ( ) ;
101+ expect ( wrapper . find ( `[test-id="${ rootId } -change-visibility-icon"]` ) . exists ( ) ) . toBeTruthy ( ) ;
39102 } ) ;
103+
104+ await wrapper . find ( `[test-id="${ rootId } -change-visibility-icon"]` ) . trigger ( 'click' ) ;
105+ const emitted = wrapper . emitted ( ) ;
106+ expect ( emitted ) . toHaveProperty ( 'toggleVisibility' ) ;
107+ expect ( emitted . toggleVisibility ) . toEqual ( [ [ defaultProps . name ] ] ) ;
40108 } ) ;
41109} ) ;
0 commit comments