@@ -7,7 +7,7 @@ import { axe } from 'jest-axe';
7
7
8
8
import { InputTypeType } from '@/components/input' ;
9
9
import { renderProvider } from '@/tests/renderProvider/renderProvider.utility' ;
10
- import { POSITIONS } from '@/types' ;
10
+ import { POSITIONS , ROLES } from '@/types' ;
11
11
import * as keyboard from '@/utils/keyboard/keyboard.utility' ;
12
12
13
13
import { ToggleControlled } from '../toggleControlled' ;
@@ -26,6 +26,7 @@ const mockProps = {
26
26
leftIconAltText : 'off option' ,
27
27
} ,
28
28
dataTestId : 'toggleId' ,
29
+ [ 'aria-label' ] : 'toggle' ,
29
30
} ;
30
31
31
32
const mockPropsThreePositions = {
@@ -46,7 +47,7 @@ describe('Toggle component', () => {
46
47
it ( 'should display an accesible text by default corresponding to the unchecked state' , async ( ) => {
47
48
const { container } = renderProvider ( < Toggle { ...mockProps } /> ) ;
48
49
49
- const toggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 0 ] ;
50
+ const toggle = screen . getByRole ( ROLES . SWITCH ) ;
50
51
51
52
expect ( toggle ) . toBeInTheDocument ( ) ;
52
53
expect ( toggle ) . not . toBeChecked ( ) ;
@@ -61,23 +62,10 @@ describe('Toggle component', () => {
61
62
< Toggle { ...mockProps } defaultTogglePosition = { POSITIONS . RIGHT } />
62
63
) ;
63
64
64
- const toggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 0 ] ;
65
+ const toggle = screen . getByRole ( ROLES . SWITCH ) ;
65
66
66
67
expect ( toggle ) . toBeInTheDocument ( ) ;
67
- expect ( toggle ) . not . toBeChecked ( ) ;
68
-
69
- const results = await axe ( container ) ;
70
- expect ( container ) . toHTMLValidate ( ) ;
71
- expect ( results ) . toHaveNoViolations ( ) ;
72
- } ) ;
73
-
74
- it ( 'should display with disabled state' , async ( ) => {
75
- const { container } = renderProvider ( < Toggle { ...mockProps } disabled = { true } /> ) ;
76
-
77
- const toggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 0 ] ;
78
-
79
- expect ( toggle ) . toBeInTheDocument ( ) ;
80
- expect ( toggle ) . toBeDisabled ( ) ;
68
+ expect ( toggle ) . toBeChecked ( ) ;
81
69
82
70
const results = await axe ( container ) ;
83
71
expect ( container ) . toHTMLValidate ( ) ;
@@ -89,11 +77,10 @@ describe('Toggle component', () => {
89
77
< Toggle { ...mockProps } defaultTogglePosition = { POSITIONS . RIGHT } disabled = { true } />
90
78
) ;
91
79
92
- const toggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 0 ] ;
80
+ const toggle = screen . getByRole ( ROLES . SWITCH ) ;
93
81
94
82
expect ( toggle ) . toBeInTheDocument ( ) ;
95
- expect ( toggle ) . not . toBeChecked ( ) ;
96
- expect ( toggle ) . toBeDisabled ( ) ;
83
+ expect ( toggle ) . toBeChecked ( ) ;
97
84
98
85
const results = await axe ( container ) ;
99
86
expect ( container ) . toHTMLValidate ( ) ;
@@ -103,22 +90,14 @@ describe('Toggle component', () => {
103
90
it ( 'should hide said text and display an alternative when clicked' , async ( ) => {
104
91
const { container } = renderProvider ( < Toggle { ...mockProps } /> ) ;
105
92
106
- const toggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 0 ] ;
93
+ const toggle = screen . getByRole ( ROLES . SWITCH ) ;
107
94
108
95
expect ( toggle ) . not . toBeChecked ( ) ;
109
96
110
97
await user . click ( toggle ) ;
111
98
112
99
expect ( toggle ) . toBeChecked ( ) ;
113
100
114
- const secondToggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 1 ] ;
115
-
116
- expect ( secondToggle ) . not . toBeChecked ( ) ;
117
-
118
- await user . click ( secondToggle ) ;
119
-
120
- expect ( secondToggle ) . toBeChecked ( ) ;
121
-
122
101
const results = await axe ( container ) ;
123
102
expect ( container ) . toHTMLValidate ( ) ;
124
103
expect ( results ) . toHaveNoViolations ( ) ;
@@ -128,8 +107,8 @@ describe('Toggle component', () => {
128
107
jest . spyOn ( keyboard , 'isKeyEnterPressed' ) . mockReturnValueOnce ( true ) ;
129
108
const { container } = renderProvider ( < Toggle { ...mockProps } /> ) ;
130
109
131
- expect ( screen . getByTestId ( 'toggleIdOnLabelOption ' ) ) . toBeInTheDocument ( ) ;
132
- expect ( screen . getByTestId ( 'toggleIdOffLabelOption ' ) ) . toBeInTheDocument ( ) ;
110
+ expect ( screen . getByTestId ( 'toggleIdOnOption ' ) ) . toBeInTheDocument ( ) ;
111
+ expect ( screen . getByTestId ( 'toggleIdOffOption ' ) ) . toBeInTheDocument ( ) ;
133
112
134
113
const group = screen . getByTestId ( 'toggleId' ) ;
135
114
expect ( group ) . toBeInTheDocument ( ) ;
@@ -159,10 +138,13 @@ describe('Toggle component', () => {
159
138
const onChange = jest . fn ( ) ;
160
139
renderProvider ( < Toggle { ...mockProps } onChange = { onChange } /> ) ;
161
140
162
- const secondToggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 1 ] ;
163
- expect ( secondToggle ) . not . toBeChecked ( ) ;
164
- await user . click ( secondToggle ) ;
165
- expect ( secondToggle ) . toBeChecked ( ) ;
141
+ const toggle = screen . getByRole ( ROLES . SWITCH ) ;
142
+ expect ( toggle ) . not . toBeChecked ( ) ;
143
+ await user . click ( toggle ) ;
144
+ expect ( toggle ) . toBeChecked ( ) ;
145
+
146
+ await user . click ( toggle ) ;
147
+ expect ( toggle ) . not . toBeChecked ( ) ;
166
148
167
149
const group = screen . getByTestId ( 'toggleId' ) ;
168
150
expect ( group ) . toBeInTheDocument ( ) ;
@@ -218,7 +200,14 @@ describe('Toogle Three Positions', () => {
218
200
jest . spyOn ( keyboard , 'isKeySpacePressed' ) . mockReturnValueOnce ( true ) ;
219
201
const onClick = jest . fn ( ) ;
220
202
const onKeyDown = jest . fn ( ) ;
221
- renderProvider ( < Toggle { ...mockPropsThreePositions } onClick = { onClick } onKeyDown = { onKeyDown } /> ) ;
203
+ renderProvider (
204
+ < Toggle
205
+ { ...mockPropsThreePositions }
206
+ blockCenter = { true }
207
+ onClick = { onClick }
208
+ onKeyDown = { onKeyDown }
209
+ />
210
+ ) ;
222
211
223
212
const onLabelOption = screen . getByTestId ( 'toggleIdOnLabelOption' ) ;
224
213
expect ( onLabelOption ) . toBeInTheDocument ( ) ;
@@ -231,6 +220,30 @@ describe('Toogle Three Positions', () => {
231
220
expect ( onKeyDown ) . toHaveBeenCalled ( ) ;
232
221
} ) ;
233
222
223
+ it ( 'ThreePositions - With disabled true click shouldnt work' , async ( ) => {
224
+ jest . spyOn ( keyboard , 'isKeySpacePressed' ) . mockReturnValueOnce ( true ) ;
225
+ const onClick = jest . fn ( ) ;
226
+ const onKeyDown = jest . fn ( ) ;
227
+ renderProvider (
228
+ < Toggle
229
+ { ...mockPropsThreePositions }
230
+ disabled = { true }
231
+ onClick = { onClick }
232
+ onKeyDown = { onKeyDown }
233
+ />
234
+ ) ;
235
+
236
+ const onLabelOption = screen . getByTestId ( 'toggleIdOnLabelOption' ) ;
237
+ expect ( onLabelOption ) . toBeInTheDocument ( ) ;
238
+ fireEvent . click ( onLabelOption ) ;
239
+ expect ( onClick ) . not . toHaveBeenCalled ( ) ;
240
+
241
+ const group = screen . getByTestId ( 'toggleId' ) ;
242
+ expect ( group ) . toBeInTheDocument ( ) ;
243
+ fireEvent . keyDown ( onLabelOption ) ;
244
+ expect ( onKeyDown ) . not . toHaveBeenCalled ( ) ;
245
+ } ) ;
246
+
234
247
it ( 'ThreePositions - Should click in offText and called onKeyDown' , ( ) => {
235
248
jest . spyOn ( keyboard , 'isKeySpacePressed' ) . mockReturnValueOnce ( true ) ;
236
249
renderProvider ( < Toggle { ...mockPropsThreePositions } /> ) ;
@@ -273,7 +286,7 @@ describe('ToggleControlled', () => {
273
286
it ( 'should display an accesible text by default corresponding to the unchecked state' , async ( ) => {
274
287
const { container } = renderProvider ( < ToggleControlled { ...mockProps } /> ) ;
275
288
276
- const toggle = screen . getAllByRole ( InputTypeType . RADIO ) [ 0 ] ;
289
+ const toggle = screen . getByRole ( ROLES . SWITCH ) ;
277
290
278
291
expect ( toggle ) . toBeInTheDocument ( ) ;
279
292
expect ( toggle ) . not . toBeChecked ( ) ;
0 commit comments