@@ -6,10 +6,23 @@ import userEvent from '@testing-library/user-event';
6
6
import { initializeTestStore , render , screen } from '../../../../setupTest' ;
7
7
import SequenceNavigationTabs from './SequenceNavigationTabs' ;
8
8
import useIndexOfLastVisibleChild from '../../../../generic/tabs/useIndexOfLastVisibleChild' ;
9
+ import {
10
+ useIsSidebarOpen ,
11
+ useIsOnXLDesktop ,
12
+ useIsOnLargeDesktop ,
13
+ useIsOnMediumDesktop ,
14
+ } from './hooks' ;
9
15
10
16
// Mock the hook to avoid relying on its implementation and mocking `getBoundingClientRect`.
11
17
jest . mock ( '../../../../generic/tabs/useIndexOfLastVisibleChild' ) ;
12
18
19
+ jest . mock ( './hooks' , ( ) => ( {
20
+ useIsSidebarOpen : jest . fn ( ) ,
21
+ useIsOnXLDesktop : jest . fn ( ) ,
22
+ useIsOnLargeDesktop : jest . fn ( ) ,
23
+ useIsOnMediumDesktop : jest . fn ( ) ,
24
+ } ) ) ;
25
+
13
26
describe ( 'Sequence Navigation Tabs' , ( ) => {
14
27
let mockData ;
15
28
@@ -54,7 +67,7 @@ describe('Sequence Navigation Tabs', () => {
54
67
const booyah = render ( < SequenceNavigationTabs { ...mockData } /> , { wrapWithRouter : true } ) ;
55
68
56
69
// wait for links to appear so we aren't testing an empty div
57
- await screen . findAllByRole ( 'link ' ) ;
70
+ await screen . findAllByRole ( 'tab ' ) ;
58
71
59
72
container = booyah . container ;
60
73
@@ -67,4 +80,72 @@ describe('Sequence Navigation Tabs', () => {
67
80
expect ( screen . getByRole ( 'button' , { name : `${ activeBlockNumber } of ${ unitBlocks . length } ` } ) )
68
81
. toHaveClass ( 'dropdown-toggle' ) ;
69
82
} ) ;
83
+
84
+ it ( 'adds class navigation-tab-width-xl when isOnXLDesktop and sidebar is open' , ( ) => {
85
+ useIsSidebarOpen . mockReturnValue ( true ) ;
86
+ useIsOnXLDesktop . mockReturnValue ( true ) ;
87
+ useIsOnLargeDesktop . mockReturnValue ( false ) ;
88
+ useIsOnMediumDesktop . mockReturnValue ( false ) ;
89
+ useIndexOfLastVisibleChild . mockReturnValue ( [ 0 , null , null ] ) ;
90
+
91
+ const { container } = render ( < SequenceNavigationTabs { ...mockData } /> , { wrapWithRouter : true } ) ;
92
+
93
+ const wrapperDiv = container . querySelector ( '.navigation-tab-width-xl' ) ;
94
+ expect ( wrapperDiv ) . toBeInTheDocument ( ) ;
95
+ } ) ;
96
+
97
+ it ( 'adds class navigation-tab-width-large when isOnLargeDesktop and sidebar is open' , ( ) => {
98
+ useIsSidebarOpen . mockReturnValue ( true ) ;
99
+ useIsOnXLDesktop . mockReturnValue ( false ) ;
100
+ useIsOnLargeDesktop . mockReturnValue ( true ) ;
101
+ useIsOnMediumDesktop . mockReturnValue ( false ) ;
102
+ useIndexOfLastVisibleChild . mockReturnValue ( [ 0 , null , null ] ) ;
103
+
104
+ const { container } = render ( < SequenceNavigationTabs { ...mockData } /> , { wrapWithRouter : true } ) ;
105
+
106
+ const wrapperDiv = container . querySelector ( '.navigation-tab-width-large' ) ;
107
+ expect ( wrapperDiv ) . toBeInTheDocument ( ) ;
108
+ } ) ;
109
+
110
+ it ( 'adds class navigation-tab-width-medium when isOnMediumDesktop and sidebar is open' , ( ) => {
111
+ useIsSidebarOpen . mockReturnValue ( true ) ;
112
+ useIsOnXLDesktop . mockReturnValue ( false ) ;
113
+ useIsOnLargeDesktop . mockReturnValue ( false ) ;
114
+ useIsOnMediumDesktop . mockReturnValue ( true ) ;
115
+ useIndexOfLastVisibleChild . mockReturnValue ( [ 0 , null , null ] ) ;
116
+
117
+ const { container } = render ( < SequenceNavigationTabs { ...mockData } /> , { wrapWithRouter : true } ) ;
118
+
119
+ const wrapperDiv = container . querySelector ( '.navigation-tab-width-medium' ) ;
120
+ expect ( wrapperDiv ) . toBeInTheDocument ( ) ;
121
+ } ) ;
122
+
123
+ it ( 'applies invisibleStyle when shouldDisplayDropdown is true' , ( ) => {
124
+ useIsSidebarOpen . mockReturnValue ( true ) ;
125
+ useIsOnXLDesktop . mockReturnValue ( false ) ;
126
+ useIsOnLargeDesktop . mockReturnValue ( false ) ;
127
+ useIsOnMediumDesktop . mockReturnValue ( false ) ;
128
+
129
+ useIndexOfLastVisibleChild . mockReturnValue ( [
130
+ 0 ,
131
+ null ,
132
+ {
133
+ position : 'absolute' ,
134
+ left : '0px' ,
135
+ pointerEvents : 'none' ,
136
+ visibility : 'hidden' ,
137
+ maxWidth : '100%' ,
138
+ } ,
139
+ ] ) ;
140
+
141
+ render ( < SequenceNavigationTabs { ...mockData } /> , { wrapWithRouter : true } ) ;
142
+
143
+ const tabList = screen . getByRole ( 'tablist' ) ;
144
+
145
+ expect ( tabList . style . position ) . toBe ( 'absolute' ) ;
146
+ expect ( tabList . style . left ) . toBe ( '0px' ) ;
147
+ expect ( tabList . style . pointerEvents ) . toBe ( 'none' ) ;
148
+ expect ( tabList . style . visibility ) . toBe ( 'hidden' ) ;
149
+ expect ( tabList . style . maxWidth ) . toBe ( '100%' ) ;
150
+ } ) ;
70
151
} ) ;
0 commit comments