16
16
import { jest } from '@jest/globals' ;
17
17
import { loadDOM } from '../../__tests__/index.mjs' ;
18
18
import { ipcRenderer } from './settings.browser.mjs' ;
19
- import { fireEvent , getByTestId , getByText , waitFor } from '@testing-library/dom' ;
19
+ import { fireEvent , getAllByText , getByTestId , getByText , waitFor } from '@testing-library/dom' ;
20
20
21
21
describe ( 'Settings in Browser test suite' , ( ) => {
22
22
let mockIpcRenderer ;
@@ -62,7 +62,8 @@ describe('Settings in Browser test suite', () => {
62
62
{
63
63
tabs : [
64
64
{ id : '1' , url : 'https://initial-tab.com' , sandboxed : true } ,
65
- { id : '2' , url : 'https://initial-tab-2.com' , disabled : true , disableNotifications : true }
65
+ { id : '2' , url : 'https://initial-tab-2.com' , disabled : true , disableNotifications : true } ,
66
+ { id : '3' , url : 'https://initial-tab-3.com' , openUrlsInApp : true }
66
67
] ,
67
68
enabledDictionaries : [ 'en' ] ,
68
69
disableNotificationsGlobally : false ,
@@ -116,7 +117,7 @@ describe('Settings in Browser test suite', () => {
116
117
fireEvent . input ( $input , { target : { value : 'A' } } ) ;
117
118
// Then
118
119
await waitFor ( ( ) => expect ( $input . value ) . toBe ( 'A' ) ) ;
119
- expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 2 ) ;
120
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 3 ) ;
120
121
} ) ;
121
122
describe . each ( [
122
123
'Enter' ,
@@ -128,7 +129,7 @@ describe('Settings in Browser test suite', () => {
128
129
// When
129
130
fireEvent . keyDown ( $input , { code} ) ;
130
131
// Then
131
- expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 2 ) ;
132
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 3 ) ;
132
133
expect ( $addTabButton . hasAttribute ( 'disabled' ) ) . toBe ( true ) ;
133
134
expect ( $submitButton . hasAttribute ( 'disabled' ) ) . toBe ( false ) ;
134
135
} ) ;
@@ -138,10 +139,10 @@ describe('Settings in Browser test suite', () => {
138
139
// When
139
140
fireEvent . keyDown ( $input , { code} ) ;
140
141
// Then
141
- expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 2 ) ;
142
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 3 ) ;
142
143
await waitFor ( ( ) =>
143
144
expect ( $input . parentElement . classList . contains ( 'errored' ) ) . toBe ( true ) ) ;
144
- expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) . length ) . toBe ( 2 ) ;
145
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) . length ) . toBe ( 3 ) ;
145
146
expect ( $input . value ) . toBe ( 'invalid:1337:url' ) ;
146
147
expect ( $addTabButton . hasAttribute ( 'disabled' ) ) . toBe ( true ) ;
147
148
expect ( $submitButton . hasAttribute ( 'disabled' ) ) . toBe ( true ) ;
@@ -153,9 +154,9 @@ describe('Settings in Browser test suite', () => {
153
154
fireEvent . keyDown ( $input , { code} ) ;
154
155
// Then
155
156
await waitFor ( ( ) =>
156
- expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 3 ) ) ;
157
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 4 ) ) ;
157
158
expect ( $input . classList . contains ( 'is-success' ) ) . toBe ( false ) ;
158
- expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) [ 2 ] . value )
159
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) [ 3 ] . value )
159
160
. toBe ( 'https://info.cern.ch' ) ;
160
161
expect ( $input . value ) . toBe ( '' ) ;
161
162
expect ( $addTabButton . hasAttribute ( 'disabled' ) ) . toBe ( true ) ;
@@ -168,10 +169,10 @@ describe('Settings in Browser test suite', () => {
168
169
fireEvent . keyDown ( $input , { code} ) ;
169
170
// Then
170
171
await waitFor ( ( ) =>
171
- expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 3 ) ) ;
172
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 4 ) ) ;
172
173
await waitFor ( ( ) =>
173
174
expect ( $input . classList . contains ( 'is-success' ) ) . toBe ( false ) ) ;
174
- expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) [ 2 ] . value )
175
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) [ 3 ] . value )
175
176
. toBe ( 'http://info.cern.ch' ) ;
176
177
expect ( $input . value ) . toBe ( '' ) ;
177
178
expect ( $addTabButton . hasAttribute ( 'disabled' ) ) . toBe ( true ) ;
@@ -206,8 +207,8 @@ describe('Settings in Browser test suite', () => {
206
207
fireEvent . click ( $addTabButton ) ;
207
208
// Then
208
209
await waitFor ( ( ) =>
209
- expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 3 ) ) ;
210
- expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) [ 2 ] . value )
210
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab' ) . length ) . toBe ( 4 ) ) ;
211
+ expect ( $tabContainer . querySelectorAll ( '.settings__tab .settings__tab-main input' ) [ 3 ] . value )
211
212
. toBe ( 'https://info.cern.ch' ) ;
212
213
expect ( $input . value ) . toBe ( '' ) ;
213
214
expect ( $addTabButton . hasAttribute ( 'disabled' ) ) . toBe ( true ) ;
@@ -256,7 +257,7 @@ describe('Settings in Browser test suite', () => {
256
257
} ) ;
257
258
test ( 'Notification enabled icon click, should disable notification' , async ( ) => {
258
259
// Given
259
- const $notificationEnabledIcon = getByText ( document . querySelector ( '.settings__tabs' ) , '\ue7f4' ) ;
260
+ const $notificationEnabledIcon = getAllByText ( document . querySelector ( '.settings__tabs' ) , '\ue7f4' ) [ 0 ] ;
260
261
// When
261
262
fireEvent . click ( $notificationEnabledIcon ) ;
262
263
// Then
@@ -370,6 +371,54 @@ describe('Settings in Browser test suite', () => {
370
371
expect ( $settingsTab . textContent ) . toContain ( '\ue88d' ) ;
371
372
} ) ;
372
373
} ) ;
374
+ describe ( 'with openUrlsInApp=true' , ( ) => {
375
+ let $settingsTab ;
376
+ let $toggleIcon ;
377
+ let $openUrlsInAppEntry ;
378
+ beforeEach ( async ( ) => {
379
+ $settingsTab = document . querySelector ( '.settings__tab[data-id="3"]' ) ;
380
+ $toggleIcon = $settingsTab . querySelector ( '.expand-button' ) ;
381
+ $openUrlsInAppEntry = $settingsTab . querySelector ( '.open-urls-in-app-toggle' ) ;
382
+ if ( $toggleIcon . title . startsWith ( 'Expand' ) ) {
383
+ fireEvent . click ( $toggleIcon ) ;
384
+ // eslint-disable-next-line jest/no-standalone-expect
385
+ await waitFor ( ( ) => expect ( $toggleIcon . title ) . toEqual ( 'Collapse' ) ) ;
386
+ }
387
+ } ) ;
388
+ test ( 'click on switch, should turn off' , async ( ) => {
389
+ // Given
390
+ const $switch = $openUrlsInAppEntry . querySelector ( '.material3.switch' ) ;
391
+ // When
392
+ fireEvent . click ( $switch ) ;
393
+ // Then
394
+ await waitFor ( ( ) => expect ( $switch . classList . contains ( 'switch--checked' ) ) . toBe ( false ) ) ;
395
+ expect ( $switch . classList ) . not . toContain ( 'switch--checked' ) ;
396
+ } ) ;
397
+ } ) ;
398
+ describe ( 'with openUrlsInApp=false' , ( ) => {
399
+ let $settingsTab ;
400
+ let $toggleIcon ;
401
+ let $openUrlsInAppEntry ;
402
+ beforeEach ( async ( ) => {
403
+ $settingsTab = document . querySelector ( '.settings__tab[data-id="1"]' ) ;
404
+ $toggleIcon = $settingsTab . querySelector ( '.expand-button' ) ;
405
+ $openUrlsInAppEntry = $settingsTab . querySelector ( '.open-urls-in-app-toggle' ) ;
406
+ if ( $toggleIcon . title . startsWith ( 'Expand' ) ) {
407
+ fireEvent . click ( $toggleIcon ) ;
408
+ // eslint-disable-next-line jest/no-standalone-expect
409
+ await waitFor ( ( ) => expect ( $toggleIcon . title ) . toEqual ( 'Collapse' ) ) ;
410
+ }
411
+ } ) ;
412
+ test ( 'click on switch, should turn on' , async ( ) => {
413
+ // Given
414
+ const $switch = $openUrlsInAppEntry . querySelector ( '.material3.switch' ) ;
415
+ // When
416
+ fireEvent . click ( $switch ) ;
417
+ // Then
418
+ await waitFor ( ( ) => expect ( $switch . classList . contains ( 'switch--checked' ) ) . toBe ( true ) ) ;
419
+ expect ( $switch . classList ) . toContain ( 'switch--checked' ) ;
420
+ } ) ;
421
+ } ) ;
373
422
} ) ;
374
423
} ) ;
375
424
describe ( 'URL edit' , ( ) => {
0 commit comments