1
1
import Tokenizer from "../../src/Tokenizer.js" ;
2
2
import Button from "../../src/Button.js" ;
3
3
import Token from "../../src/Token.js" ;
4
- import { TOKENIZER_DIALOG_OK_BUTTON , TOKENIZER_DIALOG_CANCEL_BUTTON } from "../../src/generated/i18n/i18n-defaults.js" ;
4
+ import { TOKENIZER_DIALOG_OK_BUTTON , TOKENIZER_DIALOG_CANCEL_BUTTON , TOKENIZER_POPOVER_REMOVE } from "../../src/generated/i18n/i18n-defaults.js" ;
5
5
6
6
describe ( "Phone mode" , ( ) => {
7
7
beforeEach ( ( ) => {
@@ -96,5 +96,163 @@ describe("Phone mode", () => {
96
96
. find ( "[ui5-token]" )
97
97
. eq ( 1 )
98
98
. should ( "have.attr" , "selected" ) ;
99
- } )
99
+ } ) ;
100
+
101
+ it ( "n-more picker dialog is properly rendered" , ( ) => {
102
+ cy . mount (
103
+ < Tokenizer id = "nmore-tokenizer" style = { { width : "50%" } } >
104
+ < Token text = "Andora" > </ Token >
105
+ < Token text = "Bulgaria" > </ Token >
106
+ < Token text = "Canada" > </ Token >
107
+ </ Tokenizer >
108
+ ) ;
109
+
110
+ cy . get ( "[ui5-tokenizer]" )
111
+ . shadow ( )
112
+ . find ( ".ui5-tokenizer-more-text" )
113
+ . as ( "nMoreLabel" ) ;
114
+
115
+ cy . get ( "@nMoreLabel" )
116
+ . realClick ( ) ;
117
+
118
+ cy . get ( "[ui5-tokenizer]" )
119
+ . shadow ( )
120
+ . find ( "ui5-responsive-popover" )
121
+ . as ( "nMoreDialog" ) ;
122
+
123
+ cy . get ( "@nMoreDialog" )
124
+ . should ( "have.attr" , "open" ) ;
125
+
126
+ cy . get ( "@nMoreDialog" )
127
+ . find ( ".ui5-responsive-popover-footer ui5-button[design='Emphasized']" )
128
+ . should ( "be.visible" ) ;
129
+
130
+ cy . get ( "@nMoreDialog" )
131
+ . find ( ".ui5-responsive-popover-footer ui5-button[design='Transparent']" )
132
+ . should ( "be.visible" ) ;
133
+
134
+ cy . get ( "@nMoreDialog" )
135
+ . find ( ".ui5-responsive-popover-header .ui5-responsive-popover-header-text" )
136
+ . should ( "have.text" , TOKENIZER_POPOVER_REMOVE . defaultText ) ;
137
+ } ) ;
138
+
139
+ it ( "Should fire the ui5-token-delete event when the 'X' is pressed in the n-more picker and confirmed with OK" , ( ) => {
140
+ cy . mount (
141
+ < Tokenizer style = { { width : "50%" } } >
142
+ < Token text = "Andora" > </ Token >
143
+ < Token text = "Bulgaria" > </ Token >
144
+ < Token text = "Canada" > </ Token >
145
+ </ Tokenizer >
146
+ ) ;
147
+
148
+ cy . get ( "[ui5-tokenizer]" )
149
+ . invoke ( "on" , "token-delete" , cy . spy ( ) . as ( "tokenDeleteSpy" ) ) ;
150
+
151
+ cy . get ( "[ui5-tokenizer]" )
152
+ . shadow ( )
153
+ . find ( ".ui5-tokenizer-more-text" )
154
+ . as ( "nMoreLabel" ) ;
155
+
156
+ cy . get ( "@nMoreLabel" )
157
+ . realClick ( ) ;
158
+
159
+ cy . get ( "[ui5-tokenizer]" )
160
+ . shadow ( )
161
+ . find ( "ui5-responsive-popover" )
162
+ . as ( "nMoreDialog" ) ;
163
+
164
+ cy . get ( "@nMoreDialog" )
165
+ . find ( "ui5-li" )
166
+ . eq ( 0 )
167
+ . shadow ( )
168
+ . find ( ".ui5-li-deletebtn ui5-button" )
169
+ . as ( "firstListItemDeleteButton" ) ;
170
+
171
+ cy . get ( "@firstListItemDeleteButton" )
172
+ . realClick ( ) ;
173
+
174
+ cy . get ( "@nMoreDialog" )
175
+ . find ( ".ui5-responsive-popover-footer ui5-button" )
176
+ . eq ( 0 )
177
+ . realClick ( ) ;
178
+
179
+ cy . get ( "@tokenDeleteSpy" )
180
+ . should ( "have.been.calledOnce" ) ;
181
+ } ) ;
182
+
183
+ it ( "Should NOT fire the ui5-token-delete event when no items are deleted and OK is pressed" , ( ) => {
184
+ cy . mount (
185
+ < Tokenizer style = { { width : "50%" } } >
186
+ < Token text = "Andora" > </ Token >
187
+ < Token text = "Bulgaria" > </ Token >
188
+ < Token text = "Canada" > </ Token >
189
+ </ Tokenizer >
190
+ ) ;
191
+
192
+ cy . get ( "[ui5-tokenizer]" )
193
+ . invoke ( "on" , "token-delete" , cy . spy ( ) . as ( "tokenDeleteSpy" ) ) ;
194
+
195
+ cy . get ( "[ui5-tokenizer]" )
196
+ . shadow ( )
197
+ . find ( ".ui5-tokenizer-more-text" )
198
+ . as ( "nMoreLabel" ) ;
199
+
200
+ cy . get ( "@nMoreLabel" )
201
+ . realClick ( ) ;
202
+
203
+ cy . get ( "[ui5-tokenizer]" )
204
+ . shadow ( )
205
+ . find ( "ui5-responsive-popover" )
206
+ . as ( "nMoreDialog" ) ;
207
+
208
+ cy . get ( "@nMoreDialog" )
209
+ . find ( ".ui5-responsive-popover-footer ui5-button" )
210
+ . eq ( 0 )
211
+ . realClick ( ) ;
212
+
213
+ cy . get ( "@tokenDeleteSpy" )
214
+ . should ( "not.have.been.called" ) ;
215
+ } ) ;
216
+ it ( "Should NOT fire the ui5-token-delete event when the 'X' is pressed in the n-more picker and canceled" , ( ) => {
217
+ cy . mount (
218
+ < Tokenizer style = { { width : "50%" } } >
219
+ < Token text = "Andora" > </ Token >
220
+ < Token text = "Bulgaria" > </ Token >
221
+ < Token text = "Canada" > </ Token >
222
+ </ Tokenizer >
223
+ ) ;
224
+ cy . get ( "[ui5-tokenizer]" )
225
+ . invoke ( "on" , "token-delete" , cy . spy ( ) . as ( "tokenDeleteSpy" ) ) ;
226
+
227
+ cy . get ( "[ui5-tokenizer]" )
228
+ . shadow ( )
229
+ . find ( ".ui5-tokenizer-more-text" )
230
+ . as ( "nMoreLabel" ) ;
231
+
232
+ cy . get ( "@nMoreLabel" )
233
+ . realClick ( ) ;
234
+
235
+ cy . get ( "[ui5-tokenizer]" )
236
+ . shadow ( )
237
+ . find ( "ui5-responsive-popover" )
238
+ . as ( "nMoreDialog" ) ;
239
+
240
+ cy . get ( "@nMoreDialog" )
241
+ . find ( "ui5-li" )
242
+ . eq ( 0 )
243
+ . shadow ( )
244
+ . find ( ".ui5-li-deletebtn ui5-button" )
245
+ . as ( "firstListItemDeleteButton" ) ;
246
+
247
+ cy . get ( "@firstListItemDeleteButton" )
248
+ . realClick ( ) ;
249
+
250
+ cy . get ( "@nMoreDialog" )
251
+ . find ( ".ui5-responsive-popover-footer ui5-button" )
252
+ . eq ( 1 )
253
+ . realClick ( ) ;
254
+
255
+ cy . get ( "@tokenDeleteSpy" )
256
+ . should ( "not.have.been.called" ) ;
257
+ } ) ;
100
258
} )
0 commit comments