@internetarchive/donation-form 1.0.3-alpha-webdev7960.1 → 1.0.3-webdev-8114.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -661
- package/README.md +115 -115
- package/dist/demo/braintree-endpoint-manager.js.map +1 -1
- package/dist/demo/demo-analytics-handler.js.map +1 -1
- package/dist/demo/submit-form-with.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
- package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
- package/dist/src/braintree-manager/payment-clients.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/google-pay.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
- package/dist/src/braintree-manager/payment-providers.js.map +1 -1
- package/dist/src/donation-form-controller.js +123 -123
- package/dist/src/donation-form-controller.js.map +1 -1
- package/dist/src/donation-form-error.js.map +1 -1
- package/dist/src/donation-form.js +107 -107
- package/dist/src/donation-form.js.map +1 -1
- package/dist/src/form-elements/badged-input.js +47 -47
- package/dist/src/form-elements/badged-input.js.map +1 -1
- package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +1 -1
- package/dist/src/form-elements/contact-form/contact-form.d.ts +1 -1
- package/dist/src/form-elements/contact-form/contact-form.js +174 -179
- package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
- package/dist/src/form-elements/contact-form/countries.js.map +1 -1
- package/dist/src/form-elements/header/donation-form-header.js +14 -14
- package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
- package/dist/src/form-elements/header/donation-summary.js +15 -15
- package/dist/src/form-elements/header/donation-summary.js.map +1 -1
- package/dist/src/form-elements/payment-selector.js +164 -164
- package/dist/src/form-elements/payment-selector.js.map +1 -1
- package/dist/src/form-elements/total-amount.js +16 -16
- package/dist/src/form-elements/total-amount.js.map +1 -1
- package/dist/src/modals/confirm-donation-modal-content.js +51 -51
- package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
- package/dist/src/modals/error-modal-content.js +22 -22
- package/dist/src/modals/error-modal-content.js.map +1 -1
- package/dist/src/modals/upsell-modal-content.js +182 -182
- package/dist/src/modals/upsell-modal-content.js.map +1 -1
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +20 -20
- package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +1 -1
- package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
- package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
- package/dist/src/util/promisedSleep.js.map +1 -1
- package/dist/test/helpers/fillInContactForm.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +1 -1
- package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +1 -1
- package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
- package/dist/test/mocks/mock-donation-info.js.map +1 -1
- package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
- package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
- package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
- package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
- package/dist/test/mocks/mock-modal-manager.js.map +1 -1
- package/dist/test/mocks/mock-payment-clients.js.map +1 -1
- package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
- package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
- package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
- package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
- package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
- package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
- package/dist/test/mocks/models/mock-success-response.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
- package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
- package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
- package/dist/test/tests/braintree-manager.test.js.map +1 -1
- package/dist/test/tests/donation-form-controller.test.js +39 -39
- package/dist/test/tests/donation-form-controller.test.js.map +1 -1
- package/dist/test/tests/donation-form.test.js +4 -4
- package/dist/test/tests/donation-form.test.js.map +1 -1
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +14 -14
- package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
- package/dist/test/tests/form-elements/contact-form.test.d.ts +1 -0
- package/dist/test/tests/form-elements/contact-form.test.js +132 -0
- package/dist/test/tests/form-elements/contact-form.test.js.map +1 -0
- package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
- package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
- package/dist/test/tests/modals/error-modal-content.test.js +2 -2
- package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
- package/dist/test/tests/modals/upsell-modal-content.test.js +31 -31
- package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
- package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
- package/dist/test/tests/payment-clients.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
- package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
- package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
- package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
- package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
- package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
- package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
- package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
- package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
- package/package.json +107 -107
- package/src/@types/analytics-handler/index.d.ts +8 -8
- package/src/@types/braintree-web/LICENSE +21 -21
- package/src/@types/braintree-web/index.d.ts +93 -93
- package/src/@types/braintree-web/modules/american-express.d.ts +50 -50
- package/src/@types/braintree-web/modules/apple-pay.d.ts +213 -213
- package/src/@types/braintree-web/modules/client.d.ts +103 -103
- package/src/@types/braintree-web/modules/core.d.ts +34 -34
- package/src/@types/braintree-web/modules/data-collector.d.ts +13 -13
- package/src/@types/braintree-web/modules/google-payment.d.ts +269 -269
- package/src/@types/braintree-web/modules/hosted-fields.d.ts +366 -366
- package/src/@types/braintree-web/modules/paypal-checkout.d.ts +262 -262
- package/src/@types/braintree-web/modules/paypal.d.ts +177 -177
- package/src/@types/braintree-web/modules/three-d-secure.d.ts +141 -141
- package/src/@types/braintree-web/modules/unionpay.d.ts +224 -224
- package/src/@types/braintree-web/modules/us-bank-account.d.ts +81 -81
- package/src/@types/braintree-web/modules/venmo.d.ts +110 -110
- package/src/@types/braintree-web/package.json +64 -64
- package/src/@types/paypal-checkout-components/LICENSE +21 -21
- package/src/@types/paypal-checkout-components/index.d.ts +67 -67
- package/src/@types/paypal-checkout-components/modules/button.d.ts +50 -50
- package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +244 -244
- package/src/@types/paypal-checkout-components/modules/configuration.d.ts +114 -114
- package/src/@types/paypal-checkout-components/package.json +58 -58
- package/src/braintree-manager/braintree-interfaces.ts +172 -172
- package/src/braintree-manager/braintree-manager.ts +281 -281
- package/src/braintree-manager/payment-clients.ts +146 -146
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +13 -13
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +8 -8
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +10 -10
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +119 -119
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +21 -21
- package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +97 -97
- package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +21 -21
- package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +130 -130
- package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +19 -19
- package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +85 -85
- package/src/braintree-manager/payment-providers/google-pay-interface.ts +8 -8
- package/src/braintree-manager/payment-providers/google-pay.ts +59 -59
- package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +218 -218
- package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +13 -13
- package/src/braintree-manager/payment-providers/paypal/paypal.ts +78 -78
- package/src/braintree-manager/payment-providers/venmo-interface.ts +8 -8
- package/src/braintree-manager/payment-providers/venmo.ts +67 -67
- package/src/braintree-manager/payment-providers-interface.ts +25 -25
- package/src/braintree-manager/payment-providers.ts +147 -147
- package/src/donation-form-controller.ts +623 -623
- package/src/donation-form-error.ts +6 -6
- package/src/donation-form.ts +576 -576
- package/src/form-elements/badged-input.ts +109 -109
- package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
- package/src/form-elements/contact-form/contact-form.ts +432 -434
- package/src/form-elements/contact-form/countries.ts +252 -252
- package/src/form-elements/header/donation-form-header.ts +98 -98
- package/src/form-elements/header/donation-summary.ts +61 -61
- package/src/form-elements/payment-selector.ts +365 -365
- package/src/form-elements/total-amount.ts +46 -46
- package/src/modals/confirm-donation-modal-content.ts +168 -168
- package/src/modals/error-modal-content.ts +48 -48
- package/src/modals/upsell-modal-content.ts +284 -284
- package/src/payment-flow-handlers/donation-flow-modal-manager.ts +439 -439
- package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +109 -109
- package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +232 -232
- package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +111 -111
- package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +331 -331
- package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +119 -119
- package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +127 -127
- package/src/payment-flow-handlers/payment-flow-handlers.ts +218 -218
- package/src/recaptcha-manager/recaptcha-manager.ts +123 -123
- package/src/util/promisedSleep.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"donation-flow-modal-manager.test.js","sourceRoot":"","sources":["../../../../test/tests/flow-handlers/donation-flow-modal-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\r\nimport { DonationFlowModalManager } from '../../../src/payment-flow-handlers/donation-flow-modal-manager';\r\nimport { MockModalManager } from '../../mocks/mock-modal-manager';\r\nimport '../../mocks/mock-modal-manager';\r\nimport { MockBraintreeManager } from '../../mocks/mock-braintree-manager';\r\nimport { mockSuccessResponse } from '../../mocks/models/mock-success-response';\r\nimport {\r\n PaymentProvider,\r\n DonationPaymentInfo,\r\n DonationType,\r\n} from '@internetarchive/donation-form-data-models';\r\nimport { mockBillingInfo } from '../../mocks/models/mock-billing-info';\r\nimport { mockCustomerInfo } from '../../mocks/models/mock-customer-info';\r\nimport { DonationControllerEventLoggerInterface } from '../../../src/@types/analytics-handler';\r\nimport sinon from 'sinon';\r\n\r\nlet analytics: DonationControllerEventLoggerInterface;\r\n\r\ndescribe('Donation Flow Modal Manager', () => {\r\n beforeEach(() => {\r\n analytics = {\r\n logEvent: sinon.fake(),\r\n logDonationFlowEvent: sinon.fake(),\r\n };\r\n });\r\n afterEach(() => {\r\n sinon.restore();\r\n });\r\n it('can close the modal', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics,\r\n });\r\n manager.closeModal();\r\n expect(mockModalManager.closeCalled).to.be.true;\r\n });\r\n\r\n it('can calculate the proper default upsell amount', async () => {\r\n const defaultAmount = 8;\r\n let amount = DonationFlowModalManager.getDefaultUpsellAmount(1);\r\n expect(amount).to.equal(defaultAmount);\r\n amount = DonationFlowModalManager.getDefaultUpsellAmount(10);\r\n expect(amount).to.equal(defaultAmount);\r\n amount = DonationFlowModalManager.getDefaultUpsellAmount(10.01);\r\n expect(amount).to.equal(10);\r\n amount = DonationFlowModalManager.getDefaultUpsellAmount(25);\r\n expect(amount).to.equal(10);\r\n amount = DonationFlowModalManager.getDefaultUpsellAmount(25.01);\r\n expect(amount).to.equal(25);\r\n amount = DonationFlowModalManager.getDefaultUpsellAmount(100);\r\n expect(amount).to.equal(25);\r\n amount = DonationFlowModalManager.getDefaultUpsellAmount(100.01);\r\n expect(amount).to.equal(50);\r\n });\r\n\r\n it('can show the processing modal', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics,\r\n });\r\n manager.showProcessingModal();\r\n const modalOptions = mockModalManager.showModalOptions;\r\n expect(modalOptions?.config.headerColor).to.equal('#497fbf');\r\n expect(modalOptions?.config.showProcessingIndicator).to.be.true;\r\n expect(modalOptions?.config.processingImageMode).to.equal('processing');\r\n expect(modalOptions?.config.closeOnBackdropClick).to.be.false;\r\n expect(modalOptions?.config.showCloseButton).to.be.false;\r\n expect(modalOptions?.config.title?.strings[0]).to.contain('Processing...');\r\n });\r\n\r\n it('can show the error modal', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics,\r\n });\r\n manager.showErrorModal({ message: 'foo-error' });\r\n const modalOptions = mockModalManager.showModalOptions;\r\n expect(modalOptions?.config.headerColor).to.equal('#691916');\r\n expect(modalOptions?.config.showProcessingIndicator).to.be.false;\r\n expect(modalOptions?.config.closeOnBackdropClick).to.be.true;\r\n expect(modalOptions?.config.showCloseButton).to.be.true;\r\n expect(modalOptions?.config.headline?.strings[0]).to.contain(\r\n \"There's been a problem completing your donation.\",\r\n );\r\n expect(modalOptions?.config.message?.values[0]).to.equal('foo-error');\r\n });\r\n\r\n it('shows the thank you modal and calls `donationSuccessful` to take user to thank you page', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const logEvent = sinon.fake();\r\n const logDonationFlowEvent = sinon.fake();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics: {\r\n logEvent,\r\n logDonationFlowEvent,\r\n },\r\n });\r\n manager.showThankYouModal({\r\n successResponse: mockSuccessResponse,\r\n });\r\n const modalOptions = mockModalManager.showModalOptions;\r\n expect(modalOptions?.config.headerColor).to.equal('#55A183');\r\n expect(modalOptions?.config.processingImageMode).to.equal('complete');\r\n expect(modalOptions?.config.showProcessingIndicator).to.be.true;\r\n expect(modalOptions?.config.closeOnBackdropClick).to.be.true;\r\n expect(modalOptions?.config.showCloseButton).to.be.true;\r\n expect(modalOptions?.config.title?.strings[0]).to.contain('Thank You!');\r\n const response = mockBraintreeManager.donationSuccessfulOptions?.successResponse;\r\n expect(response).to.deep.equal(mockSuccessResponse);\r\n });\r\n\r\n it('donation submitted analytics gets sent when drawing thank you modal', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const logEvent = sinon.fake();\r\n const logDonationFlowEvent = sinon.fake();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics: {\r\n logEvent,\r\n logDonationFlowEvent,\r\n },\r\n });\r\n const successResponse = mockSuccessResponse;\r\n successResponse.paymentProvider = PaymentProvider.GooglePay;\r\n manager.showThankYouModal({\r\n successResponse: mockSuccessResponse,\r\n });\r\n\r\n // fires analytics\r\n expect(logDonationFlowEvent.callCount).to.equal(1);\r\n expect(logDonationFlowEvent.args[0][0]).to.equal(`Donated-GooglePay`);\r\n expect(logDonationFlowEvent.args[0][1]).to.equal(DonationType.OneTime);\r\n });\r\n\r\n it('can show the confirmation modal', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics,\r\n });\r\n manager.showConfirmationStepModal({\r\n donationType: DonationType.Upsell,\r\n amount: 8,\r\n currencyType: 'USD',\r\n cancelDonationCB: () => console.log('donation cancelled'),\r\n confirmDonationCB: () => console.log('donation confirmed'),\r\n });\r\n\r\n const modalOptions = mockModalManager.showModalOptions;\r\n expect(modalOptions?.config.headerColor).to.equal('#55A183');\r\n expect(modalOptions?.config.closeOnBackdropClick).to.be.false;\r\n expect(modalOptions?.config.showCloseButton).to.be.true;\r\n expect(modalOptions?.config?.title?.values).to.contain('Confirm monthly donation');\r\n });\r\n\r\n it('can start the donation submission flow', async () => {\r\n const mockModalManager = (await fixture(html`\r\n <mock-modal-manager></mock-modal-manager>\r\n `)) as MockModalManager;\r\n const mockBraintreeManager = new MockBraintreeManager();\r\n const manager = new DonationFlowModalManager({\r\n braintreeManager: mockBraintreeManager,\r\n modalManager: mockModalManager,\r\n analytics,\r\n });\r\n const result = await manager.startDonationSubmissionFlow({\r\n nonce: 'foo',\r\n paymentProvider: PaymentProvider.CreditCard,\r\n donationInfo: new DonationPaymentInfo({\r\n donationType: DonationType.OneTime,\r\n amount: 5,\r\n coverFees: false,\r\n }),\r\n billingInfo: mockBillingInfo,\r\n customerInfo: mockCustomerInfo,\r\n });\r\n\r\n expect(result).to.deep.equal({\r\n success: true,\r\n value: {\r\n amount: 5,\r\n billing: {\r\n countryCodeAlpha2: 'US',\r\n extendedAddress: 'Apt 123',\r\n locality: 'San Francisco',\r\n postalCode: '12345',\r\n region: 'CA',\r\n streetAddress: '123 Fake St',\r\n },\r\n customer: {\r\n email: 'foo@bar.com',\r\n firstName: 'Fooey',\r\n lastName: 'McBarrison',\r\n },\r\n customer_id: 'bar',\r\n donationType: 'one-time',\r\n paymentMethodNonce: 'foo',\r\n paymentProvider: 'Credit Card',\r\n transaction_id: 'foo',\r\n },\r\n });\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"donation-flow-modal-manager.test.js","sourceRoot":"","sources":["../../../../test/tests/flow-handlers/donation-flow-modal-manager.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gEAAgE,CAAC;AAE1G,OAAO,gCAAgC,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,YAAY,GACb,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,IAAI,SAAiD,CAAC;AAEtD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,GAAG;YACV,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE;YACtB,oBAAoB,EAAE,KAAK,CAAC,IAAI,EAAE;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,CAAC,OAAO,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,qBAAqB,EAAE,GAAS,EAAE;QACnC,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS;SACV,CAAC,CAAC;QACH,OAAO,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAClD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAS,EAAE;QAC9D,MAAM,aAAa,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,GAAG,wBAAwB,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAS,EAAE;;QAC7C,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS;SACV,CAAC,CAAC;QACH,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChE,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACzD,MAAM,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC7E,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAS,EAAE;;QACxC,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS;SACV,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjE,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC7D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxD,MAAM,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAC1D,kDAAkD,CACnD,CAAC;QACF,MAAM,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,OAAO,0CAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,GAAS,EAAE;;QACvG,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS,EAAE;gBACT,QAAQ;gBACR,oBAAoB;aACrB;SACF,CAAC,CAAC;QACH,OAAO,CAAC,iBAAiB,CAAC;YACxB,eAAe,EAAE,mBAAmB;SACrC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChE,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC7D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxD,MAAM,CAAC,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAA,oBAAoB,CAAC,yBAAyB,0CAAE,eAAe,CAAC;QACjF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACtD,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAS,EAAE;QACnF,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS,EAAE;gBACT,QAAQ;gBACR,oBAAoB;aACrB;SACF,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,mBAAmB,CAAC;QAC5C,eAAe,CAAC,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC;QAC5D,OAAO,CAAC,iBAAiB,CAAC;YACxB,eAAe,EAAE,mBAAmB;SACrC,CAAC,CAAC;QAEH,kBAAkB;QAClB,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACtE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACzE,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;;QAC/C,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS;SACV,CAAC,CAAC;QACH,OAAO,CAAC,yBAAyB,CAAC;YAChC,YAAY,EAAE,YAAY,CAAC,MAAM;YACjC,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,KAAK;YACnB,gBAAgB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;YACzD,iBAAiB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;SAC3D,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC;QACvD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAC9D,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACxD,MAAM,CAAC,MAAA,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,0CAAE,KAAK,0CAAE,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACrF,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;QACtD,MAAM,gBAAgB,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE3C,CAAC,CAAqB,CAAC;QACxB,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;YAC3C,gBAAgB,EAAE,oBAAoB;YACtC,YAAY,EAAE,gBAAgB;YAC9B,SAAS;SACV,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,2BAA2B,CAAC;YACvD,KAAK,EAAE,KAAK;YACZ,eAAe,EAAE,eAAe,CAAC,UAAU;YAC3C,YAAY,EAAE,IAAI,mBAAmB,CAAC;gBACpC,YAAY,EAAE,YAAY,CAAC,OAAO;gBAClC,MAAM,EAAE,CAAC;gBACT,SAAS,EAAE,KAAK;aACjB,CAAC;YACF,WAAW,EAAE,eAAe;YAC5B,YAAY,EAAE,gBAAgB;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,OAAO,EAAE,IAAI;YACb,KAAK,EAAE;gBACL,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE;oBACP,iBAAiB,EAAE,IAAI;oBACvB,eAAe,EAAE,SAAS;oBAC1B,QAAQ,EAAE,eAAe;oBACzB,UAAU,EAAE,OAAO;oBACnB,MAAM,EAAE,IAAI;oBACZ,aAAa,EAAE,aAAa;iBAC7B;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,aAAa;oBACpB,SAAS,EAAE,OAAO;oBAClB,QAAQ,EAAE,YAAY;iBACvB;gBACD,WAAW,EAAE,KAAK;gBAClB,YAAY,EAAE,UAAU;gBACxB,kBAAkB,EAAE,KAAK;gBACzB,eAAe,EAAE,aAAa;gBAC9B,cAAc,EAAE,KAAK;aACtB;SACF,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport { DonationFlowModalManager } from '../../../src/payment-flow-handlers/donation-flow-modal-manager';\nimport { MockModalManager } from '../../mocks/mock-modal-manager';\nimport '../../mocks/mock-modal-manager';\nimport { MockBraintreeManager } from '../../mocks/mock-braintree-manager';\nimport { mockSuccessResponse } from '../../mocks/models/mock-success-response';\nimport {\n PaymentProvider,\n DonationPaymentInfo,\n DonationType,\n} from '@internetarchive/donation-form-data-models';\nimport { mockBillingInfo } from '../../mocks/models/mock-billing-info';\nimport { mockCustomerInfo } from '../../mocks/models/mock-customer-info';\nimport { DonationControllerEventLoggerInterface } from '../../../src/@types/analytics-handler';\nimport sinon from 'sinon';\n\nlet analytics: DonationControllerEventLoggerInterface;\n\ndescribe('Donation Flow Modal Manager', () => {\n beforeEach(() => {\n analytics = {\n logEvent: sinon.fake(),\n logDonationFlowEvent: sinon.fake(),\n };\n });\n afterEach(() => {\n sinon.restore();\n });\n it('can close the modal', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics,\n });\n manager.closeModal();\n expect(mockModalManager.closeCalled).to.be.true;\n });\n\n it('can calculate the proper default upsell amount', async () => {\n const defaultAmount = 8;\n let amount = DonationFlowModalManager.getDefaultUpsellAmount(1);\n expect(amount).to.equal(defaultAmount);\n amount = DonationFlowModalManager.getDefaultUpsellAmount(10);\n expect(amount).to.equal(defaultAmount);\n amount = DonationFlowModalManager.getDefaultUpsellAmount(10.01);\n expect(amount).to.equal(10);\n amount = DonationFlowModalManager.getDefaultUpsellAmount(25);\n expect(amount).to.equal(10);\n amount = DonationFlowModalManager.getDefaultUpsellAmount(25.01);\n expect(amount).to.equal(25);\n amount = DonationFlowModalManager.getDefaultUpsellAmount(100);\n expect(amount).to.equal(25);\n amount = DonationFlowModalManager.getDefaultUpsellAmount(100.01);\n expect(amount).to.equal(50);\n });\n\n it('can show the processing modal', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics,\n });\n manager.showProcessingModal();\n const modalOptions = mockModalManager.showModalOptions;\n expect(modalOptions?.config.headerColor).to.equal('#497fbf');\n expect(modalOptions?.config.showProcessingIndicator).to.be.true;\n expect(modalOptions?.config.processingImageMode).to.equal('processing');\n expect(modalOptions?.config.closeOnBackdropClick).to.be.false;\n expect(modalOptions?.config.showCloseButton).to.be.false;\n expect(modalOptions?.config.title?.strings[0]).to.contain('Processing...');\n });\n\n it('can show the error modal', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics,\n });\n manager.showErrorModal({ message: 'foo-error' });\n const modalOptions = mockModalManager.showModalOptions;\n expect(modalOptions?.config.headerColor).to.equal('#691916');\n expect(modalOptions?.config.showProcessingIndicator).to.be.false;\n expect(modalOptions?.config.closeOnBackdropClick).to.be.true;\n expect(modalOptions?.config.showCloseButton).to.be.true;\n expect(modalOptions?.config.headline?.strings[0]).to.contain(\n \"There's been a problem completing your donation.\",\n );\n expect(modalOptions?.config.message?.values[0]).to.equal('foo-error');\n });\n\n it('shows the thank you modal and calls `donationSuccessful` to take user to thank you page', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const logEvent = sinon.fake();\n const logDonationFlowEvent = sinon.fake();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics: {\n logEvent,\n logDonationFlowEvent,\n },\n });\n manager.showThankYouModal({\n successResponse: mockSuccessResponse,\n });\n const modalOptions = mockModalManager.showModalOptions;\n expect(modalOptions?.config.headerColor).to.equal('#55A183');\n expect(modalOptions?.config.processingImageMode).to.equal('complete');\n expect(modalOptions?.config.showProcessingIndicator).to.be.true;\n expect(modalOptions?.config.closeOnBackdropClick).to.be.true;\n expect(modalOptions?.config.showCloseButton).to.be.true;\n expect(modalOptions?.config.title?.strings[0]).to.contain('Thank You!');\n const response = mockBraintreeManager.donationSuccessfulOptions?.successResponse;\n expect(response).to.deep.equal(mockSuccessResponse);\n });\n\n it('donation submitted analytics gets sent when drawing thank you modal', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const logEvent = sinon.fake();\n const logDonationFlowEvent = sinon.fake();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics: {\n logEvent,\n logDonationFlowEvent,\n },\n });\n const successResponse = mockSuccessResponse;\n successResponse.paymentProvider = PaymentProvider.GooglePay;\n manager.showThankYouModal({\n successResponse: mockSuccessResponse,\n });\n\n // fires analytics\n expect(logDonationFlowEvent.callCount).to.equal(1);\n expect(logDonationFlowEvent.args[0][0]).to.equal(`Donated-GooglePay`);\n expect(logDonationFlowEvent.args[0][1]).to.equal(DonationType.OneTime);\n });\n\n it('can show the confirmation modal', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics,\n });\n manager.showConfirmationStepModal({\n donationType: DonationType.Upsell,\n amount: 8,\n currencyType: 'USD',\n cancelDonationCB: () => console.log('donation cancelled'),\n confirmDonationCB: () => console.log('donation confirmed'),\n });\n\n const modalOptions = mockModalManager.showModalOptions;\n expect(modalOptions?.config.headerColor).to.equal('#55A183');\n expect(modalOptions?.config.closeOnBackdropClick).to.be.false;\n expect(modalOptions?.config.showCloseButton).to.be.true;\n expect(modalOptions?.config?.title?.values).to.contain('Confirm monthly donation');\n });\n\n it('can start the donation submission flow', async () => {\n const mockModalManager = (await fixture(html`\n <mock-modal-manager></mock-modal-manager>\n `)) as MockModalManager;\n const mockBraintreeManager = new MockBraintreeManager();\n const manager = new DonationFlowModalManager({\n braintreeManager: mockBraintreeManager,\n modalManager: mockModalManager,\n analytics,\n });\n const result = await manager.startDonationSubmissionFlow({\n nonce: 'foo',\n paymentProvider: PaymentProvider.CreditCard,\n donationInfo: new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 5,\n coverFees: false,\n }),\n billingInfo: mockBillingInfo,\n customerInfo: mockCustomerInfo,\n });\n\n expect(result).to.deep.equal({\n success: true,\n value: {\n amount: 5,\n billing: {\n countryCodeAlpha2: 'US',\n extendedAddress: 'Apt 123',\n locality: 'San Francisco',\n postalCode: '12345',\n region: 'CA',\n streetAddress: '123 Fake St',\n },\n customer: {\n email: 'foo@bar.com',\n firstName: 'Fooey',\n lastName: 'McBarrison',\n },\n customer_id: 'bar',\n donationType: 'one-time',\n paymentMethodNonce: 'foo',\n paymentProvider: 'Credit Card',\n transaction_id: 'foo',\n },\n });\n });\n});\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '../../../src/form-elements/contact-form/contact-form';
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { fixture, elementUpdated, expect } from '@open-wc/testing';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import '../../../src/form-elements/contact-form/contact-form';
|
|
5
|
+
describe('ContactForm', () => {
|
|
6
|
+
it('validates required fields', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
7
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
8
|
+
const firstNameInput = el.querySelector('#donation-contact-form-first-name');
|
|
9
|
+
const lastNameInput = el.querySelector('#donation-contact-form-last-name');
|
|
10
|
+
const emailInput = el.querySelector('#donation-contact-form-email');
|
|
11
|
+
firstNameInput.value = ' ';
|
|
12
|
+
lastNameInput.value = ' ';
|
|
13
|
+
emailInput.value = '';
|
|
14
|
+
expect(firstNameInput.checkValidity()).to.be.false;
|
|
15
|
+
expect(lastNameInput.checkValidity()).to.be.false;
|
|
16
|
+
expect(emailInput.checkValidity()).to.be.false;
|
|
17
|
+
firstNameInput.value = 'John';
|
|
18
|
+
lastNameInput.value = 'Doe';
|
|
19
|
+
emailInput.value = 'john.doe@example.com';
|
|
20
|
+
yield elementUpdated(el);
|
|
21
|
+
expect(firstNameInput.checkValidity()).to.be.true;
|
|
22
|
+
expect(lastNameInput.checkValidity()).to.be.true;
|
|
23
|
+
expect(emailInput.checkValidity()).to.be.true;
|
|
24
|
+
}));
|
|
25
|
+
it('requires minimum number of characters for first and last name', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
27
|
+
const firstNameInput = el.querySelector('#donation-contact-form-first-name');
|
|
28
|
+
const lastNameInput = el.querySelector('#donation-contact-form-last-name');
|
|
29
|
+
firstNameInput.value = 'A';
|
|
30
|
+
lastNameInput.value = 'B';
|
|
31
|
+
yield elementUpdated(el);
|
|
32
|
+
expect(firstNameInput.checkValidity()).to.be.false;
|
|
33
|
+
expect(lastNameInput.checkValidity()).to.be.false;
|
|
34
|
+
}));
|
|
35
|
+
it('requires email by default', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
36
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
37
|
+
const emailInput = el.querySelector('#donation-contact-form-email');
|
|
38
|
+
expect(emailInput.required).to.be.true;
|
|
39
|
+
}));
|
|
40
|
+
it('street address requires minimum number of characters', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
42
|
+
const streetAddressInput = el.querySelector('#donation-contact-form-street-address');
|
|
43
|
+
streetAddressInput.value = '1 b';
|
|
44
|
+
yield elementUpdated(el);
|
|
45
|
+
expect(streetAddressInput.checkValidity()).to.be.false;
|
|
46
|
+
streetAddressInput.value = '1 st';
|
|
47
|
+
yield elementUpdated(el);
|
|
48
|
+
expect(streetAddressInput.checkValidity()).to.be.true;
|
|
49
|
+
}));
|
|
50
|
+
describe('region and postal code requirements', () => {
|
|
51
|
+
it('state and postal code required for US address', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
53
|
+
el.selectedCountry = 'US';
|
|
54
|
+
yield elementUpdated(el);
|
|
55
|
+
const regionInput = el.querySelector('#donation-contact-form-region');
|
|
56
|
+
const postalCodeInput = el.querySelector('#donation-contact-form-postal-code');
|
|
57
|
+
expect(regionInput.required).to.be.true;
|
|
58
|
+
expect(postalCodeInput.required).to.be.true;
|
|
59
|
+
}));
|
|
60
|
+
it('state and postal code optional for non-US address', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
62
|
+
el.selectedCountry = 'CA';
|
|
63
|
+
yield elementUpdated(el);
|
|
64
|
+
const regionInput = el.querySelector('#donation-contact-form-region');
|
|
65
|
+
const postalCodeInput = el.querySelector('#donation-contact-form-postal-code');
|
|
66
|
+
expect(regionInput.required).to.be.false;
|
|
67
|
+
expect(postalCodeInput.required).to.be.false;
|
|
68
|
+
}));
|
|
69
|
+
});
|
|
70
|
+
describe('country selector', () => {
|
|
71
|
+
it('defaults selectedCountry to US', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
72
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
73
|
+
expect(el.selectedCountry).to.equal('US');
|
|
74
|
+
}));
|
|
75
|
+
it('dropdown updates selectedCountry property', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
76
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
77
|
+
const countrySelect = el.querySelector('#donation-contact-form-countryCodeAlpha2');
|
|
78
|
+
countrySelect.value = 'CA';
|
|
79
|
+
countrySelect.dispatchEvent(new Event('change'));
|
|
80
|
+
yield elementUpdated(el);
|
|
81
|
+
expect(el.selectedCountry).to.equal('CA');
|
|
82
|
+
}));
|
|
83
|
+
it('does not update selectedCountry property for invalid country code', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
84
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
85
|
+
const countrySelect = el.querySelector('#donation-contact-form-countryCodeAlpha2');
|
|
86
|
+
const initialCountry = el.selectedCountry;
|
|
87
|
+
countrySelect.value = 'XX'; // Invalid country code
|
|
88
|
+
countrySelect.dispatchEvent(new Event('change'));
|
|
89
|
+
yield elementUpdated(el);
|
|
90
|
+
expect(el.selectedCountry).to.equal(initialCountry);
|
|
91
|
+
}));
|
|
92
|
+
});
|
|
93
|
+
describe('reportValidity()', () => {
|
|
94
|
+
it('returns false if required fields are empty and shows validation messages', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
95
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
96
|
+
const firstNameInput = el.querySelector('#donation-contact-form-first-name');
|
|
97
|
+
const lastNameInput = el.querySelector('#donation-contact-form-last-name');
|
|
98
|
+
const emailInput = el.querySelector('#donation-contact-form-email');
|
|
99
|
+
firstNameInput.value = '';
|
|
100
|
+
lastNameInput.value = '';
|
|
101
|
+
emailInput.value = '';
|
|
102
|
+
const validityResult = el.reportValidity();
|
|
103
|
+
expect(validityResult).to.be.false;
|
|
104
|
+
expect(firstNameInput.validationMessage).to.not.equal('');
|
|
105
|
+
expect(lastNameInput.validationMessage).to.not.equal('');
|
|
106
|
+
expect(emailInput.validationMessage).to.not.equal('');
|
|
107
|
+
}));
|
|
108
|
+
it('returns true if all required fields are filled correctly', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
109
|
+
const el = (yield fixture(html `<contact-form></contact-form>`));
|
|
110
|
+
const firstNameInput = el.querySelector('#donation-contact-form-first-name');
|
|
111
|
+
const lastNameInput = el.querySelector('#donation-contact-form-last-name');
|
|
112
|
+
const emailInput = el.querySelector('#donation-contact-form-email');
|
|
113
|
+
const streetAddressInput = el.querySelector('#donation-contact-form-street-address');
|
|
114
|
+
const cityInput = el.querySelector('#donation-contact-form-locality');
|
|
115
|
+
const regionInput = el.querySelector('#donation-contact-form-region');
|
|
116
|
+
const postalCodeInput = el.querySelector('#donation-contact-form-postal-code');
|
|
117
|
+
streetAddressInput.value = '123 Main St';
|
|
118
|
+
cityInput.value = 'Anytown';
|
|
119
|
+
regionInput.value = 'CA';
|
|
120
|
+
postalCodeInput.value = '12345';
|
|
121
|
+
firstNameInput.value = 'John';
|
|
122
|
+
lastNameInput.value = 'Doe';
|
|
123
|
+
emailInput.value = 'john.doe@example.com';
|
|
124
|
+
const validityResult = el.reportValidity();
|
|
125
|
+
expect(validityResult).to.be.true;
|
|
126
|
+
expect(firstNameInput.validationMessage).to.equal('');
|
|
127
|
+
expect(lastNameInput.validationMessage).to.equal('');
|
|
128
|
+
expect(emailInput.validationMessage).to.equal('');
|
|
129
|
+
}));
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=contact-form.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contact-form.test.js","sourceRoot":"","sources":["../../../../test/tests/form-elements/contact-form.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, elementUpdated, expect } from '@open-wc/testing';\nimport { html } from 'lit';\nimport '../../../src/form-elements/contact-form/contact-form';\nimport type { ContactForm } from '../../../src/form-elements/contact-form/contact-form';\n\ndescribe('ContactForm', () => {\n it('validates required fields', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const firstNameInput = el.querySelector(\n '#donation-contact-form-first-name',\n ) as HTMLInputElement;\n const lastNameInput = el.querySelector('#donation-contact-form-last-name') as HTMLInputElement;\n const emailInput = el.querySelector('#donation-contact-form-email') as HTMLInputElement;\n\n firstNameInput.value = ' ';\n lastNameInput.value = ' ';\n emailInput.value = '';\n\n expect(firstNameInput.checkValidity()).to.be.false;\n expect(lastNameInput.checkValidity()).to.be.false;\n expect(emailInput.checkValidity()).to.be.false;\n\n firstNameInput.value = 'John';\n lastNameInput.value = 'Doe';\n emailInput.value = 'john.doe@example.com';\n await elementUpdated(el);\n\n expect(firstNameInput.checkValidity()).to.be.true;\n expect(lastNameInput.checkValidity()).to.be.true;\n expect(emailInput.checkValidity()).to.be.true;\n });\n\n it('requires minimum number of characters for first and last name', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const firstNameInput = el.querySelector(\n '#donation-contact-form-first-name',\n ) as HTMLInputElement;\n const lastNameInput = el.querySelector('#donation-contact-form-last-name') as HTMLInputElement;\n firstNameInput.value = 'A';\n lastNameInput.value = 'B';\n await elementUpdated(el);\n expect(firstNameInput.checkValidity()).to.be.false;\n expect(lastNameInput.checkValidity()).to.be.false;\n });\n\n it('requires email by default', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const emailInput = el.querySelector('#donation-contact-form-email') as HTMLInputElement;\n expect(emailInput.required).to.be.true;\n });\n\n it('street address requires minimum number of characters', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const streetAddressInput = el.querySelector(\n '#donation-contact-form-street-address',\n ) as HTMLInputElement;\n streetAddressInput.value = '1 b';\n await elementUpdated(el);\n expect(streetAddressInput.checkValidity()).to.be.false;\n streetAddressInput.value = '1 st';\n await elementUpdated(el);\n expect(streetAddressInput.checkValidity()).to.be.true;\n });\n\n describe('region and postal code requirements', () => {\n it('state and postal code required for US address', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n el.selectedCountry = 'US';\n await elementUpdated(el);\n const regionInput = el.querySelector('#donation-contact-form-region') as HTMLInputElement;\n const postalCodeInput = el.querySelector(\n '#donation-contact-form-postal-code',\n ) as HTMLInputElement;\n expect(regionInput.required).to.be.true;\n expect(postalCodeInput.required).to.be.true;\n });\n\n it('state and postal code optional for non-US address', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n el.selectedCountry = 'CA';\n await elementUpdated(el);\n const regionInput = el.querySelector('#donation-contact-form-region') as HTMLInputElement;\n const postalCodeInput = el.querySelector(\n '#donation-contact-form-postal-code',\n ) as HTMLInputElement;\n expect(regionInput.required).to.be.false;\n expect(postalCodeInput.required).to.be.false;\n });\n });\n\n describe('country selector', () => {\n it('defaults selectedCountry to US', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n expect(el.selectedCountry).to.equal('US');\n });\n\n it('dropdown updates selectedCountry property', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const countrySelect = el.querySelector(\n '#donation-contact-form-countryCodeAlpha2',\n ) as HTMLSelectElement;\n countrySelect.value = 'CA';\n countrySelect.dispatchEvent(new Event('change'));\n await elementUpdated(el);\n expect(el.selectedCountry).to.equal('CA');\n });\n\n it('does not update selectedCountry property for invalid country code', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const countrySelect = el.querySelector(\n '#donation-contact-form-countryCodeAlpha2',\n ) as HTMLSelectElement;\n const initialCountry = el.selectedCountry;\n countrySelect.value = 'XX'; // Invalid country code\n countrySelect.dispatchEvent(new Event('change'));\n await elementUpdated(el);\n expect(el.selectedCountry).to.equal(initialCountry);\n });\n });\n\n describe('reportValidity()', () => {\n it('returns false if required fields are empty and shows validation messages', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const firstNameInput = el.querySelector(\n '#donation-contact-form-first-name',\n ) as HTMLInputElement;\n const lastNameInput = el.querySelector(\n '#donation-contact-form-last-name',\n ) as HTMLInputElement;\n const emailInput = el.querySelector('#donation-contact-form-email') as HTMLInputElement;\n\n firstNameInput.value = '';\n lastNameInput.value = '';\n emailInput.value = '';\n\n const validityResult = el.reportValidity();\n\n expect(validityResult).to.be.false;\n expect(firstNameInput.validationMessage).to.not.equal('');\n expect(lastNameInput.validationMessage).to.not.equal('');\n expect(emailInput.validationMessage).to.not.equal('');\n });\n\n it('returns true if all required fields are filled correctly', async () => {\n const el = (await fixture(html`<contact-form></contact-form>`)) as ContactForm;\n const firstNameInput = el.querySelector(\n '#donation-contact-form-first-name',\n ) as HTMLInputElement;\n const lastNameInput = el.querySelector(\n '#donation-contact-form-last-name',\n ) as HTMLInputElement;\n const emailInput = el.querySelector('#donation-contact-form-email') as HTMLInputElement;\n const streetAddressInput = el.querySelector(\n '#donation-contact-form-street-address',\n ) as HTMLInputElement;\n const cityInput = el.querySelector('#donation-contact-form-locality') as HTMLInputElement;\n const regionInput = el.querySelector('#donation-contact-form-region') as HTMLInputElement;\n const postalCodeInput = el.querySelector(\n '#donation-contact-form-postal-code',\n ) as HTMLInputElement;\n\n streetAddressInput.value = '123 Main St';\n cityInput.value = 'Anytown';\n regionInput.value = 'CA';\n postalCodeInput.value = '12345';\n\n firstNameInput.value = 'John';\n lastNameInput.value = 'Doe';\n emailInput.value = 'john.doe@example.com';\n\n const validityResult = el.reportValidity();\n\n expect(validityResult).to.be.true;\n expect(firstNameInput.validationMessage).to.equal('');\n expect(lastNameInput.validationMessage).to.equal('');\n expect(emailInput.validationMessage).to.equal('');\n });\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"donation-summary.test.js","sourceRoot":"","sources":["../../../../test/tests/form-elements/donation-summary.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,oDAAoD,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/F,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;;QAC7D,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA,0CAA0C,CAAC,CAAoB,CAAC;QAE9F,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC3C,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,YAAY,CAAC,OAAO;YAClC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,YAAY,CAAC;QAE/B,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;;QAC5D,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA,0CAA0C,CAAC,CAAoB,CAAC;QAE9F,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC3C,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,YAAY,CAAC,OAAO;YAClC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,YAAY,CAAC;QAE/B,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACrE,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect, elementUpdated } from '@open-wc/testing';\
|
|
1
|
+
{"version":3,"file":"donation-summary.test.js","sourceRoot":"","sources":["../../../../test/tests/form-elements/donation-summary.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,oDAAoD,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAE/F,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;;QAC7D,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA,0CAA0C,CAAC,CAAoB,CAAC;QAE9F,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC3C,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,YAAY,CAAC,OAAO;YAClC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,YAAY,CAAC;QAE/B,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC,CAAA,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;;QAC5D,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA,0CAA0C,CAAC,CAAoB,CAAC;QAE9F,MAAM,YAAY,GAAG,IAAI,mBAAmB,CAAC;YAC3C,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,YAAY,CAAC,OAAO;YAClC,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QAEH,EAAE,CAAC,YAAY,GAAG,YAAY,CAAC;QAE/B,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;QAEzB,MAAM,YAAY,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,CAAC,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACrE,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect, elementUpdated } from '@open-wc/testing';\nimport { DonationSummary } from '../../../src/form-elements/header/donation-summary';\nimport '../../../src/form-elements/header/donation-summary';\nimport { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';\n\ndescribe('DonationSummary', () => {\n it('shows the proper title for one-time donations', async () => {\n const el = (await fixture(html` <donation-summary></donation-summary>> `)) as DonationSummary;\n\n const donationInfo = new DonationPaymentInfo({\n amount: 3.5,\n donationType: DonationType.OneTime,\n coverFees: false,\n });\n\n el.donationInfo = donationInfo;\n\n await elementUpdated(el);\n\n const titleElement = el.shadowRoot?.querySelector('h1');\n\n expect(titleElement?.innerText).to.equal('$3.50 Donation');\n });\n\n it('shows the proper title for monthly donations', async () => {\n const el = (await fixture(html` <donation-summary></donation-summary>> `)) as DonationSummary;\n\n const donationInfo = new DonationPaymentInfo({\n amount: 7.5,\n donationType: DonationType.Monthly,\n coverFees: false,\n });\n\n el.donationInfo = donationInfo;\n\n await elementUpdated(el);\n\n const titleElement = el.shadowRoot?.querySelector('h1');\n\n expect(titleElement?.innerText).to.equal('$7.50 Monthly Donation');\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment-selector.test.js","sourceRoot":"","sources":["../../../../test/tests/form-elements/payment-selector.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, elementUpdated, oneEvent } from '@open-wc/testing';\
|
|
1
|
+
{"version":3,"file":"payment-selector.test.js","sourceRoot":"","sources":["../../../../test/tests/form-elements/payment-selector.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, elementUpdated, oneEvent } from '@open-wc/testing';\nimport { PaymentSelector } from '../../../src/form-elements/payment-selector';\nimport '../../../src/form-elements/payment-selector';\nimport { MockPaymentProviders } from '../../mocks/payment-providers/mock-payment-providers';\nimport { promisedSleep } from '../../../src/util/promisedSleep';\n\ndescribe('Payment Selector', () => {\n it('shows Venmo if it is available', async () => {\n const el = (await fixture(html` <payment-selector></payment-selector> `)) as PaymentSelector;\n\n const paymentProviders = new MockPaymentProviders();\n el.paymentProviders = paymentProviders;\n await elementUpdated(el);\n await promisedSleep(250);\n\n const venmoButton = el.shadowRoot?.querySelector('.venmo.provider-button');\n expect(venmoButton?.classList.contains('available')).to.be.true;\n });\n\n it('can show PayPal when called', async () => {\n const el = (await fixture(html` <payment-selector></payment-selector> `)) as PaymentSelector;\n el.showPaypalButton();\n await elementUpdated(el);\n const paypalButton = el.shadowRoot?.querySelector('.paypal-container.provider-button');\n expect(paypalButton?.classList.contains('available')).to.be.true;\n });\n\n it('emits paypalBlockerSelected event when paypal is selected in an error state', async () => {\n const el = (await fixture(html` <payment-selector></payment-selector> `)) as PaymentSelector;\n const paypalBlocker = el.shadowRoot?.querySelector('.paypal-local-button');\n const clickEvent = new MouseEvent('click');\n setTimeout(() => {\n paypalBlocker?.dispatchEvent(clickEvent);\n });\n const response = await oneEvent(el, 'paypalBlockerSelected');\n expect(response).to.exist;\n });\n\n it('emits applePaySelected event with original click event when ApplePay is selected', async () => {\n const el = (await fixture(html` <payment-selector></payment-selector> `)) as PaymentSelector;\n const paypalBlocker = el.shadowRoot?.querySelector('.applepay.provider-button');\n const clickEvent = new MouseEvent('click');\n setTimeout(() => {\n paypalBlocker?.dispatchEvent(clickEvent);\n });\n const response = await oneEvent(el, 'applePaySelected');\n const event = response.detail.originalEvent;\n expect(event).to.equal(clickEvent);\n });\n\n it('emits googlePaySelected when GooglePay is selected', async () => {\n const el = (await fixture(html` <payment-selector></payment-selector> `)) as PaymentSelector;\n const paypalBlocker = el.shadowRoot?.querySelector('.googlepay.provider-button');\n const clickEvent = new MouseEvent('click');\n setTimeout(() => {\n paypalBlocker?.dispatchEvent(clickEvent);\n });\n const response = await oneEvent(el, 'googlePaySelected');\n expect(response).to.exist;\n });\n});\n"]}
|
|
@@ -4,8 +4,8 @@ import '../../../src/modals/error-modal-content';
|
|
|
4
4
|
describe('Error Modal Content', () => {
|
|
5
5
|
it('renders a "Questions" link', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
6
6
|
var _a;
|
|
7
|
-
const el = yield fixture(html `
|
|
8
|
-
<donation-form-error-modal-content></donation-form-error-modal-content>
|
|
7
|
+
const el = yield fixture(html `
|
|
8
|
+
<donation-form-error-modal-content></donation-form-error-modal-content>
|
|
9
9
|
`);
|
|
10
10
|
const questionsLink = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.container a');
|
|
11
11
|
expect(questionsLink).to.exist;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-modal-content.test.js","sourceRoot":"","sources":["../../../../test/tests/modals/error-modal-content.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,yCAAyC,CAAC;AAEjD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;;QAC1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE5B,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\
|
|
1
|
+
{"version":3,"file":"error-modal-content.test.js","sourceRoot":"","sources":["../../../../test/tests/modals/error-modal-content.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,yCAAyC,CAAC;AAEjD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;;QAC1C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAA;;KAE5B,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,cAAc,CAAC,CAAC;QACnE,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport '../../../src/modals/error-modal-content';\n\ndescribe('Error Modal Content', () => {\n it('renders a \"Questions\" link', async () => {\n const el = await fixture(html`\n <donation-form-error-modal-content></donation-form-error-modal-content>\n `);\n\n const questionsLink = el.shadowRoot?.querySelector('.container a');\n expect(questionsLink).to.exist;\n expect(questionsLink?.innerHTML).to.contain('Questions?');\n });\n});\n"]}
|
|
@@ -7,16 +7,16 @@ describe('Upsell Modal Content', () => {
|
|
|
7
7
|
describe('UI Actions', () => {
|
|
8
8
|
it('shows a no button', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
9
9
|
var _a;
|
|
10
|
-
const el = (yield fixture(html `
|
|
11
|
-
<upsell-modal-content></upsell-modal-content>
|
|
10
|
+
const el = (yield fixture(html `
|
|
11
|
+
<upsell-modal-content></upsell-modal-content>
|
|
12
12
|
`));
|
|
13
13
|
const noButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#no-button');
|
|
14
14
|
expect(noButton).to.exist;
|
|
15
15
|
}));
|
|
16
16
|
it('shows the proper yes button for non-paypal types', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
17
|
var _a, _b;
|
|
18
|
-
const el = (yield fixture(html `
|
|
19
|
-
<upsell-modal-content .yesButtonMode=${UpsellModalCTAMode.YesButton}></upsell-modal-content>
|
|
18
|
+
const el = (yield fixture(html `
|
|
19
|
+
<upsell-modal-content .yesButtonMode=${UpsellModalCTAMode.YesButton}></upsell-modal-content>
|
|
20
20
|
`));
|
|
21
21
|
const yesButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#yes-button');
|
|
22
22
|
expect(yesButton).to.exist;
|
|
@@ -25,10 +25,10 @@ describe('Upsell Modal Content', () => {
|
|
|
25
25
|
}));
|
|
26
26
|
it('shows the paypal upsell slot for paypal upsells', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
27
|
var _a, _b;
|
|
28
|
-
const el = (yield fixture(html `
|
|
29
|
-
<upsell-modal-content
|
|
30
|
-
.yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}
|
|
31
|
-
></upsell-modal-content>
|
|
28
|
+
const el = (yield fixture(html `
|
|
29
|
+
<upsell-modal-content
|
|
30
|
+
.yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}
|
|
31
|
+
></upsell-modal-content>
|
|
32
32
|
`));
|
|
33
33
|
const payPalSlot = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.paypal-upsell-slot-container');
|
|
34
34
|
expect(payPalSlot).to.exist;
|
|
@@ -39,11 +39,11 @@ describe('Upsell Modal Content', () => {
|
|
|
39
39
|
describe('Events Emitted', () => {
|
|
40
40
|
it('emits a `yesSelected` event with the amount when yes is selected', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
41
|
var _a;
|
|
42
|
-
const el = (yield fixture(html `
|
|
43
|
-
<upsell-modal-content
|
|
44
|
-
.amount=${7.5}
|
|
45
|
-
.yesButtonMode=${UpsellModalCTAMode.YesButton}
|
|
46
|
-
></upsell-modal-content>
|
|
42
|
+
const el = (yield fixture(html `
|
|
43
|
+
<upsell-modal-content
|
|
44
|
+
.amount=${7.5}
|
|
45
|
+
.yesButtonMode=${UpsellModalCTAMode.YesButton}
|
|
46
|
+
></upsell-modal-content>
|
|
47
47
|
`));
|
|
48
48
|
const yesButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#yes-button');
|
|
49
49
|
const clickEvent = new MouseEvent('click');
|
|
@@ -56,8 +56,8 @@ describe('Upsell Modal Content', () => {
|
|
|
56
56
|
}));
|
|
57
57
|
it('emits a `noThanksSelected` event when no thanks is selected', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
58
58
|
var _a;
|
|
59
|
-
const el = (yield fixture(html `
|
|
60
|
-
<upsell-modal-content></upsell-modal-content>
|
|
59
|
+
const el = (yield fixture(html `
|
|
60
|
+
<upsell-modal-content></upsell-modal-content>
|
|
61
61
|
`));
|
|
62
62
|
const noButton = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#no-button');
|
|
63
63
|
const clickEvent = new MouseEvent('click');
|
|
@@ -71,8 +71,8 @@ describe('Upsell Modal Content', () => {
|
|
|
71
71
|
describe('Amount Changer', () => {
|
|
72
72
|
it('emits an `amountChanged` event with the amount if change successful', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
73
73
|
var _a;
|
|
74
|
-
const el = (yield fixture(html `
|
|
75
|
-
<upsell-modal-content></upsell-modal-content>
|
|
74
|
+
const el = (yield fixture(html `
|
|
75
|
+
<upsell-modal-content></upsell-modal-content>
|
|
76
76
|
`));
|
|
77
77
|
const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
|
|
78
78
|
amountInput.value = '3.50';
|
|
@@ -86,8 +86,8 @@ describe('Upsell Modal Content', () => {
|
|
|
86
86
|
}));
|
|
87
87
|
it('nothing happens if the input is empty', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
88
88
|
var _a;
|
|
89
|
-
const el = (yield fixture(html `
|
|
90
|
-
<upsell-modal-content></upsell-modal-content>
|
|
89
|
+
const el = (yield fixture(html `
|
|
90
|
+
<upsell-modal-content></upsell-modal-content>
|
|
91
91
|
`));
|
|
92
92
|
const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
|
|
93
93
|
amountInput.value = '';
|
|
@@ -99,8 +99,8 @@ describe('Upsell Modal Content', () => {
|
|
|
99
99
|
}));
|
|
100
100
|
it('shows an error if the amount isNaN', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
101
|
var _a, _b;
|
|
102
|
-
const el = (yield fixture(html `
|
|
103
|
-
<upsell-modal-content></upsell-modal-content>
|
|
102
|
+
const el = (yield fixture(html `
|
|
103
|
+
<upsell-modal-content></upsell-modal-content>
|
|
104
104
|
`));
|
|
105
105
|
const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
|
|
106
106
|
amountInput.value = 'a';
|
|
@@ -114,8 +114,8 @@ describe('Upsell Modal Content', () => {
|
|
|
114
114
|
}));
|
|
115
115
|
it('shows an error if the amount is too low', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
116
116
|
var _a, _b;
|
|
117
|
-
const el = (yield fixture(html `
|
|
118
|
-
<upsell-modal-content></upsell-modal-content>
|
|
117
|
+
const el = (yield fixture(html `
|
|
118
|
+
<upsell-modal-content></upsell-modal-content>
|
|
119
119
|
`));
|
|
120
120
|
const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
|
|
121
121
|
amountInput.value = '0.99';
|
|
@@ -129,8 +129,8 @@ describe('Upsell Modal Content', () => {
|
|
|
129
129
|
}));
|
|
130
130
|
it('shows an error if the amount is too high', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
131
|
var _a, _b;
|
|
132
|
-
const el = (yield fixture(html `
|
|
133
|
-
<upsell-modal-content></upsell-modal-content>
|
|
132
|
+
const el = (yield fixture(html `
|
|
133
|
+
<upsell-modal-content></upsell-modal-content>
|
|
134
134
|
`));
|
|
135
135
|
const amountInput = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#amount-input');
|
|
136
136
|
amountInput.value = '10000';
|
|
@@ -144,16 +144,16 @@ describe('Upsell Modal Content', () => {
|
|
|
144
144
|
}));
|
|
145
145
|
it('shows the paypal blocker if there is an error', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
146
146
|
var _a;
|
|
147
|
-
const el = (yield fixture(html `
|
|
148
|
-
<upsell-modal-content
|
|
149
|
-
.yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}
|
|
150
|
-
></upsell-modal-content>
|
|
147
|
+
const el = (yield fixture(html `
|
|
148
|
+
<upsell-modal-content
|
|
149
|
+
.yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}
|
|
150
|
+
></upsell-modal-content>
|
|
151
151
|
`));
|
|
152
152
|
const paypalBlocker = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.paypal-upsell-slot-blocker');
|
|
153
153
|
expect(el.error).to.be.undefined;
|
|
154
154
|
expect(paypalBlocker.classList.contains('hidden')).to.be.true;
|
|
155
|
-
el.error = lit2html `
|
|
156
|
-
Some error
|
|
155
|
+
el.error = lit2html `
|
|
156
|
+
Some error
|
|
157
157
|
`;
|
|
158
158
|
yield el.updateComplete;
|
|
159
159
|
expect(el.error).to.not.be.undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsell-modal-content.test.js","sourceRoot":"","sources":["../../../../test/tests/modals/upsell-modal-content.test.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAsB,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAClG,OAAO,0CAA0C,CAAC;AAClD,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,KAAK,CAAC;AAEvC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,mBAAmB,EAAE,GAAS,EAAE;;YACjC,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;YAC5D,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAS,EAAE;;YAChE,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;+CACW,kBAAkB,CAAC,SAAS;OACpE,CAAC,CAAuB,CAAC;YAE1B,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC3B,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;YACjF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QAClC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAS,EAAE;;YAC/D,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;2BAET,kBAAkB,CAAC,gBAAgB;;OAEvD,CAAC,CAAuB,CAAC;YAE1B,MAAM,UAAU,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;YACjF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC5B,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QACjC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,kEAAkE,EAAE,GAAS,EAAE;;YAChF,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;oBAEhB,GAAG;2BACI,kBAAkB,CAAC,SAAS;;OAEhD,CAAC,CAAuB,CAAC;YAE1B,MAAM,SAAS,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,aAAa,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3C,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAS,EAAE;;YAC3E,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,YAAY,CAAC,CAAC;YAC5D,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3C,UAAU,CAAC,GAAG,EAAE;gBACd,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,qEAAqE,EAAE,GAAS,EAAE;;YACnF,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAqB,CAAC;YACtF,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,UAAU,CAAC,GAAG,EAAE;gBACd,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;YAC1B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;;YACrD,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAqB,CAAC;YACtF,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,EAAE,CAAC,cAAc,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;QACnC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAS,EAAE;;YAClD,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAqB,CAAC;YACtF,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC;YACxB,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,EAAE,CAAC,cAAc,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YACrC,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACzE,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAS,EAAE;;YACvD,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAqB,CAAC;YACtF,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,EAAE,CAAC,cAAc,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YACrC,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC9E,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;;YACxD,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;OAE7B,CAAC,CAAuB,CAAC;YAE1B,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAqB,CAAC;YACtF,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,EAAE,CAAC,cAAc,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YACrC,MAAM,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;QAClF,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;;YAC7D,MAAM,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAA;;2BAET,kBAAkB,CAAC,gBAAgB;;OAEvD,CAAC,CAAuB,CAAC;YAE1B,MAAM,aAAa,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAChD,6BAA6B,CACZ,CAAC;YACpB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC;YACjC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;YAC9D,EAAE,CAAC,KAAK,GAAG,QAAQ,CAAA;;OAElB,CAAC;YACF,MAAM,EAAE,CAAC,cAAc,CAAC;YACxB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;YACrC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACjE,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect, oneEvent } from '@open-wc/testing';\r\nimport { UpsellModalContent, UpsellModalCTAMode } from '../../../src/modals/upsell-modal-content';\r\nimport '../../../src/modals/upsell-modal-content';\r\nimport { html as lit2html } from 'lit';\r\n\r\ndescribe('Upsell Modal Content', () => {\r\n describe('UI Actions', () => {\r\n it('shows a no button', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const noButton = el.shadowRoot?.querySelector('#no-button');\r\n expect(noButton).to.exist;\r\n });\r\n\r\n it('shows the proper yes button for non-paypal types', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content .yesButtonMode=${UpsellModalCTAMode.YesButton}></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const yesButton = el.shadowRoot?.querySelector('#yes-button');\r\n expect(yesButton).to.exist;\r\n const payPalSlot = el.shadowRoot?.querySelector('.paypal-upsell-slot-container');\r\n expect(payPalSlot).to.not.exist;\r\n });\r\n\r\n it('shows the paypal upsell slot for paypal upsells', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content\r\n .yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}\r\n ></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const payPalSlot = el.shadowRoot?.querySelector('.paypal-upsell-slot-container');\r\n expect(payPalSlot).to.exist;\r\n const yesButton = el.shadowRoot?.querySelector('#yes-button');\r\n expect(yesButton).to.not.exist;\r\n });\r\n });\r\n\r\n describe('Events Emitted', () => {\r\n it('emits a `yesSelected` event with the amount when yes is selected', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content\r\n .amount=${7.5}\r\n .yesButtonMode=${UpsellModalCTAMode.YesButton}\r\n ></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const yesButton = el.shadowRoot?.querySelector('#yes-button');\r\n const clickEvent = new MouseEvent('click');\r\n setTimeout(() => {\r\n yesButton?.dispatchEvent(clickEvent);\r\n });\r\n const response = await oneEvent(el, 'yesSelected');\r\n expect(response).to.exist;\r\n expect(response.detail.amount).to.equal(7.5);\r\n });\r\n\r\n it('emits a `noThanksSelected` event when no thanks is selected', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const noButton = el.shadowRoot?.querySelector('#no-button');\r\n const clickEvent = new MouseEvent('click');\r\n setTimeout(() => {\r\n noButton?.dispatchEvent(clickEvent);\r\n });\r\n const response = await oneEvent(el, 'noThanksSelected');\r\n expect(response).to.exist;\r\n });\r\n });\r\n\r\n describe('Amount Changer', () => {\r\n it('emits an `amountChanged` event with the amount if change successful', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\r\n amountInput.value = '3.50';\r\n const inputEvent = new Event('input');\r\n setTimeout(() => {\r\n amountInput.dispatchEvent(inputEvent);\r\n });\r\n const response = await oneEvent(el, 'amountChanged');\r\n expect(response).to.exist;\r\n expect(response.detail.amount).to.equal(3.5);\r\n });\r\n\r\n it('nothing happens if the input is empty', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\r\n amountInput.value = '';\r\n const inputEvent = new Event('input');\r\n expect(el.error).to.be.undefined;\r\n amountInput.dispatchEvent(inputEvent);\r\n await el.updateComplete;\r\n expect(el.error).to.be.undefined;\r\n });\r\n\r\n it('shows an error if the amount isNaN', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\r\n amountInput.value = 'a';\r\n const inputEvent = new Event('input');\r\n const errorDiv = el.shadowRoot?.querySelector('.error');\r\n expect(el.error).to.be.undefined;\r\n amountInput.dispatchEvent(inputEvent);\r\n await el.updateComplete;\r\n expect(el.error).to.not.be.undefined;\r\n expect(errorDiv?.innerHTML).to.contain('Please enter a valid amount.');\r\n });\r\n\r\n it('shows an error if the amount is too low', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\r\n amountInput.value = '0.99';\r\n const inputEvent = new Event('input');\r\n const errorDiv = el.shadowRoot?.querySelector('.error');\r\n expect(el.error).to.be.undefined;\r\n amountInput.dispatchEvent(inputEvent);\r\n await el.updateComplete;\r\n expect(el.error).to.not.be.undefined;\r\n expect(errorDiv?.innerHTML).to.contain('The minimum donation amount is $1');\r\n });\r\n\r\n it('shows an error if the amount is too high', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\r\n amountInput.value = '10000';\r\n const inputEvent = new Event('input');\r\n const errorDiv = el.shadowRoot?.querySelector('.error');\r\n expect(el.error).to.be.undefined;\r\n amountInput.dispatchEvent(inputEvent);\r\n await el.updateComplete;\r\n expect(el.error).to.not.be.undefined;\r\n expect(errorDiv?.innerHTML).to.contain('To make a donation of $10,000 or more');\r\n });\r\n\r\n it('shows the paypal blocker if there is an error', async () => {\r\n const el = (await fixture(html`\r\n <upsell-modal-content\r\n .yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}\r\n ></upsell-modal-content>\r\n `)) as UpsellModalContent;\r\n\r\n const paypalBlocker = el.shadowRoot?.querySelector(\r\n '.paypal-upsell-slot-blocker',\r\n ) as HTMLDivElement;\r\n expect(el.error).to.be.undefined;\r\n expect(paypalBlocker.classList.contains('hidden')).to.be.true;\r\n el.error = lit2html`\r\n Some error\r\n `;\r\n await el.updateComplete;\r\n expect(el.error).to.not.be.undefined;\r\n expect(paypalBlocker.classList.contains('hidden')).to.be.false;\r\n });\r\n });\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"upsell-modal-content.test.js","sourceRoot":"","sources":["../../../../test/tests/modals/upsell-modal-content.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, oneEvent } from '@open-wc/testing';\nimport { UpsellModalContent, UpsellModalCTAMode } from '../../../src/modals/upsell-modal-content';\nimport '../../../src/modals/upsell-modal-content';\nimport { html as lit2html } from 'lit';\n\ndescribe('Upsell Modal Content', () => {\n describe('UI Actions', () => {\n it('shows a no button', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const noButton = el.shadowRoot?.querySelector('#no-button');\n expect(noButton).to.exist;\n });\n\n it('shows the proper yes button for non-paypal types', async () => {\n const el = (await fixture(html`\n <upsell-modal-content .yesButtonMode=${UpsellModalCTAMode.YesButton}></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const yesButton = el.shadowRoot?.querySelector('#yes-button');\n expect(yesButton).to.exist;\n const payPalSlot = el.shadowRoot?.querySelector('.paypal-upsell-slot-container');\n expect(payPalSlot).to.not.exist;\n });\n\n it('shows the paypal upsell slot for paypal upsells', async () => {\n const el = (await fixture(html`\n <upsell-modal-content\n .yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}\n ></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const payPalSlot = el.shadowRoot?.querySelector('.paypal-upsell-slot-container');\n expect(payPalSlot).to.exist;\n const yesButton = el.shadowRoot?.querySelector('#yes-button');\n expect(yesButton).to.not.exist;\n });\n });\n\n describe('Events Emitted', () => {\n it('emits a `yesSelected` event with the amount when yes is selected', async () => {\n const el = (await fixture(html`\n <upsell-modal-content\n .amount=${7.5}\n .yesButtonMode=${UpsellModalCTAMode.YesButton}\n ></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const yesButton = el.shadowRoot?.querySelector('#yes-button');\n const clickEvent = new MouseEvent('click');\n setTimeout(() => {\n yesButton?.dispatchEvent(clickEvent);\n });\n const response = await oneEvent(el, 'yesSelected');\n expect(response).to.exist;\n expect(response.detail.amount).to.equal(7.5);\n });\n\n it('emits a `noThanksSelected` event when no thanks is selected', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const noButton = el.shadowRoot?.querySelector('#no-button');\n const clickEvent = new MouseEvent('click');\n setTimeout(() => {\n noButton?.dispatchEvent(clickEvent);\n });\n const response = await oneEvent(el, 'noThanksSelected');\n expect(response).to.exist;\n });\n });\n\n describe('Amount Changer', () => {\n it('emits an `amountChanged` event with the amount if change successful', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\n amountInput.value = '3.50';\n const inputEvent = new Event('input');\n setTimeout(() => {\n amountInput.dispatchEvent(inputEvent);\n });\n const response = await oneEvent(el, 'amountChanged');\n expect(response).to.exist;\n expect(response.detail.amount).to.equal(3.5);\n });\n\n it('nothing happens if the input is empty', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\n amountInput.value = '';\n const inputEvent = new Event('input');\n expect(el.error).to.be.undefined;\n amountInput.dispatchEvent(inputEvent);\n await el.updateComplete;\n expect(el.error).to.be.undefined;\n });\n\n it('shows an error if the amount isNaN', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\n amountInput.value = 'a';\n const inputEvent = new Event('input');\n const errorDiv = el.shadowRoot?.querySelector('.error');\n expect(el.error).to.be.undefined;\n amountInput.dispatchEvent(inputEvent);\n await el.updateComplete;\n expect(el.error).to.not.be.undefined;\n expect(errorDiv?.innerHTML).to.contain('Please enter a valid amount.');\n });\n\n it('shows an error if the amount is too low', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\n amountInput.value = '0.99';\n const inputEvent = new Event('input');\n const errorDiv = el.shadowRoot?.querySelector('.error');\n expect(el.error).to.be.undefined;\n amountInput.dispatchEvent(inputEvent);\n await el.updateComplete;\n expect(el.error).to.not.be.undefined;\n expect(errorDiv?.innerHTML).to.contain('The minimum donation amount is $1');\n });\n\n it('shows an error if the amount is too high', async () => {\n const el = (await fixture(html`\n <upsell-modal-content></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const amountInput = el.shadowRoot?.querySelector('#amount-input') as HTMLInputElement;\n amountInput.value = '10000';\n const inputEvent = new Event('input');\n const errorDiv = el.shadowRoot?.querySelector('.error');\n expect(el.error).to.be.undefined;\n amountInput.dispatchEvent(inputEvent);\n await el.updateComplete;\n expect(el.error).to.not.be.undefined;\n expect(errorDiv?.innerHTML).to.contain('To make a donation of $10,000 or more');\n });\n\n it('shows the paypal blocker if there is an error', async () => {\n const el = (await fixture(html`\n <upsell-modal-content\n .yesButtonMode=${UpsellModalCTAMode.PayPalUpsellSlot}\n ></upsell-modal-content>\n `)) as UpsellModalContent;\n\n const paypalBlocker = el.shadowRoot?.querySelector(\n '.paypal-upsell-slot-blocker',\n ) as HTMLDivElement;\n expect(el.error).to.be.undefined;\n expect(paypalBlocker.classList.contains('hidden')).to.be.true;\n el.error = lit2html`\n Some error\n `;\n await el.updateComplete;\n expect(el.error).to.not.be.undefined;\n expect(paypalBlocker.classList.contains('hidden')).to.be.false;\n });\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"donation-payment-info.test.js","sourceRoot":"","sources":["../../../../test/tests/models/donation-payment-info.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\
|
|
1
|
+
{"version":3,"file":"donation-payment-info.test.js","sourceRoot":"","sources":["../../../../test/tests/models/donation-payment-info.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\nimport { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';\n\n// this is a separate calculation from the one in DonationPaymentInfo\n// to have a second verification independent of it\nfunction calculateFee(amount: number): number {\n return Math.round((amount * 0.0219 + 0.29) * 100) / 100;\n}\n\ndescribe('Donation Payment Info', () => {\n it('calculates the proper total for no fees covered', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 3.5,\n coverFees: false,\n });\n\n expect(donationInfo.total).to.equal(3.5);\n });\n\n it('calculates the proper total for fees coverage', async () => {\n const baseAmount = 3.5;\n const expectedFee = calculateFee(baseAmount);\n const expectedTotal = Math.round((baseAmount + expectedFee) * 100) / 100;\n\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: true,\n });\n\n expect(donationInfo.total).to.equal(expectedTotal);\n });\n\n it('calculates the proper expected fees from manual calculations', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 5,\n coverFees: true,\n });\n expect(donationInfo.fee).to.equal(0.4);\n expect(donationInfo.total).to.equal(5.4);\n\n donationInfo.amount = 3.5;\n expect(donationInfo.fee).to.equal(0.37);\n expect(donationInfo.total).to.equal(3.87);\n });\n\n it('calculates the proper expected fees', async () => {\n const baseAmount = 3.23;\n const expectedFee = calculateFee(baseAmount);\n const calculatedFee = DonationPaymentInfo.calculateFeeAmount(baseAmount);\n expect(expectedFee).to.equal(calculatedFee);\n });\n\n it('get the proper fee amount covered when covering fees', async () => {\n const baseAmount = 4.12;\n const expectedFee = calculateFee(baseAmount);\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: true,\n });\n\n expect(donationInfo.feeAmountCovered).to.equal(expectedFee);\n });\n\n it('get the proper fee amount covered when not covering fees', async () => {\n const baseAmount = 4.12;\n // const expectedFee = calculateFee(baseAmount);\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: baseAmount,\n coverFees: false,\n });\n\n expect(donationInfo.feeAmountCovered).to.equal(0);\n });\n\n it('calculates the proper expected total', async () => {\n const baseAmount = 3.29;\n const expectedFee = calculateFee(baseAmount);\n const expectedTotal = baseAmount + expectedFee;\n const calculatedTotal = DonationPaymentInfo.calculateTotal(baseAmount, true);\n expect(expectedTotal).to.equal(calculatedTotal);\n });\n});\n"]}
|