11/* eslint-env jest */
2- import { displayPopUpIfPreferencesIsInvalid } from '../src/require_communication_preference'
2+ /**
3+ * @jest -environment jsdom
4+ */
35
4- require ( 'jest' )
6+ import { displayPopUpIfPreferencesIsInvalid } from '../src/require_communication_preference'
57
68let saveButton
9+ let emailCheckbox
10+ let smsCheckbox
711
812beforeEach ( ( ) => {
913 document . body . innerHTML = `
@@ -12,17 +16,19 @@ beforeEach(() => {
1216 <input class="toggle-email-notifications" type="checkbox" value="1" checked="checked" name="user[receive_email_notifications]" id="user_receive_email_notifications">
1317 <label for="user_receive_email_notifications">Email Me</label>
1418 </div>
15-
19+
1620 <div>
1721 <input class="toggle-sms-notifications" type="checkbox" value="1" name="user[receive_sms_notifications]" id="user_receive_sms_notifications">
1822 <label for="user_receive_sms_notifications">Text Me</label>
19-
23+
2024 <div class="action_container">
2125 <input type="submit" name="commit" value="Save Preferences" class="btn btn-primary mb-3 save-preference" data-disable-with="Save Preferences">
2226 </div>
2327 </form>
2428 `
2529 saveButton = document . getElementsByClassName ( 'save-preference' ) [ 0 ]
30+ emailCheckbox = document . getElementById ( 'user_receive_email_notifications' )
31+ smsCheckbox = document . getElementById ( 'user_receive_sms_notifications' )
2632} )
2733
2834describe ( 'ensure the save button is enabled when at least one preference is selected' , ( ) => {
@@ -35,4 +41,35 @@ describe('ensure the save button is enabled when at least one preference is sele
3541 expect ( isDisabled ( saveButton ) ) . toBe ( false )
3642 expect ( document . getElementsByClassName ( 'swal2-container' ) . length ) . toBe ( 0 )
3743 } )
44+
45+ test ( 'at least email preference is selected' , ( ) => {
46+ emailCheckbox . checked = true
47+ smsCheckbox . checked = false
48+ displayPopUpIfPreferencesIsInvalid ( )
49+ expect ( isDisabled ( saveButton ) ) . toBe ( false )
50+ expect ( document . getElementsByClassName ( 'swal2-container' ) . length ) . toBe ( 0 )
51+ } )
52+
53+ test ( 'at least SMS preference is selected' , ( ) => {
54+ emailCheckbox . checked = false
55+ smsCheckbox . checked = true
56+ displayPopUpIfPreferencesIsInvalid ( )
57+ expect ( isDisabled ( saveButton ) ) . toBe ( false )
58+ expect ( document . getElementsByClassName ( 'swal2-container' ) . length ) . toBe ( 0 )
59+ } )
60+
61+ test ( 'both preferences are selected' , ( ) => {
62+ emailCheckbox . checked = true
63+ smsCheckbox . checked = true
64+ displayPopUpIfPreferencesIsInvalid ( )
65+ expect ( isDisabled ( saveButton ) ) . toBe ( false )
66+ expect ( document . getElementsByClassName ( 'swal2-container' ) . length ) . toBe ( 0 )
67+ } )
68+
69+ test ( 'no preferences selected shows popup' , ( ) => {
70+ emailCheckbox . checked = false
71+ smsCheckbox . checked = false
72+ displayPopUpIfPreferencesIsInvalid ( )
73+ expect ( document . getElementsByClassName ( 'swal2-container' ) . length ) . toBe ( 1 )
74+ } )
3875} )
0 commit comments