@internetarchive/donation-form 1.0.3-alpha-webdev7960.0 → 1.0.3-webdev-8122.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.
Files changed (210) hide show
  1. package/LICENSE +661 -661
  2. package/README.md +115 -115
  3. package/dist/demo/braintree-endpoint-manager.js.map +1 -1
  4. package/dist/demo/demo-analytics-handler.js.map +1 -1
  5. package/dist/demo/submit-form-with.js.map +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/braintree-manager/braintree-interfaces.js.map +1 -1
  8. package/dist/src/braintree-manager/braintree-manager.js.map +1 -1
  9. package/dist/src/braintree-manager/payment-clients.js.map +1 -1
  10. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.js.map +1 -1
  11. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.js.map +1 -1
  12. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.js.map +1 -1
  13. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.js.map +1 -1
  14. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.js.map +1 -1
  15. package/dist/src/braintree-manager/payment-providers/apple-pay/apple-pay.js.map +1 -1
  16. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card-interface.js.map +1 -1
  17. package/dist/src/braintree-manager/payment-providers/credit-card/credit-card.js.map +1 -1
  18. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.js.map +1 -1
  19. package/dist/src/braintree-manager/payment-providers/credit-card/hosted-field-container.js.map +1 -1
  20. package/dist/src/braintree-manager/payment-providers/google-pay-interface.js.map +1 -1
  21. package/dist/src/braintree-manager/payment-providers/google-pay.js.map +1 -1
  22. package/dist/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.js.map +1 -1
  23. package/dist/src/braintree-manager/payment-providers/paypal/paypal-interface.js.map +1 -1
  24. package/dist/src/braintree-manager/payment-providers/paypal/paypal.js.map +1 -1
  25. package/dist/src/braintree-manager/payment-providers/venmo-interface.js.map +1 -1
  26. package/dist/src/braintree-manager/payment-providers/venmo.js.map +1 -1
  27. package/dist/src/braintree-manager/payment-providers-interface.js.map +1 -1
  28. package/dist/src/braintree-manager/payment-providers.js.map +1 -1
  29. package/dist/src/donation-form-controller.js +123 -123
  30. package/dist/src/donation-form-controller.js.map +1 -1
  31. package/dist/src/donation-form-error.js.map +1 -1
  32. package/dist/src/donation-form.js +107 -107
  33. package/dist/src/donation-form.js.map +1 -1
  34. package/dist/src/form-elements/badged-input.js +47 -47
  35. package/dist/src/form-elements/badged-input.js.map +1 -1
  36. package/dist/src/form-elements/contact-form/autocomplete-field-options.js.map +1 -1
  37. package/dist/src/form-elements/contact-form/contact-form.js +159 -157
  38. package/dist/src/form-elements/contact-form/contact-form.js.map +1 -1
  39. package/dist/src/form-elements/contact-form/countries.js.map +1 -1
  40. package/dist/src/form-elements/header/donation-form-header.js +14 -14
  41. package/dist/src/form-elements/header/donation-form-header.js.map +1 -1
  42. package/dist/src/form-elements/header/donation-summary.js +15 -15
  43. package/dist/src/form-elements/header/donation-summary.js.map +1 -1
  44. package/dist/src/form-elements/payment-selector.js +164 -164
  45. package/dist/src/form-elements/payment-selector.js.map +1 -1
  46. package/dist/src/form-elements/total-amount.js +16 -16
  47. package/dist/src/form-elements/total-amount.js.map +1 -1
  48. package/dist/src/modals/confirm-donation-modal-content.js +51 -51
  49. package/dist/src/modals/confirm-donation-modal-content.js.map +1 -1
  50. package/dist/src/modals/error-modal-content.js +22 -22
  51. package/dist/src/modals/error-modal-content.js.map +1 -1
  52. package/dist/src/modals/upsell-modal-content.js +182 -182
  53. package/dist/src/modals/upsell-modal-content.js.map +1 -1
  54. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js +20 -20
  55. package/dist/src/payment-flow-handlers/donation-flow-modal-manager.js.map +1 -1
  56. package/dist/src/payment-flow-handlers/handlers/applepay-flow-handler.js.map +1 -1
  57. package/dist/src/payment-flow-handlers/handlers/creditcard-flow-handler.js.map +1 -1
  58. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js +2 -0
  59. package/dist/src/payment-flow-handlers/handlers/googlepay-flow-handler.js.map +1 -1
  60. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js +2 -0
  61. package/dist/src/payment-flow-handlers/handlers/paypal-flow-handler.js.map +1 -1
  62. package/dist/src/payment-flow-handlers/handlers/venmo-flow-handler.js.map +1 -1
  63. package/dist/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.js.map +1 -1
  64. package/dist/src/payment-flow-handlers/payment-flow-handlers.js.map +1 -1
  65. package/dist/src/recaptcha-manager/recaptcha-manager.js.map +1 -1
  66. package/dist/src/util/promisedSleep.js.map +1 -1
  67. package/dist/test/helpers/fillInContactForm.js.map +1 -1
  68. package/dist/test/mocks/flow-handlers/individual-handlers/mock-applepay-flow-handler.js.map +1 -1
  69. package/dist/test/mocks/flow-handlers/individual-handlers/mock-creditcard-flow-handler.js.map +1 -1
  70. package/dist/test/mocks/flow-handlers/individual-handlers/mock-googlepay-flow-handler.js.map +1 -1
  71. package/dist/test/mocks/flow-handlers/individual-handlers/mock-paypal-flow-handler.js.map +1 -1
  72. package/dist/test/mocks/flow-handlers/individual-handlers/mock-venmo-flow-handler.js.map +1 -1
  73. package/dist/test/mocks/flow-handlers/mock-payment-flow-handlers.js.map +1 -1
  74. package/dist/test/mocks/mock-braintree-manager.js.map +1 -1
  75. package/dist/test/mocks/mock-donation-info.js.map +1 -1
  76. package/dist/test/mocks/mock-endpoint-manager.js.map +1 -1
  77. package/dist/test/mocks/mock-hosted-fields-config.js.map +1 -1
  78. package/dist/test/mocks/mock-hosted-fields-container.js.map +1 -1
  79. package/dist/test/mocks/mock-lazy-loader.js.map +1 -1
  80. package/dist/test/mocks/mock-modal-manager.js.map +1 -1
  81. package/dist/test/mocks/mock-payment-clients.js.map +1 -1
  82. package/dist/test/mocks/mock-paypal-button-renderer.js.map +1 -1
  83. package/dist/test/mocks/mock-recaptcha-manager.js.map +1 -1
  84. package/dist/test/mocks/models/mock-billing-info.js +2 -0
  85. package/dist/test/mocks/models/mock-billing-info.js.map +1 -1
  86. package/dist/test/mocks/models/mock-custom-fields.js.map +1 -1
  87. package/dist/test/mocks/models/mock-customer-info.js.map +1 -1
  88. package/dist/test/mocks/models/mock-donation-request.js.map +1 -1
  89. package/dist/test/mocks/models/mock-success-response.js.map +1 -1
  90. package/dist/test/mocks/payment-clients/mock-applepay-client.js.map +1 -1
  91. package/dist/test/mocks/payment-clients/mock-applepay-payment.js.map +1 -1
  92. package/dist/test/mocks/payment-clients/mock-applepay-paymentauthorizedevent.js.map +1 -1
  93. package/dist/test/mocks/payment-clients/mock-applepay-session.js.map +1 -1
  94. package/dist/test/mocks/payment-clients/mock-applepay-sessionmanager.js.map +1 -1
  95. package/dist/test/mocks/payment-clients/mock-applepay-validatemerchantevent.js.map +1 -1
  96. package/dist/test/mocks/payment-clients/mock-braintree-client.js.map +1 -1
  97. package/dist/test/mocks/payment-clients/mock-data-collector.js.map +1 -1
  98. package/dist/test/mocks/payment-clients/mock-googlepay-client.js.map +1 -1
  99. package/dist/test/mocks/payment-clients/mock-googlepay-library.js.map +1 -1
  100. package/dist/test/mocks/payment-clients/mock-grecaptcha.js.map +1 -1
  101. package/dist/test/mocks/payment-clients/mock-hostedfields-client.js.map +1 -1
  102. package/dist/test/mocks/payment-clients/mock-hostedfieldstateobject-generator.js.map +1 -1
  103. package/dist/test/mocks/payment-clients/mock-hostedfieldtokenizepayload.js.map +1 -1
  104. package/dist/test/mocks/payment-clients/mock-paypal-client.js.map +1 -1
  105. package/dist/test/mocks/payment-clients/mock-paypal-library.js.map +1 -1
  106. package/dist/test/mocks/payment-clients/mock-venmo-client.js.map +1 -1
  107. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.js.map +1 -1
  108. package/dist/test/mocks/payment-providers/individual-providers/mock-applepay-handler.js.map +1 -1
  109. package/dist/test/mocks/payment-providers/individual-providers/mock-creditcard-handler.js.map +1 -1
  110. package/dist/test/mocks/payment-providers/individual-providers/mock-googlepay-handler.js.map +1 -1
  111. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.js.map +1 -1
  112. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.js.map +1 -1
  113. package/dist/test/mocks/payment-providers/individual-providers/mock-paypal-handler.js.map +1 -1
  114. package/dist/test/mocks/payment-providers/individual-providers/mock-venmo-handler.js.map +1 -1
  115. package/dist/test/mocks/payment-providers/mock-payment-providers.js.map +1 -1
  116. package/dist/test/tests/braintree-manager.test.js.map +1 -1
  117. package/dist/test/tests/donation-form-controller.test.js +39 -39
  118. package/dist/test/tests/donation-form-controller.test.js.map +1 -1
  119. package/dist/test/tests/donation-form.test.js +4 -4
  120. package/dist/test/tests/donation-form.test.js.map +1 -1
  121. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js +16 -14
  122. package/dist/test/tests/flow-handlers/donation-flow-modal-manager.test.js.map +1 -1
  123. package/dist/test/tests/form-elements/donation-summary.test.js.map +1 -1
  124. package/dist/test/tests/form-elements/payment-selector.test.js.map +1 -1
  125. package/dist/test/tests/modals/error-modal-content.test.js +2 -2
  126. package/dist/test/tests/modals/error-modal-content.test.js.map +1 -1
  127. package/dist/test/tests/modals/upsell-modal-content.test.js +31 -31
  128. package/dist/test/tests/modals/upsell-modal-content.test.js.map +1 -1
  129. package/dist/test/tests/models/donation-payment-info.test.js.map +1 -1
  130. package/dist/test/tests/payment-clients.test.js.map +1 -1
  131. package/dist/test/tests/payment-providers/applepay-sessiondatasource.test.js.map +1 -1
  132. package/dist/test/tests/payment-providers/applepay-sessionmanager.test.js.map +1 -1
  133. package/dist/test/tests/payment-providers/applepay.test.js.map +1 -1
  134. package/dist/test/tests/payment-providers/creditcard.test.js.map +1 -1
  135. package/dist/test/tests/payment-providers/googlepay.test.js.map +1 -1
  136. package/dist/test/tests/payment-providers/payment-providers.test.js.map +1 -1
  137. package/dist/test/tests/payment-providers/paypal-button-datasource.test.js.map +1 -1
  138. package/dist/test/tests/payment-providers/paypal.test.js.map +1 -1
  139. package/dist/test/tests/payment-providers/venmo.test.js.map +1 -1
  140. package/dist/test/tests/recaptcha-manager.test.js.map +1 -1
  141. package/package.json +107 -107
  142. package/src/@types/analytics-handler/index.d.ts +8 -8
  143. package/src/@types/braintree-web/LICENSE +21 -21
  144. package/src/@types/braintree-web/index.d.ts +93 -93
  145. package/src/@types/braintree-web/modules/american-express.d.ts +50 -50
  146. package/src/@types/braintree-web/modules/apple-pay.d.ts +213 -213
  147. package/src/@types/braintree-web/modules/client.d.ts +103 -103
  148. package/src/@types/braintree-web/modules/core.d.ts +34 -34
  149. package/src/@types/braintree-web/modules/data-collector.d.ts +13 -13
  150. package/src/@types/braintree-web/modules/google-payment.d.ts +269 -269
  151. package/src/@types/braintree-web/modules/hosted-fields.d.ts +366 -366
  152. package/src/@types/braintree-web/modules/paypal-checkout.d.ts +262 -262
  153. package/src/@types/braintree-web/modules/paypal.d.ts +177 -177
  154. package/src/@types/braintree-web/modules/three-d-secure.d.ts +141 -141
  155. package/src/@types/braintree-web/modules/unionpay.d.ts +224 -224
  156. package/src/@types/braintree-web/modules/us-bank-account.d.ts +81 -81
  157. package/src/@types/braintree-web/modules/venmo.d.ts +110 -110
  158. package/src/@types/braintree-web/package.json +64 -64
  159. package/src/@types/paypal-checkout-components/LICENSE +21 -21
  160. package/src/@types/paypal-checkout-components/index.d.ts +67 -67
  161. package/src/@types/paypal-checkout-components/modules/button.d.ts +50 -50
  162. package/src/@types/paypal-checkout-components/modules/callback-data.d.ts +244 -244
  163. package/src/@types/paypal-checkout-components/modules/configuration.d.ts +114 -114
  164. package/src/@types/paypal-checkout-components/package.json +58 -58
  165. package/src/braintree-manager/braintree-interfaces.ts +172 -172
  166. package/src/braintree-manager/braintree-manager.ts +281 -281
  167. package/src/braintree-manager/payment-clients.ts +146 -146
  168. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-interface.ts +13 -13
  169. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate.ts +8 -8
  170. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-interface.ts +10 -10
  171. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource.ts +119 -119
  172. package/src/braintree-manager/payment-providers/apple-pay/apple-pay-session-manager.ts +21 -21
  173. package/src/braintree-manager/payment-providers/apple-pay/apple-pay.ts +97 -97
  174. package/src/braintree-manager/payment-providers/credit-card/credit-card-interface.ts +21 -21
  175. package/src/braintree-manager/payment-providers/credit-card/credit-card.ts +130 -130
  176. package/src/braintree-manager/payment-providers/credit-card/hosted-field-configuration.ts +19 -19
  177. package/src/braintree-manager/payment-providers/credit-card/hosted-field-container.ts +85 -85
  178. package/src/braintree-manager/payment-providers/google-pay-interface.ts +8 -8
  179. package/src/braintree-manager/payment-providers/google-pay.ts +59 -59
  180. package/src/braintree-manager/payment-providers/paypal/paypal-button-datasource.ts +218 -218
  181. package/src/braintree-manager/payment-providers/paypal/paypal-interface.ts +13 -13
  182. package/src/braintree-manager/payment-providers/paypal/paypal.ts +78 -78
  183. package/src/braintree-manager/payment-providers/venmo-interface.ts +8 -8
  184. package/src/braintree-manager/payment-providers/venmo.ts +67 -67
  185. package/src/braintree-manager/payment-providers-interface.ts +25 -25
  186. package/src/braintree-manager/payment-providers.ts +147 -147
  187. package/src/donation-form-controller.ts +623 -623
  188. package/src/donation-form-error.ts +6 -6
  189. package/src/donation-form.ts +576 -576
  190. package/src/form-elements/badged-input.ts +109 -109
  191. package/src/form-elements/contact-form/autocomplete-field-options.ts +63 -63
  192. package/src/form-elements/contact-form/contact-form.ts +436 -434
  193. package/src/form-elements/contact-form/countries.ts +252 -252
  194. package/src/form-elements/header/donation-form-header.ts +98 -98
  195. package/src/form-elements/header/donation-summary.ts +61 -61
  196. package/src/form-elements/payment-selector.ts +365 -365
  197. package/src/form-elements/total-amount.ts +46 -46
  198. package/src/modals/confirm-donation-modal-content.ts +168 -168
  199. package/src/modals/error-modal-content.ts +48 -48
  200. package/src/modals/upsell-modal-content.ts +284 -284
  201. package/src/payment-flow-handlers/donation-flow-modal-manager.ts +439 -439
  202. package/src/payment-flow-handlers/handlers/applepay-flow-handler.ts +109 -109
  203. package/src/payment-flow-handlers/handlers/creditcard-flow-handler.ts +232 -232
  204. package/src/payment-flow-handlers/handlers/googlepay-flow-handler.ts +113 -111
  205. package/src/payment-flow-handlers/handlers/paypal-flow-handler.ts +333 -331
  206. package/src/payment-flow-handlers/handlers/venmo-flow-handler.ts +119 -119
  207. package/src/payment-flow-handlers/handlers/venmo-restoration-state-handler.ts +127 -127
  208. package/src/payment-flow-handlers/payment-flow-handlers.ts +218 -218
  209. package/src/recaptcha-manager/recaptcha-manager.ts +123 -123
  210. package/src/util/promisedSleep.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"mock-venmo-client.js","sourceRoot":"","sources":["../../../../test/mocks/payment-clients/mock-venmo-client.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,MAAM,OAAO,eAAe;IAGpB,MAAM,CAAC,OAOZ;;YACC,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAID,kBAAkB;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAEK,QAAQ,CACZ,OAAkE;;YAElE,MAAM,OAAO,GAAG;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;aAC7B,CAAC;YAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAE3B,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAEK,QAAQ;;YACZ,OAAO;QACT,CAAC;KAAA;IAED,YAAY,OAAwC;QAzCpD,mBAAc,GAAG,KAAK,CAAC;QAavB,YAAO,GAAG,KAAK,CAAC;QA6Bd,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACrD,CAAC;CAGF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\nexport class MockVenmoClient implements braintree.Venmo {\r\n tokenizeCalled = false;\r\n\r\n async create(options: {\r\n client?: braintree.Client | undefined;\r\n authorization?: string | undefined;\r\n allowNewBrowserTab?: boolean | undefined;\r\n ignoreHistoryChanges?: boolean | undefined;\r\n profileId?: string | undefined;\r\n deepLinkReturnUrl?: string | undefined;\r\n }): Promise<braintree.Venmo> {\r\n return this;\r\n }\r\n\r\n VERSION = 'foo';\r\n\r\n isBrowserSupported(): boolean {\r\n return this.browserSupported;\r\n }\r\n\r\n hasTokenizationResult(): boolean {\r\n return false;\r\n }\r\n\r\n async tokenize(\r\n options?: { processResultsDelay?: number | undefined } | undefined,\r\n ): Promise<braintree.VenmoTokenizePayload> {\r\n const payload = {\r\n nonce: 'foo',\r\n type: 'bar',\r\n details: { username: 'boo' },\r\n };\r\n\r\n this.tokenizeCalled = true;\r\n\r\n return payload;\r\n }\r\n\r\n async teardown(): Promise<void> {\r\n return;\r\n }\r\n\r\n constructor(options: { isBrowserSupported: boolean }) {\r\n this.browserSupported = options.isBrowserSupported;\r\n }\r\n\r\n private browserSupported: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-venmo-client.js","sourceRoot":"","sources":["../../../../test/mocks/payment-clients/mock-venmo-client.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,MAAM,OAAO,eAAe;IAGpB,MAAM,CAAC,OAOZ;;YACC,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IAID,kBAAkB;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,qBAAqB;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAEK,QAAQ,CACZ,OAAkE;;YAElE,MAAM,OAAO,GAAG;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;aAC7B,CAAC;YAEF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAE3B,OAAO,OAAO,CAAC;QACjB,CAAC;KAAA;IAEK,QAAQ;;YACZ,OAAO;QACT,CAAC;KAAA;IAED,YAAY,OAAwC;QAzCpD,mBAAc,GAAG,KAAK,CAAC;QAavB,YAAO,GAAG,KAAK,CAAC;QA6Bd,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACrD,CAAC;CAGF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nexport class MockVenmoClient implements braintree.Venmo {\n tokenizeCalled = false;\n\n async create(options: {\n client?: braintree.Client | undefined;\n authorization?: string | undefined;\n allowNewBrowserTab?: boolean | undefined;\n ignoreHistoryChanges?: boolean | undefined;\n profileId?: string | undefined;\n deepLinkReturnUrl?: string | undefined;\n }): Promise<braintree.Venmo> {\n return this;\n }\n\n VERSION = 'foo';\n\n isBrowserSupported(): boolean {\n return this.browserSupported;\n }\n\n hasTokenizationResult(): boolean {\n return false;\n }\n\n async tokenize(\n options?: { processResultsDelay?: number | undefined } | undefined,\n ): Promise<braintree.VenmoTokenizePayload> {\n const payload = {\n nonce: 'foo',\n type: 'bar',\n details: { username: 'boo' },\n };\n\n this.tokenizeCalled = true;\n\n return payload;\n }\n\n async teardown(): Promise<void> {\n return;\n }\n\n constructor(options: { isBrowserSupported: boolean }) {\n this.browserSupported = options.isBrowserSupported;\n }\n\n private browserSupported: boolean;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-applepay-datasource-delegate.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qCAAqC;IAAlD;QAGE,2BAAsB,GAAG,KAAK,CAAC;IAWjC,CAAC;IATC,eAAe,CAAC,QAA0B;QACxC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC;IAC1C,CAAC;IACD,aAAa,CAAC,KAAU;QACtB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IACD,gBAAgB;QACd,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { DonationResponse } from '@internetarchive/donation-form-data-models';\r\nimport { ApplePaySessionDataSourceDelegate } from '../../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate';\r\n\r\nexport class MockApplePaySessionDataSourceDelegate implements ApplePaySessionDataSourceDelegate {\r\n paymentCompleteResponse?: DonationResponse;\r\n paymentFailedError?: any;\r\n paymentCancelledCalled = false;\r\n\r\n paymentComplete(response: DonationResponse): void {\r\n this.paymentCompleteResponse = response;\r\n }\r\n paymentFailed(error: any): void {\r\n this.paymentFailedError = error;\r\n }\r\n paymentCancelled(): void {\r\n this.paymentCancelledCalled = true;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-applepay-datasource-delegate.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-applepay-datasource-delegate.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,qCAAqC;IAAlD;QAGE,2BAAsB,GAAG,KAAK,CAAC;IAWjC,CAAC;IATC,eAAe,CAAC,QAA0B;QACxC,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC;IAC1C,CAAC;IACD,aAAa,CAAC,KAAU;QACtB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC;IACD,gBAAgB;QACd,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DonationResponse } from '@internetarchive/donation-form-data-models';\nimport { ApplePaySessionDataSourceDelegate } from '../../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource-delegate';\n\nexport class MockApplePaySessionDataSourceDelegate implements ApplePaySessionDataSourceDelegate {\n paymentCompleteResponse?: DonationResponse;\n paymentFailedError?: any;\n paymentCancelledCalled = false;\n\n paymentComplete(response: DonationResponse): void {\n this.paymentCompleteResponse = response;\n }\n paymentFailed(error: any): void {\n this.paymentFailedError = error;\n }\n paymentCancelled(): void {\n this.paymentCancelledCalled = true;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-applepay-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-applepay-handler.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,uDAAuD;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAIhF,MAAM,OAAO,mBAAmB;IAAhC;QACE,aAAQ,GAAG,IAAI,iBAAiB,CAAqB;YACnD,SAAS,EAAE,GAAgC,EAAE,CAC3C,IAAI,OAAO,CAAM,OAAO,CAAC,EAAE;gBACzB,OAAO,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YACpC,CAAC,CAAC;SACL,CAAC,CAAC;IAYL,CAAC;IAVC,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB,CAClB,CAAQ,EACR,YAAiC;QAEjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';\r\nimport { MockApplePayClient } from '../../payment-clients/mock-applepay-client';\r\nimport { ApplePaySessionDataSource } from '../../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource';\r\nimport { ApplePayHandlerInterface } from '../../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-interface';\r\n\r\nexport class MockApplePayHandler implements ApplePayHandlerInterface {\r\n instance = new PromisedSingleton<braintree.ApplePay>({\r\n generator: (): Promise<braintree.ApplePay> =>\r\n new Promise<any>(resolve => {\r\n resolve(new MockApplePayClient());\r\n }),\r\n });\r\n\r\n isAvailable(): Promise<boolean> {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n createPaymentRequest(\r\n e: Event,\r\n donationInfo: DonationPaymentInfo,\r\n ): Promise<ApplePaySessionDataSource> {\r\n throw new Error('Method not implemented.');\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-applepay-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-applepay-handler.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,uDAAuD;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAIhF,MAAM,OAAO,mBAAmB;IAAhC;QACE,aAAQ,GAAG,IAAI,iBAAiB,CAAqB;YACnD,SAAS,EAAE,GAAgC,EAAE,CAC3C,IAAI,OAAO,CAAM,OAAO,CAAC,EAAE;gBACzB,OAAO,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;YACpC,CAAC,CAAC;SACL,CAAC,CAAC;IAYL,CAAC;IAVC,WAAW;QACT,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,oBAAoB,CAClB,CAAQ,EACR,YAAiC;QAEjC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';\nimport { MockApplePayClient } from '../../payment-clients/mock-applepay-client';\nimport { ApplePaySessionDataSource } from '../../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-session-datasource';\nimport { ApplePayHandlerInterface } from '../../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-interface';\n\nexport class MockApplePayHandler implements ApplePayHandlerInterface {\n instance = new PromisedSingleton<braintree.ApplePay>({\n generator: (): Promise<braintree.ApplePay> =>\n new Promise<any>(resolve => {\n resolve(new MockApplePayClient());\n }),\n });\n\n isAvailable(): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n\n createPaymentRequest(\n e: Event,\n donationInfo: DonationPaymentInfo,\n ): Promise<ApplePaySessionDataSource> {\n throw new Error('Method not implemented.');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-creditcard-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-creditcard-handler.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AAKvG,OAAO,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAE3D,MAAM,OAAO,qBAAqB;IAW1B,oBAAoB;;YACxB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;KAAA;IAED,eAAe,CAAC,MAAyB;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,MAAyB;QACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,OAA4B;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,OAAgE;;QA9B5E,aAAQ,GAAG,IAAI,iBAAiB,CAAyB;YACvD,SAAS,EAAE,GAAoC,EAAE,CAC/C,IAAI,OAAO,CAAyB,OAAO,CAAC,EAAE;gBAC5C,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC;oBACxC,8BAA8B,EAAE,IAAI,CAAC,WAAW;iBACjD,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;SACL,CAAC,CAAC;QA0BK,YAAO,GAAG,gBAAgB,EAA2B,CAAC;QAH5D,IAAI,CAAC,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,8BAA8B,CAAC;IAC5E,CAAC;IAID,EAAE,CACA,KAAQ,EACR,QAAoC;QAEpC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CAGF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { HostedFieldName } from '../../../../src/braintree-manager/payment-providers/credit-card/hosted-field-container';\r\nimport { MockHostedFieldsClient } from '../../payment-clients/mock-hostedfields-client';\r\nimport { mockHostedFieldTokenizePayload } from '../../payment-clients/mock-hostedfieldtokenizepayload';\r\nimport {\r\n CreditCardHandlerEvents,\r\n CreditCardHandlerInterface,\r\n} from '../../../../src/braintree-manager/payment-providers/credit-card/credit-card-interface';\r\nimport { createNanoEvents, Unsubscribe } from 'nanoevents';\r\n\r\nexport class MockCreditCardHandler implements CreditCardHandlerInterface {\r\n instance = new PromisedSingleton<braintree.HostedFields>({\r\n generator: (): Promise<braintree.HostedFields> =>\r\n new Promise<braintree.HostedFields>(resolve => {\r\n const client = new MockHostedFieldsClient({\r\n mockHostedFieldTokenizePayload: this.mockPayload,\r\n });\r\n resolve(client);\r\n }),\r\n });\r\n\r\n async tokenizeHostedFields(): Promise<braintree.HostedFieldsTokenizePayload | undefined> {\r\n return this.mockPayload;\r\n }\r\n\r\n markFieldErrors(fields: HostedFieldName[]): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n removeFieldErrors(fields: HostedFieldName[]): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n showErrorMessage(message?: string | undefined): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n hideErrorMessage(): void {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n constructor(options?: { mockPayload: braintree.HostedFieldsTokenizePayload }) {\r\n this.mockPayload = options?.mockPayload ?? mockHostedFieldTokenizePayload;\r\n }\r\n\r\n private emitter = createNanoEvents<CreditCardHandlerEvents>();\r\n\r\n on<E extends keyof CreditCardHandlerEvents>(\r\n event: E,\r\n callback: CreditCardHandlerEvents[E],\r\n ): Unsubscribe {\r\n return this.emitter.on(event, callback);\r\n }\r\n\r\n mockPayload: braintree.HostedFieldsTokenizePayload;\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-creditcard-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-creditcard-handler.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gDAAgD,CAAC;AACxF,OAAO,EAAE,8BAA8B,EAAE,MAAM,uDAAuD,CAAC;AAKvG,OAAO,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAE3D,MAAM,OAAO,qBAAqB;IAW1B,oBAAoB;;YACxB,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;KAAA;IAED,eAAe,CAAC,MAAyB;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,iBAAiB,CAAC,MAAyB;QACzC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB,CAAC,OAA4B;QAC3C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,gBAAgB;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED,YAAY,OAAgE;;QA9B5E,aAAQ,GAAG,IAAI,iBAAiB,CAAyB;YACvD,SAAS,EAAE,GAAoC,EAAE,CAC/C,IAAI,OAAO,CAAyB,OAAO,CAAC,EAAE;gBAC5C,MAAM,MAAM,GAAG,IAAI,sBAAsB,CAAC;oBACxC,8BAA8B,EAAE,IAAI,CAAC,WAAW;iBACjD,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC;SACL,CAAC,CAAC;QA0BK,YAAO,GAAG,gBAAgB,EAA2B,CAAC;QAH5D,IAAI,CAAC,WAAW,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,mCAAI,8BAA8B,CAAC;IAC5E,CAAC;IAID,EAAE,CACA,KAAQ,EACR,QAAoC;QAEpC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CAGF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { HostedFieldName } from '../../../../src/braintree-manager/payment-providers/credit-card/hosted-field-container';\nimport { MockHostedFieldsClient } from '../../payment-clients/mock-hostedfields-client';\nimport { mockHostedFieldTokenizePayload } from '../../payment-clients/mock-hostedfieldtokenizepayload';\nimport {\n CreditCardHandlerEvents,\n CreditCardHandlerInterface,\n} from '../../../../src/braintree-manager/payment-providers/credit-card/credit-card-interface';\nimport { createNanoEvents, Unsubscribe } from 'nanoevents';\n\nexport class MockCreditCardHandler implements CreditCardHandlerInterface {\n instance = new PromisedSingleton<braintree.HostedFields>({\n generator: (): Promise<braintree.HostedFields> =>\n new Promise<braintree.HostedFields>(resolve => {\n const client = new MockHostedFieldsClient({\n mockHostedFieldTokenizePayload: this.mockPayload,\n });\n resolve(client);\n }),\n });\n\n async tokenizeHostedFields(): Promise<braintree.HostedFieldsTokenizePayload | undefined> {\n return this.mockPayload;\n }\n\n markFieldErrors(fields: HostedFieldName[]): void {\n throw new Error('Method not implemented.');\n }\n\n removeFieldErrors(fields: HostedFieldName[]): void {\n throw new Error('Method not implemented.');\n }\n\n showErrorMessage(message?: string | undefined): void {\n throw new Error('Method not implemented.');\n }\n\n hideErrorMessage(): void {\n throw new Error('Method not implemented.');\n }\n\n constructor(options?: { mockPayload: braintree.HostedFieldsTokenizePayload }) {\n this.mockPayload = options?.mockPayload ?? mockHostedFieldTokenizePayload;\n }\n\n private emitter = createNanoEvents<CreditCardHandlerEvents>();\n\n on<E extends keyof CreditCardHandlerEvents>(\n event: E,\n callback: CreditCardHandlerEvents[E],\n ): Unsubscribe {\n return this.emitter.on(event, callback);\n }\n\n mockPayload: braintree.HostedFieldsTokenizePayload;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-googlepay-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-googlepay-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAGpF,MAAM,OAAO,oBAAoB;IAAjC;QACE,mBAAc,GAAuC,IAAI,oBAAoB,EAAE,CAAC;QAEhF,aAAQ,GAAG,IAAI,iBAAiB,CAA0B;YACxD,SAAS,EAAE,GAAqC,EAAE,CAChD,IAAI,OAAO,CAA0B,OAAO,CAAC,EAAE;gBAC7C,OAAO,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC;SACL,CAAC,CAAC;IAKL,CAAC;IAHC,kBAAkB;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { MockGooglePaymentClient } from '../../payment-clients/mock-googlepay-client';\r\nimport { MockGooglePayLibrary } from '../../payment-clients/mock-googlepay-library';\r\nimport { GooglePayHandlerInterface } from '../../../../src/braintree-manager/payment-providers/google-pay-interface';\r\n\r\nexport class MockGooglePayHandler implements GooglePayHandlerInterface {\r\n paymentsClient: google.payments.api.PaymentsClient = new MockGooglePayLibrary();\r\n\r\n instance = new PromisedSingleton<braintree.GooglePayment>({\r\n generator: (): Promise<braintree.GooglePayment> =>\r\n new Promise<braintree.GooglePayment>(resolve => {\r\n resolve(new MockGooglePaymentClient());\r\n }),\r\n });\r\n\r\n isBrowserSupported(): Promise<boolean> {\r\n throw new Error('Method not implemented.');\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-googlepay-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-googlepay-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AAGpF,MAAM,OAAO,oBAAoB;IAAjC;QACE,mBAAc,GAAuC,IAAI,oBAAoB,EAAE,CAAC;QAEhF,aAAQ,GAAG,IAAI,iBAAiB,CAA0B;YACxD,SAAS,EAAE,GAAqC,EAAE,CAChD,IAAI,OAAO,CAA0B,OAAO,CAAC,EAAE;gBAC7C,OAAO,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC;SACL,CAAC,CAAC;IAKL,CAAC;IAHC,kBAAkB;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { MockGooglePaymentClient } from '../../payment-clients/mock-googlepay-client';\nimport { MockGooglePayLibrary } from '../../payment-clients/mock-googlepay-library';\nimport { GooglePayHandlerInterface } from '../../../../src/braintree-manager/payment-providers/google-pay-interface';\n\nexport class MockGooglePayHandler implements GooglePayHandlerInterface {\n paymentsClient: google.payments.api.PaymentsClient = new MockGooglePayLibrary();\n\n instance = new PromisedSingleton<braintree.GooglePayment>({\n generator: (): Promise<braintree.GooglePayment> =>\n new Promise<braintree.GooglePayment>(resolve => {\n resolve(new MockGooglePaymentClient());\n }),\n });\n\n isBrowserSupported(): Promise<boolean> {\n throw new Error('Method not implemented.');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-paypal-button-datasource-delegate.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.ts"],"names":[],"mappings":";AAKA,MAAM,OAAO,kCAAkC;IAA/C;QACE,0BAAqB,GAIjB;YACF,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,6BAAwB,GAIpB;YACF,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,4BAAuB,GAInB;YACF,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,wBAAmB,GAIf;YACF,MAAM,EAAE,KAAK;SACd,CAAC;IA8CJ,CAAC;IA5CO,oBAAoB,CACxB,UAA2C,EAC3C,OAAe;;YAEf,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,UAAU,CAAC;YACnD,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/C,CAAC;KAAA;IAEK,uBAAuB,CAC3B,UAA2C,EAC3C,OAA+B;;YAE/B,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,UAAU,GAAG,UAAU,CAAC;YACtD,IAAI,CAAC,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,CAAC;KAAA;IAEK,sBAAsB,CAC1B,UAA2C,EAC3C,OAA+B;;YAE/B,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,UAAU,GAAG,UAAU,CAAC;YACtD,IAAI,CAAC,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,CAAC;KAAA;IAEK,sBAAsB,CAC1B,UAA2C,EAC3C,IAAY;;YAEZ,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,IAAI,CAAC;YAC3C,IAAI,CAAC,uBAAuB,CAAC,UAAU,GAAG,UAAU,CAAC;YACrD,IAAI,CAAC,uBAAuB,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,CAAC;KAAA;IAEK,kBAAkB,CACtB,UAA2C,EAC3C,KAAa;;YAEb,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,UAAU,CAAC;YACjD,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;QACzC,CAAC;KAAA;CACF","sourcesContent":["import {\r\n PayPalButtonDataSourceDelegate,\r\n PayPalButtonDataSourceInterface,\r\n} from '../../../../src/braintree-manager/payment-providers/paypal/paypal-button-datasource';\r\n\r\nexport class MockPayPalButtonDataSourceDelegate implements PayPalButtonDataSourceDelegate {\r\n paymentStartedResults: {\r\n called: boolean;\r\n datasource?: PayPalButtonDataSourceInterface;\r\n options?: object;\r\n } = {\r\n called: false,\r\n };\r\n\r\n paymentAuthorizedResults: {\r\n called: boolean;\r\n datasource?: PayPalButtonDataSourceInterface;\r\n payload?: paypal.TokenizePayload;\r\n } = {\r\n called: false,\r\n };\r\n\r\n paymentCancelledResults: {\r\n called: boolean;\r\n datasource?: PayPalButtonDataSourceInterface;\r\n data?: object;\r\n } = {\r\n called: false,\r\n };\r\n\r\n paymentErrorResults: {\r\n called: boolean;\r\n datasource?: PayPalButtonDataSourceInterface;\r\n error?: string;\r\n } = {\r\n called: false,\r\n };\r\n\r\n async payPalPaymentStarted(\r\n dataSource: PayPalButtonDataSourceInterface,\r\n options: object,\r\n ): Promise<void> {\r\n this.paymentStartedResults.called = true;\r\n this.paymentStartedResults.datasource = dataSource;\r\n this.paymentStartedResults.options = options;\r\n }\r\n\r\n async payPalPaymentAuthorized(\r\n dataSource: PayPalButtonDataSourceInterface,\r\n payload: paypal.TokenizePayload,\r\n ): Promise<void> {\r\n this.paymentAuthorizedResults.called = true;\r\n this.paymentAuthorizedResults.datasource = dataSource;\r\n this.paymentAuthorizedResults.payload = payload;\r\n }\r\n\r\n async payPalPaymentConfirmed(\r\n dataSource: PayPalButtonDataSourceInterface,\r\n payload: paypal.TokenizePayload,\r\n ): Promise<void> {\r\n this.paymentAuthorizedResults.called = true;\r\n this.paymentAuthorizedResults.datasource = dataSource;\r\n this.paymentAuthorizedResults.payload = payload;\r\n }\r\n\r\n async payPalPaymentCancelled(\r\n dataSource: PayPalButtonDataSourceInterface,\r\n data: object,\r\n ): Promise<void> {\r\n this.paymentCancelledResults.called = true;\r\n this.paymentCancelledResults.datasource = dataSource;\r\n this.paymentCancelledResults.data = data;\r\n }\r\n\r\n async payPalPaymentError(\r\n dataSource: PayPalButtonDataSourceInterface,\r\n error: string,\r\n ): Promise<void> {\r\n this.paymentErrorResults.called = true;\r\n this.paymentErrorResults.datasource = dataSource;\r\n this.paymentErrorResults.error = error;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-paypal-button-datasource-delegate.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource-delegate.ts"],"names":[],"mappings":";AAKA,MAAM,OAAO,kCAAkC;IAA/C;QACE,0BAAqB,GAIjB;YACF,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,6BAAwB,GAIpB;YACF,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,4BAAuB,GAInB;YACF,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,wBAAmB,GAIf;YACF,MAAM,EAAE,KAAK;SACd,CAAC;IA8CJ,CAAC;IA5CO,oBAAoB,CACxB,UAA2C,EAC3C,OAAe;;YAEf,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,qBAAqB,CAAC,UAAU,GAAG,UAAU,CAAC;YACnD,IAAI,CAAC,qBAAqB,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/C,CAAC;KAAA;IAEK,uBAAuB,CAC3B,UAA2C,EAC3C,OAA+B;;YAE/B,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,UAAU,GAAG,UAAU,CAAC;YACtD,IAAI,CAAC,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,CAAC;KAAA;IAEK,sBAAsB,CAC1B,UAA2C,EAC3C,OAA+B;;YAE/B,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,IAAI,CAAC;YAC5C,IAAI,CAAC,wBAAwB,CAAC,UAAU,GAAG,UAAU,CAAC;YACtD,IAAI,CAAC,wBAAwB,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,CAAC;KAAA;IAEK,sBAAsB,CAC1B,UAA2C,EAC3C,IAAY;;YAEZ,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,IAAI,CAAC;YAC3C,IAAI,CAAC,uBAAuB,CAAC,UAAU,GAAG,UAAU,CAAC;YACrD,IAAI,CAAC,uBAAuB,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3C,CAAC;KAAA;IAEK,kBAAkB,CACtB,UAA2C,EAC3C,KAAa;;YAEb,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,UAAU,CAAC;YACjD,IAAI,CAAC,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;QACzC,CAAC;KAAA;CACF","sourcesContent":["import {\n PayPalButtonDataSourceDelegate,\n PayPalButtonDataSourceInterface,\n} from '../../../../src/braintree-manager/payment-providers/paypal/paypal-button-datasource';\n\nexport class MockPayPalButtonDataSourceDelegate implements PayPalButtonDataSourceDelegate {\n paymentStartedResults: {\n called: boolean;\n datasource?: PayPalButtonDataSourceInterface;\n options?: object;\n } = {\n called: false,\n };\n\n paymentAuthorizedResults: {\n called: boolean;\n datasource?: PayPalButtonDataSourceInterface;\n payload?: paypal.TokenizePayload;\n } = {\n called: false,\n };\n\n paymentCancelledResults: {\n called: boolean;\n datasource?: PayPalButtonDataSourceInterface;\n data?: object;\n } = {\n called: false,\n };\n\n paymentErrorResults: {\n called: boolean;\n datasource?: PayPalButtonDataSourceInterface;\n error?: string;\n } = {\n called: false,\n };\n\n async payPalPaymentStarted(\n dataSource: PayPalButtonDataSourceInterface,\n options: object,\n ): Promise<void> {\n this.paymentStartedResults.called = true;\n this.paymentStartedResults.datasource = dataSource;\n this.paymentStartedResults.options = options;\n }\n\n async payPalPaymentAuthorized(\n dataSource: PayPalButtonDataSourceInterface,\n payload: paypal.TokenizePayload,\n ): Promise<void> {\n this.paymentAuthorizedResults.called = true;\n this.paymentAuthorizedResults.datasource = dataSource;\n this.paymentAuthorizedResults.payload = payload;\n }\n\n async payPalPaymentConfirmed(\n dataSource: PayPalButtonDataSourceInterface,\n payload: paypal.TokenizePayload,\n ): Promise<void> {\n this.paymentAuthorizedResults.called = true;\n this.paymentAuthorizedResults.datasource = dataSource;\n this.paymentAuthorizedResults.payload = payload;\n }\n\n async payPalPaymentCancelled(\n dataSource: PayPalButtonDataSourceInterface,\n data: object,\n ): Promise<void> {\n this.paymentCancelledResults.called = true;\n this.paymentCancelledResults.datasource = dataSource;\n this.paymentCancelledResults.data = data;\n }\n\n async payPalPaymentError(\n dataSource: PayPalButtonDataSourceInterface,\n error: string,\n ): Promise<void> {\n this.paymentErrorResults.called = true;\n this.paymentErrorResults.datasource = dataSource;\n this.paymentErrorResults.error = error;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-paypal-button-datasource.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAU/F,MAAM,OAAO,0BAA0B;IAAvC;QAEE,iBAAY,GAAwB,IAAI,mBAAmB,CAAC;YAC1D,YAAY,EAAE,YAAY,CAAC,OAAO;YAClC,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IAmBL,CAAC;IAlBO,OAAO;;;YACX,MAAA,IAAI,CAAC,QAAQ,0CAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IACK,WAAW;;;YACf,MAAA,IAAI,CAAC,QAAQ,0CAAE,uBAAuB,CAAC,IAAI,EAAE;gBAC3C,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;aACvF,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IACD,QAAQ,CAAC,IAAsB;;QAC7B,MAAA,IAAI,CAAC,QAAQ,0CAAE,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,KAAa;;QACnB,MAAA,IAAI,CAAC,QAAQ,0CAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;CACF","sourcesContent":["import { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';\r\nimport {\r\n TokenizePayload,\r\n CancellationData,\r\n} from '../../../../src/@types/paypal-checkout-components';\r\nimport {\r\n PayPalButtonDataSourceDelegate,\r\n PayPalButtonDataSourceInterface,\r\n} from '../../../../src/braintree-manager/payment-providers/paypal/paypal-button-datasource';\r\n\r\nexport class MockPayPalButtonDataSource implements PayPalButtonDataSourceInterface {\r\n delegate?: PayPalButtonDataSourceDelegate | undefined;\r\n donationInfo: DonationPaymentInfo = new DonationPaymentInfo({\r\n donationType: DonationType.OneTime,\r\n amount: 5,\r\n coverFees: false,\r\n });\r\n async payment(): Promise<string> {\r\n this.delegate?.payPalPaymentStarted(this, {});\r\n return 'foo';\r\n }\r\n async onAuthorize(): Promise<TokenizePayload | undefined> {\r\n this.delegate?.payPalPaymentAuthorized(this, {\r\n nonce: 'foo',\r\n type: 'bar',\r\n details: { email: 'foo@bar.com', payerId: '1234', firstName: 'Joe', lastName: 'Boop' },\r\n });\r\n return undefined;\r\n }\r\n onCancel(data: CancellationData): void {\r\n this.delegate?.payPalPaymentCancelled(this, data);\r\n }\r\n onError(error: string): void {\r\n this.delegate?.payPalPaymentError(this, error);\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-paypal-button-datasource.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-paypal-button-datasource.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAU/F,MAAM,OAAO,0BAA0B;IAAvC;QAEE,iBAAY,GAAwB,IAAI,mBAAmB,CAAC;YAC1D,YAAY,EAAE,YAAY,CAAC,OAAO;YAClC,MAAM,EAAE,CAAC;YACT,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IAmBL,CAAC;IAlBO,OAAO;;;YACX,MAAA,IAAI,CAAC,QAAQ,0CAAE,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;KAAA;IACK,WAAW;;;YACf,MAAA,IAAI,CAAC,QAAQ,0CAAE,uBAAuB,CAAC,IAAI,EAAE;gBAC3C,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE;aACvF,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IACD,QAAQ,CAAC,IAAsB;;QAC7B,MAAA,IAAI,CAAC,QAAQ,0CAAE,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,CAAC,KAAa;;QACnB,MAAA,IAAI,CAAC,QAAQ,0CAAE,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;CACF","sourcesContent":["import { DonationPaymentInfo, DonationType } from '@internetarchive/donation-form-data-models';\nimport {\n TokenizePayload,\n CancellationData,\n} from '../../../../src/@types/paypal-checkout-components';\nimport {\n PayPalButtonDataSourceDelegate,\n PayPalButtonDataSourceInterface,\n} from '../../../../src/braintree-manager/payment-providers/paypal/paypal-button-datasource';\n\nexport class MockPayPalButtonDataSource implements PayPalButtonDataSourceInterface {\n delegate?: PayPalButtonDataSourceDelegate | undefined;\n donationInfo: DonationPaymentInfo = new DonationPaymentInfo({\n donationType: DonationType.OneTime,\n amount: 5,\n coverFees: false,\n });\n async payment(): Promise<string> {\n this.delegate?.payPalPaymentStarted(this, {});\n return 'foo';\n }\n async onAuthorize(): Promise<TokenizePayload | undefined> {\n this.delegate?.payPalPaymentAuthorized(this, {\n nonce: 'foo',\n type: 'bar',\n details: { email: 'foo@bar.com', payerId: '1234', firstName: 'Joe', lastName: 'Boop' },\n });\n return undefined;\n }\n onCancel(data: CancellationData): void {\n this.delegate?.payPalPaymentCancelled(this, data);\n }\n onError(error: string): void {\n this.delegate?.payPalPaymentError(this, error);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-paypal-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-paypal-handler.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAK5E,MAAM,OAAO,iBAAiB;IAA9B;QACE,aAAQ,GAAG,IAAI,iBAAiB,CAA2B;YACzD,SAAS,EAAE,GAAsC,EAAE,CACjD,IAAI,OAAO,CAA2B,OAAO,CAAC,EAAE;gBAC9C,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC;SACL,CAAC,CAAC;IASL,CAAC;IAPC,kBAAkB,CAAC,MAIlB;QACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { MockPayPalClient } from '../../payment-clients/mock-paypal-client';\r\nimport { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';\r\nimport { PayPalButtonDataSourceInterface } from '../../../../src/braintree-manager/payment-providers/paypal/paypal-button-datasource';\r\nimport { PayPalHandlerInterface } from '../../../../src/braintree-manager/payment-providers/paypal/paypal-interface';\r\n\r\nexport class MockPayPalHandler implements PayPalHandlerInterface {\r\n instance = new PromisedSingleton<braintree.PayPalCheckout>({\r\n generator: (): Promise<braintree.PayPalCheckout> =>\r\n new Promise<braintree.PayPalCheckout>(resolve => {\r\n resolve(new MockPayPalClient());\r\n }),\r\n });\r\n\r\n renderPayPalButton(params: {\r\n selector: string;\r\n style: paypal.ButtonStyle;\r\n donationInfo: DonationPaymentInfo;\r\n }): Promise<PayPalButtonDataSourceInterface | undefined> {\r\n throw new Error('Method not implemented.');\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-paypal-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-paypal-handler.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAK5E,MAAM,OAAO,iBAAiB;IAA9B;QACE,aAAQ,GAAG,IAAI,iBAAiB,CAA2B;YACzD,SAAS,EAAE,GAAsC,EAAE,CACjD,IAAI,OAAO,CAA2B,OAAO,CAAC,EAAE;gBAC9C,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC;SACL,CAAC,CAAC;IASL,CAAC;IAPC,kBAAkB,CAAC,MAIlB;QACC,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { MockPayPalClient } from '../../payment-clients/mock-paypal-client';\nimport { DonationPaymentInfo } from '@internetarchive/donation-form-data-models';\nimport { PayPalButtonDataSourceInterface } from '../../../../src/braintree-manager/payment-providers/paypal/paypal-button-datasource';\nimport { PayPalHandlerInterface } from '../../../../src/braintree-manager/payment-providers/paypal/paypal-interface';\n\nexport class MockPayPalHandler implements PayPalHandlerInterface {\n instance = new PromisedSingleton<braintree.PayPalCheckout>({\n generator: (): Promise<braintree.PayPalCheckout> =>\n new Promise<braintree.PayPalCheckout>(resolve => {\n resolve(new MockPayPalClient());\n }),\n });\n\n renderPayPalButton(params: {\n selector: string;\n style: paypal.ButtonStyle;\n donationInfo: DonationPaymentInfo;\n }): Promise<PayPalButtonDataSourceInterface | undefined> {\n throw new Error('Method not implemented.');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-venmo-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-venmo-handler.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAG1E,MAAM,OAAO,gBAAgB;IAA7B;QACE,aAAQ,GAAG,IAAI,iBAAiB,CAAkB;YAChD,SAAS,EAAE,GAA6B,EAAE,CACxC,IAAI,OAAO,CAAkB,OAAO,CAAC,EAAE;gBACrC,OAAO,CACL,IAAI,eAAe,CAAC;oBAClB,kBAAkB,EAAE,IAAI;iBACzB,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;SACL,CAAC,CAAC;IAOL,CAAC;IANO,kBAAkB;;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IACD,YAAY;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { MockVenmoClient } from '../../payment-clients/mock-venmo-client';\r\nimport { VenmoHandlerInterface } from '../../../../src/braintree-manager/payment-providers/venmo-interface';\r\n\r\nexport class MockVenmoHandler implements VenmoHandlerInterface {\r\n instance = new PromisedSingleton<braintree.Venmo>({\r\n generator: (): Promise<braintree.Venmo> =>\r\n new Promise<braintree.Venmo>(resolve => {\r\n resolve(\r\n new MockVenmoClient({\r\n isBrowserSupported: true,\r\n }),\r\n );\r\n }),\r\n });\r\n async isBrowserSupported(): Promise<boolean> {\r\n return true;\r\n }\r\n startPayment(): Promise<braintree.VenmoTokenizePayload> {\r\n throw new Error('Method not implemented.');\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-venmo-handler.js","sourceRoot":"","sources":["../../../../../test/mocks/payment-providers/individual-providers/mock-venmo-handler.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAG1E,MAAM,OAAO,gBAAgB;IAA7B;QACE,aAAQ,GAAG,IAAI,iBAAiB,CAAkB;YAChD,SAAS,EAAE,GAA6B,EAAE,CACxC,IAAI,OAAO,CAAkB,OAAO,CAAC,EAAE;gBACrC,OAAO,CACL,IAAI,eAAe,CAAC;oBAClB,kBAAkB,EAAE,IAAI;iBACzB,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;SACL,CAAC,CAAC;IAOL,CAAC;IANO,kBAAkB;;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;KAAA;IACD,YAAY;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;CACF","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { MockVenmoClient } from '../../payment-clients/mock-venmo-client';\nimport { VenmoHandlerInterface } from '../../../../src/braintree-manager/payment-providers/venmo-interface';\n\nexport class MockVenmoHandler implements VenmoHandlerInterface {\n instance = new PromisedSingleton<braintree.Venmo>({\n generator: (): Promise<braintree.Venmo> =>\n new Promise<braintree.Venmo>(resolve => {\n resolve(\n new MockVenmoClient({\n isBrowserSupported: true,\n }),\n );\n }),\n });\n async isBrowserSupported(): Promise<boolean> {\n return true;\n }\n startPayment(): Promise<braintree.VenmoTokenizePayload> {\n throw new Error('Method not implemented.');\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-payment-providers.js","sourceRoot":"","sources":["../../../../test/mocks/payment-providers/mock-payment-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AAUpG,OAAO,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAE3D,MAAM,OAAO,oBAAoB;IAwC/B,YAAY,OAEX;;QAzCD,sBAAiB,GAAG,IAAI,iBAAiB,CAA6B;YACpE,SAAS,EAAE,GAAwC,EAAE,CACnD,IAAI,OAAO,CAA6B,OAAO,CAAC,EAAE;gBAChD,OAAO,CACL,IAAI,qBAAqB,CAAC;oBACxB,WAAW,EAAE,IAAI,CAAC,8BAA8B;iBACjD,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,oBAAe,GAAG,IAAI,iBAAiB,CAA2B;YAChE,SAAS,EAAE,GAAsC,EAAE,CACjD,IAAI,OAAO,CAA2B,OAAO,CAAC,EAAE;gBAC9C,OAAO,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;YACrC,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,kBAAa,GAAG,IAAI,iBAAiB,CAAyB;YAC5D,SAAS,EAAE,GAAoC,EAAE,CAC/C,IAAI,OAAO,CAAyB,OAAO,CAAC,EAAE;gBAC5C,OAAO,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,qBAAgB,GAAG,IAAI,iBAAiB,CAA4B;YAClE,SAAS,EAAE,GAAuC,EAAE,CAClD,IAAI,OAAO,CAA4B,OAAO,CAAC,EAAE;gBAC/C,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,iBAAY,GAAG,IAAI,iBAAiB,CAAwB;YAC1D,SAAS,EAAE,GAAmC,EAAE,CAC9C,IAAI,OAAO,CAAwB,OAAO,CAAC,EAAE;gBAC3C,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC;SACL,CAAC,CAAC;QASK,YAAO,GAAG,gBAAgB,EAA0B,CAAC;QAJ3D,IAAI,CAAC,8BAA8B;YACjC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,8BAA8B,mCAAI,8BAA8B,CAAC;IAC9E,CAAC;IAID,EAAE,CACA,KAAQ,EACR,QAAmC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CAGF","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\r\nimport { MockVenmoHandler } from './individual-providers/mock-venmo-handler';\r\nimport { MockCreditCardHandler } from './individual-providers/mock-creditcard-handler';\r\nimport { MockApplePayHandler } from './individual-providers/mock-applepay-handler';\r\nimport { MockPayPalHandler } from './individual-providers/mock-paypal-handler';\r\nimport { MockGooglePayHandler } from './individual-providers/mock-googlepay-handler';\r\nimport { mockHostedFieldTokenizePayload } from '../payment-clients/mock-hostedfieldtokenizepayload';\r\nimport {\r\n PaymentProvidersEvents,\r\n PaymentProvidersInterface,\r\n} from '../../../src/braintree-manager/payment-providers-interface';\r\nimport { CreditCardHandlerInterface } from '../../../src/braintree-manager/payment-providers/credit-card/credit-card-interface';\r\nimport { ApplePayHandlerInterface } from '../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-interface';\r\nimport { PayPalHandlerInterface } from '../../../src/braintree-manager/payment-providers/paypal/paypal-interface';\r\nimport { GooglePayHandlerInterface } from '../../../src/braintree-manager/payment-providers/google-pay-interface';\r\nimport { VenmoHandlerInterface } from '../../../src/braintree-manager/payment-providers/venmo-interface';\r\nimport { createNanoEvents, Unsubscribe } from 'nanoevents';\r\n\r\nexport class MockPaymentProviders implements PaymentProvidersInterface {\r\n creditCardHandler = new PromisedSingleton<CreditCardHandlerInterface>({\r\n generator: (): Promise<CreditCardHandlerInterface> =>\r\n new Promise<CreditCardHandlerInterface>(resolve => {\r\n resolve(\r\n new MockCreditCardHandler({\r\n mockPayload: this.mockHostedFieldTokenizePayload,\r\n }),\r\n );\r\n }),\r\n });\r\n\r\n applePayHandler = new PromisedSingleton<ApplePayHandlerInterface>({\r\n generator: (): Promise<ApplePayHandlerInterface> =>\r\n new Promise<ApplePayHandlerInterface>(resolve => {\r\n resolve(new MockApplePayHandler());\r\n }),\r\n });\r\n\r\n paypalHandler = new PromisedSingleton<PayPalHandlerInterface>({\r\n generator: (): Promise<PayPalHandlerInterface> =>\r\n new Promise<PayPalHandlerInterface>(resolve => {\r\n resolve(new MockPayPalHandler());\r\n }),\r\n });\r\n\r\n googlePayHandler = new PromisedSingleton<GooglePayHandlerInterface>({\r\n generator: (): Promise<GooglePayHandlerInterface> =>\r\n new Promise<GooglePayHandlerInterface>(resolve => {\r\n resolve(new MockGooglePayHandler());\r\n }),\r\n });\r\n\r\n venmoHandler = new PromisedSingleton<VenmoHandlerInterface>({\r\n generator: (): Promise<VenmoHandlerInterface> =>\r\n new Promise<VenmoHandlerInterface>(resolve => {\r\n resolve(new MockVenmoHandler());\r\n }),\r\n });\r\n\r\n constructor(options?: {\r\n mockHostedFieldTokenizePayload?: braintree.HostedFieldsTokenizePayload;\r\n }) {\r\n this.mockHostedFieldTokenizePayload =\r\n options?.mockHostedFieldTokenizePayload ?? mockHostedFieldTokenizePayload;\r\n }\r\n\r\n private emitter = createNanoEvents<PaymentProvidersEvents>();\r\n\r\n on<E extends keyof PaymentProvidersEvents>(\r\n event: E,\r\n callback: PaymentProvidersEvents[E],\r\n ): Unsubscribe {\r\n return this.emitter.on(event, callback);\r\n }\r\n\r\n mockHostedFieldTokenizePayload: braintree.HostedFieldsTokenizePayload;\r\n}\r\n"]}
1
+ {"version":3,"file":"mock-payment-providers.js","sourceRoot":"","sources":["../../../../test/mocks/payment-providers/mock-payment-providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,8BAA8B,EAAE,MAAM,oDAAoD,CAAC;AAUpG,OAAO,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAE3D,MAAM,OAAO,oBAAoB;IAwC/B,YAAY,OAEX;;QAzCD,sBAAiB,GAAG,IAAI,iBAAiB,CAA6B;YACpE,SAAS,EAAE,GAAwC,EAAE,CACnD,IAAI,OAAO,CAA6B,OAAO,CAAC,EAAE;gBAChD,OAAO,CACL,IAAI,qBAAqB,CAAC;oBACxB,WAAW,EAAE,IAAI,CAAC,8BAA8B;iBACjD,CAAC,CACH,CAAC;YACJ,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,oBAAe,GAAG,IAAI,iBAAiB,CAA2B;YAChE,SAAS,EAAE,GAAsC,EAAE,CACjD,IAAI,OAAO,CAA2B,OAAO,CAAC,EAAE;gBAC9C,OAAO,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;YACrC,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,kBAAa,GAAG,IAAI,iBAAiB,CAAyB;YAC5D,SAAS,EAAE,GAAoC,EAAE,CAC/C,IAAI,OAAO,CAAyB,OAAO,CAAC,EAAE;gBAC5C,OAAO,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,qBAAgB,GAAG,IAAI,iBAAiB,CAA4B;YAClE,SAAS,EAAE,GAAuC,EAAE,CAClD,IAAI,OAAO,CAA4B,OAAO,CAAC,EAAE;gBAC/C,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,iBAAY,GAAG,IAAI,iBAAiB,CAAwB;YAC1D,SAAS,EAAE,GAAmC,EAAE,CAC9C,IAAI,OAAO,CAAwB,OAAO,CAAC,EAAE;gBAC3C,OAAO,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;YAClC,CAAC,CAAC;SACL,CAAC,CAAC;QASK,YAAO,GAAG,gBAAgB,EAA0B,CAAC;QAJ3D,IAAI,CAAC,8BAA8B;YACjC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,8BAA8B,mCAAI,8BAA8B,CAAC;IAC9E,CAAC;IAID,EAAE,CACA,KAAQ,EACR,QAAmC;QAEnC,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CAGF","sourcesContent":["import { PromisedSingleton } from '@internetarchive/promised-singleton';\nimport { MockVenmoHandler } from './individual-providers/mock-venmo-handler';\nimport { MockCreditCardHandler } from './individual-providers/mock-creditcard-handler';\nimport { MockApplePayHandler } from './individual-providers/mock-applepay-handler';\nimport { MockPayPalHandler } from './individual-providers/mock-paypal-handler';\nimport { MockGooglePayHandler } from './individual-providers/mock-googlepay-handler';\nimport { mockHostedFieldTokenizePayload } from '../payment-clients/mock-hostedfieldtokenizepayload';\nimport {\n PaymentProvidersEvents,\n PaymentProvidersInterface,\n} from '../../../src/braintree-manager/payment-providers-interface';\nimport { CreditCardHandlerInterface } from '../../../src/braintree-manager/payment-providers/credit-card/credit-card-interface';\nimport { ApplePayHandlerInterface } from '../../../src/braintree-manager/payment-providers/apple-pay/apple-pay-interface';\nimport { PayPalHandlerInterface } from '../../../src/braintree-manager/payment-providers/paypal/paypal-interface';\nimport { GooglePayHandlerInterface } from '../../../src/braintree-manager/payment-providers/google-pay-interface';\nimport { VenmoHandlerInterface } from '../../../src/braintree-manager/payment-providers/venmo-interface';\nimport { createNanoEvents, Unsubscribe } from 'nanoevents';\n\nexport class MockPaymentProviders implements PaymentProvidersInterface {\n creditCardHandler = new PromisedSingleton<CreditCardHandlerInterface>({\n generator: (): Promise<CreditCardHandlerInterface> =>\n new Promise<CreditCardHandlerInterface>(resolve => {\n resolve(\n new MockCreditCardHandler({\n mockPayload: this.mockHostedFieldTokenizePayload,\n }),\n );\n }),\n });\n\n applePayHandler = new PromisedSingleton<ApplePayHandlerInterface>({\n generator: (): Promise<ApplePayHandlerInterface> =>\n new Promise<ApplePayHandlerInterface>(resolve => {\n resolve(new MockApplePayHandler());\n }),\n });\n\n paypalHandler = new PromisedSingleton<PayPalHandlerInterface>({\n generator: (): Promise<PayPalHandlerInterface> =>\n new Promise<PayPalHandlerInterface>(resolve => {\n resolve(new MockPayPalHandler());\n }),\n });\n\n googlePayHandler = new PromisedSingleton<GooglePayHandlerInterface>({\n generator: (): Promise<GooglePayHandlerInterface> =>\n new Promise<GooglePayHandlerInterface>(resolve => {\n resolve(new MockGooglePayHandler());\n }),\n });\n\n venmoHandler = new PromisedSingleton<VenmoHandlerInterface>({\n generator: (): Promise<VenmoHandlerInterface> =>\n new Promise<VenmoHandlerInterface>(resolve => {\n resolve(new MockVenmoHandler());\n }),\n });\n\n constructor(options?: {\n mockHostedFieldTokenizePayload?: braintree.HostedFieldsTokenizePayload;\n }) {\n this.mockHostedFieldTokenizePayload =\n options?.mockHostedFieldTokenizePayload ?? mockHostedFieldTokenizePayload;\n }\n\n private emitter = createNanoEvents<PaymentProvidersEvents>();\n\n on<E extends keyof PaymentProvidersEvents>(\n event: E,\n callback: PaymentProvidersEvents[E],\n ): Unsubscribe {\n return this.emitter.on(event, callback);\n }\n\n mockHostedFieldTokenizePayload: braintree.HostedFieldsTokenizePayload;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"braintree-manager.test.js","sourceRoot":"","sources":["../../../test/tests/braintree-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\r\n\r\nimport { BraintreeManager } from '../../src/braintree-manager/braintree-manager';\r\nimport { HostingEnvironment } from '../../src/braintree-manager/braintree-interfaces';\r\nimport { MockPaymentClients } from '../mocks/mock-payment-clients';\r\nimport { MockEndpointManager } from '../mocks/mock-endpoint-manager';\r\nimport { mockHostedFieldConfig } from '../mocks/mock-hosted-fields-config';\r\nimport { PaymentProvider, DonationType } 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 { MockDeviceDataCollector } from '../mocks/payment-clients/mock-data-collector';\r\nimport { mockSuccessResponse } from '../mocks/models/mock-success-response';\r\nimport { MockDonationInfo } from '../mocks/mock-donation-info';\r\n\r\ndescribe('Braintree Manager', () => {\r\n it('can be initialized', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n });\r\n\r\n expect(braintreeManager).to.not.equal(undefined);\r\n });\r\n\r\n it('collects device data on startup and submits it', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n });\r\n\r\n await braintreeManager.startup();\r\n\r\n await braintreeManager.submitDonation({\r\n nonce: 'boop',\r\n paymentProvider: PaymentProvider.CreditCard,\r\n donationInfo: new MockDonationInfo(),\r\n billingInfo: mockBillingInfo,\r\n customerInfo: mockCustomerInfo,\r\n });\r\n\r\n expect(endpointManager.requestSubmitted?.deviceData).to.equal(\r\n MockDeviceDataCollector.mockDeviceData,\r\n );\r\n });\r\n\r\n it('does not collect device data if startup not called', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n });\r\n\r\n await braintreeManager.submitDonation({\r\n nonce: 'boop',\r\n paymentProvider: PaymentProvider.CreditCard,\r\n donationInfo: new MockDonationInfo(),\r\n billingInfo: mockBillingInfo,\r\n customerInfo: mockCustomerInfo,\r\n });\r\n\r\n expect(endpointManager.requestSubmitted?.deviceData).to.equal(undefined);\r\n });\r\n\r\n it('can properly set referrer, origin, and logged in user and submits them to the endpoint', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n });\r\n\r\n await braintreeManager.submitDonation({\r\n nonce: 'boop',\r\n paymentProvider: PaymentProvider.CreditCard,\r\n donationInfo: new MockDonationInfo(),\r\n billingInfo: mockBillingInfo,\r\n customerInfo: mockCustomerInfo,\r\n });\r\n\r\n // verify they're empty\r\n expect(endpointManager.requestSubmitted?.customFields.referrer).to.equal(undefined);\r\n expect(endpointManager.requestSubmitted?.customFields.logged_in_user).to.equal(undefined);\r\n\r\n braintreeManager.setLoggedInUser('foo-user');\r\n braintreeManager.setReferrer('foo-referrer');\r\n braintreeManager.setOrigin('foo-origin');\r\n\r\n await braintreeManager.submitDonation({\r\n nonce: 'boop',\r\n paymentProvider: PaymentProvider.CreditCard,\r\n donationInfo: new MockDonationInfo(),\r\n billingInfo: mockBillingInfo,\r\n customerInfo: mockCustomerInfo,\r\n });\r\n\r\n expect(endpointManager.requestSubmitted?.customFields.referrer).to.equal('foo-referrer');\r\n expect(endpointManager.requestSubmitted?.customFields.logged_in_user).to.equal('foo-user');\r\n expect(endpointManager.requestSubmitted?.customFields.origin).to.equal('foo-origin');\r\n });\r\n\r\n it('can be initialized with referrer, origin, and logged in user and submits them to the endpoint', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n loggedInUser: 'foo-user',\r\n referrer: 'foo-referrer',\r\n origin: 'foo-origin',\r\n });\r\n\r\n await braintreeManager.submitDonation({\r\n nonce: 'boop',\r\n paymentProvider: PaymentProvider.CreditCard,\r\n donationInfo: new MockDonationInfo(),\r\n billingInfo: mockBillingInfo,\r\n customerInfo: mockCustomerInfo,\r\n });\r\n\r\n expect(endpointManager.requestSubmitted?.customFields.referrer).to.equal('foo-referrer');\r\n expect(endpointManager.requestSubmitted?.customFields.logged_in_user).to.equal('foo-user');\r\n expect(endpointManager.requestSubmitted?.customFields.origin).to.equal('foo-origin');\r\n });\r\n\r\n it('properly submits an upsell donation', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n });\r\n\r\n await braintreeManager.submitUpsellDonation({\r\n oneTimeDonationResponse: mockSuccessResponse,\r\n amount: 3.5,\r\n });\r\n\r\n const requestSubmitted = endpointManager.requestSubmitted;\r\n\r\n expect(requestSubmitted?.donationType).to.equal(DonationType.Upsell);\r\n expect(requestSubmitted?.amount).to.equal(3.5);\r\n expect(requestSubmitted?.customFields.fee_amount_covered).to.equal(0);\r\n });\r\n\r\n it('handles successful donation', async () => {\r\n const paymentClients = new MockPaymentClients();\r\n const endpointManager = new MockEndpointManager();\r\n\r\n const braintreeManager = new BraintreeManager({\r\n authorizationToken: 'foo',\r\n paymentClients,\r\n endpointManager,\r\n hostedFieldConfig: mockHostedFieldConfig,\r\n hostingEnvironment: HostingEnvironment.Development,\r\n });\r\n\r\n await braintreeManager.donationSuccessful({\r\n successResponse: mockSuccessResponse,\r\n });\r\n\r\n const successResponseSubmitted = endpointManager.successResponseSubmitted;\r\n\r\n expect(successResponseSubmitted?.donationType).to.equal(DonationType.OneTime);\r\n expect(successResponseSubmitted?.amount).to.equal(5);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"braintree-manager.test.js","sourceRoot":"","sources":["../../../test/tests/braintree-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from '@open-wc/testing';\n\nimport { BraintreeManager } from '../../src/braintree-manager/braintree-manager';\nimport { HostingEnvironment } from '../../src/braintree-manager/braintree-interfaces';\nimport { MockPaymentClients } from '../mocks/mock-payment-clients';\nimport { MockEndpointManager } from '../mocks/mock-endpoint-manager';\nimport { mockHostedFieldConfig } from '../mocks/mock-hosted-fields-config';\nimport { PaymentProvider, DonationType } from '@internetarchive/donation-form-data-models';\nimport { mockBillingInfo } from '../mocks/models/mock-billing-info';\nimport { mockCustomerInfo } from '../mocks/models/mock-customer-info';\nimport { MockDeviceDataCollector } from '../mocks/payment-clients/mock-data-collector';\nimport { mockSuccessResponse } from '../mocks/models/mock-success-response';\nimport { MockDonationInfo } from '../mocks/mock-donation-info';\n\ndescribe('Braintree Manager', () => {\n it('can be initialized', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n });\n\n expect(braintreeManager).to.not.equal(undefined);\n });\n\n it('collects device data on startup and submits it', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n });\n\n await braintreeManager.startup();\n\n await braintreeManager.submitDonation({\n nonce: 'boop',\n paymentProvider: PaymentProvider.CreditCard,\n donationInfo: new MockDonationInfo(),\n billingInfo: mockBillingInfo,\n customerInfo: mockCustomerInfo,\n });\n\n expect(endpointManager.requestSubmitted?.deviceData).to.equal(\n MockDeviceDataCollector.mockDeviceData,\n );\n });\n\n it('does not collect device data if startup not called', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n });\n\n await braintreeManager.submitDonation({\n nonce: 'boop',\n paymentProvider: PaymentProvider.CreditCard,\n donationInfo: new MockDonationInfo(),\n billingInfo: mockBillingInfo,\n customerInfo: mockCustomerInfo,\n });\n\n expect(endpointManager.requestSubmitted?.deviceData).to.equal(undefined);\n });\n\n it('can properly set referrer, origin, and logged in user and submits them to the endpoint', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n });\n\n await braintreeManager.submitDonation({\n nonce: 'boop',\n paymentProvider: PaymentProvider.CreditCard,\n donationInfo: new MockDonationInfo(),\n billingInfo: mockBillingInfo,\n customerInfo: mockCustomerInfo,\n });\n\n // verify they're empty\n expect(endpointManager.requestSubmitted?.customFields.referrer).to.equal(undefined);\n expect(endpointManager.requestSubmitted?.customFields.logged_in_user).to.equal(undefined);\n\n braintreeManager.setLoggedInUser('foo-user');\n braintreeManager.setReferrer('foo-referrer');\n braintreeManager.setOrigin('foo-origin');\n\n await braintreeManager.submitDonation({\n nonce: 'boop',\n paymentProvider: PaymentProvider.CreditCard,\n donationInfo: new MockDonationInfo(),\n billingInfo: mockBillingInfo,\n customerInfo: mockCustomerInfo,\n });\n\n expect(endpointManager.requestSubmitted?.customFields.referrer).to.equal('foo-referrer');\n expect(endpointManager.requestSubmitted?.customFields.logged_in_user).to.equal('foo-user');\n expect(endpointManager.requestSubmitted?.customFields.origin).to.equal('foo-origin');\n });\n\n it('can be initialized with referrer, origin, and logged in user and submits them to the endpoint', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n loggedInUser: 'foo-user',\n referrer: 'foo-referrer',\n origin: 'foo-origin',\n });\n\n await braintreeManager.submitDonation({\n nonce: 'boop',\n paymentProvider: PaymentProvider.CreditCard,\n donationInfo: new MockDonationInfo(),\n billingInfo: mockBillingInfo,\n customerInfo: mockCustomerInfo,\n });\n\n expect(endpointManager.requestSubmitted?.customFields.referrer).to.equal('foo-referrer');\n expect(endpointManager.requestSubmitted?.customFields.logged_in_user).to.equal('foo-user');\n expect(endpointManager.requestSubmitted?.customFields.origin).to.equal('foo-origin');\n });\n\n it('properly submits an upsell donation', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n });\n\n await braintreeManager.submitUpsellDonation({\n oneTimeDonationResponse: mockSuccessResponse,\n amount: 3.5,\n });\n\n const requestSubmitted = endpointManager.requestSubmitted;\n\n expect(requestSubmitted?.donationType).to.equal(DonationType.Upsell);\n expect(requestSubmitted?.amount).to.equal(3.5);\n expect(requestSubmitted?.customFields.fee_amount_covered).to.equal(0);\n });\n\n it('handles successful donation', async () => {\n const paymentClients = new MockPaymentClients();\n const endpointManager = new MockEndpointManager();\n\n const braintreeManager = new BraintreeManager({\n authorizationToken: 'foo',\n paymentClients,\n endpointManager,\n hostedFieldConfig: mockHostedFieldConfig,\n hostingEnvironment: HostingEnvironment.Development,\n });\n\n await braintreeManager.donationSuccessful({\n successResponse: mockSuccessResponse,\n });\n\n const successResponseSubmitted = endpointManager.successResponseSubmitted;\n\n expect(successResponseSubmitted?.donationType).to.equal(DonationType.OneTime);\n expect(successResponseSubmitted?.amount).to.equal(5);\n });\n});\n"]}
@@ -19,16 +19,16 @@ describe('Donation Form Controller', () => {
19
19
  delete window['grecaptcha'];
20
20
  });
21
21
  it('has no shadowRoot', () => __awaiter(void 0, void 0, void 0, function* () {
22
- const el = (yield fixture(html `
23
- <donation-form-controller></donation-form-controller>
22
+ const el = (yield fixture(html `
23
+ <donation-form-controller></donation-form-controller>
24
24
  `));
25
25
  expect(el.shadowRoot).to.equal(null);
26
26
  }));
27
27
  it('can submit a donation', () => __awaiter(void 0, void 0, void 0, function* () {
28
28
  var _a, _b, _c, _d;
29
29
  const mockAnalytics = new MockAnalyticsManager();
30
- const controller = (yield fixture(html `
31
- <donation-form-controller .analyticsHandler=${mockAnalytics}> </donation-form-controller>
30
+ const controller = (yield fixture(html `
31
+ <donation-form-controller .analyticsHandler=${mockAnalytics}> </donation-form-controller>
32
32
  `));
33
33
  // configure the donation-form-controller
34
34
  const recaptchaElement = (yield fixture(html ` <div></div> `));
@@ -78,13 +78,13 @@ describe('Donation Form Controller', () => {
78
78
  var _a, _b;
79
79
  const mockAnalytics = new MockAnalyticsManager();
80
80
  const analyticsCategory = 'FooCategory';
81
- (yield fixture(html `
82
- <donation-form-controller
83
- ?showCreditCardButtonText=${true}
84
- .analyticsCategory=${analyticsCategory}
85
- .analyticsHandler=${mockAnalytics}
86
- >
87
- </donation-form-controller>
81
+ (yield fixture(html `
82
+ <donation-form-controller
83
+ ?showCreditCardButtonText=${true}
84
+ .analyticsCategory=${analyticsCategory}
85
+ .analyticsHandler=${mockAnalytics}
86
+ >
87
+ </donation-form-controller>
88
88
  `));
89
89
  expect((_a = mockAnalytics.sendEventOptions) === null || _a === void 0 ? void 0 : _a.category).to.equal(analyticsCategory);
90
90
  expect((_b = mockAnalytics.sendEventOptions) === null || _b === void 0 ? void 0 : _b.action).to.equal('Viewed');
@@ -93,13 +93,13 @@ describe('Donation Form Controller', () => {
93
93
  var _a, _b, _c, _d, _e;
94
94
  const mockAnalytics = new MockAnalyticsManager();
95
95
  const analyticsCategory = 'FooCategory';
96
- const controller = (yield fixture(html `
97
- <donation-form-controller
98
- ?showCreditCardButtonText=${true}
99
- .analyticsCategory=${analyticsCategory}
100
- .analyticsHandler=${mockAnalytics}
101
- >
102
- </donation-form-controller>
96
+ const controller = (yield fixture(html `
97
+ <donation-form-controller
98
+ ?showCreditCardButtonText=${true}
99
+ .analyticsCategory=${analyticsCategory}
100
+ .analyticsHandler=${mockAnalytics}
101
+ >
102
+ </donation-form-controller>
103
103
  `));
104
104
  const donationForm = controller.querySelector('donation-form');
105
105
  const donationHeader = (_a = donationForm.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('donation-form-header');
@@ -114,13 +114,13 @@ describe('Donation Form Controller', () => {
114
114
  var _a, _b, _c, _d, _e;
115
115
  const mockAnalytics = new MockAnalyticsManager();
116
116
  const analyticsCategory = 'FooCategory';
117
- const controller = (yield fixture(html `
118
- <donation-form-controller
119
- ?showCreditCardButtonText=${true}
120
- .analyticsCategory=${analyticsCategory}
121
- .analyticsHandler=${mockAnalytics}
122
- >
123
- </donation-form-controller>
117
+ const controller = (yield fixture(html `
118
+ <donation-form-controller
119
+ ?showCreditCardButtonText=${true}
120
+ .analyticsCategory=${analyticsCategory}
121
+ .analyticsHandler=${mockAnalytics}
122
+ >
123
+ </donation-form-controller>
124
124
  `));
125
125
  const donationForm = controller.querySelector('donation-form');
126
126
  const paymentSelector = (_a = donationForm.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('payment-selector');
@@ -145,13 +145,13 @@ describe('Donation Form Controller', () => {
145
145
  var _a, _b;
146
146
  const mockAnalytics = new MockAnalyticsManager();
147
147
  const analyticsCategory = 'FooCategory';
148
- const controller = (yield fixture(html `
149
- <donation-form-controller
150
- ?showCreditCardButtonText=${true}
151
- .analyticsCategory=${analyticsCategory}
152
- .analyticsHandler=${mockAnalytics}
153
- >
154
- </donation-form-controller>
148
+ const controller = (yield fixture(html `
149
+ <donation-form-controller
150
+ ?showCreditCardButtonText=${true}
151
+ .analyticsCategory=${analyticsCategory}
152
+ .analyticsHandler=${mockAnalytics}
153
+ >
154
+ </donation-form-controller>
155
155
  `));
156
156
  const donationForm = controller.querySelector('donation-form');
157
157
  const flowHandlers = new MockPaymentFlowHandlers();
@@ -166,13 +166,13 @@ describe('Donation Form Controller', () => {
166
166
  var _a, _b;
167
167
  const mockAnalytics = new MockAnalyticsManager();
168
168
  const analyticsCategory = 'FooCategory';
169
- const controller = (yield fixture(html `
170
- <donation-form-controller
171
- ?showCreditCardButtonText=${true}
172
- .analyticsCategory=${analyticsCategory}
173
- .analyticsHandler=${mockAnalytics}
174
- >
175
- </donation-form-controller>
169
+ const controller = (yield fixture(html `
170
+ <donation-form-controller
171
+ ?showCreditCardButtonText=${true}
172
+ .analyticsCategory=${analyticsCategory}
173
+ .analyticsHandler=${mockAnalytics}
174
+ >
175
+ </donation-form-controller>
176
176
  `));
177
177
  const donationForm = controller.querySelector('donation-form');
178
178
  const flowHandlers = new MockPaymentFlowHandlers();
@@ -1 +1 @@
1
- {"version":3,"file":"donation-form-controller.test.js","sourceRoot":"","sources":["../../../test/tests/donation-form-controller.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { html, fixture, expect, elementUpdated, oneEvent } from '@open-wc/testing';\r\n\r\nimport '../../src/donation-form-controller';\r\nimport { DonationFormController } from '../../src/donation-form-controller';\r\nimport { MockGrecaptcha, MockGrecaptchaMode } from '../mocks/payment-clients/mock-grecaptcha';\r\nimport { HostingEnvironment } from '../../src/braintree-manager/braintree-interfaces';\r\nimport { MockEndpointManager } from '../mocks/mock-endpoint-manager';\r\nimport { MockPaymentClients } from '../mocks/mock-payment-clients';\r\nimport { ContactForm } from '../../src/form-elements/contact-form/contact-form';\r\nimport { fillInContactForm } from '../helpers/fillInContactForm';\r\nimport { promisedSleep } from '../../src/util/promisedSleep';\r\nimport { MockModalManager } from '../mocks/mock-modal-manager';\r\nimport { MockHostedFieldsClient } from '../mocks/payment-clients/mock-hostedfields-client';\r\nimport { DonationForm } from '../../src/donation-form';\r\nimport { PaymentSelector } from '../../src/form-elements/payment-selector';\r\nimport { DonationFormHeader } from '../../src/form-elements/header/donation-form-header';\r\nimport { DonationFormEditDonation } from '@internetarchive/donation-form-edit-donation';\r\nimport { MockPaymentFlowHandlers } from '../mocks/flow-handlers/mock-payment-flow-handlers';\r\nimport { MockAnalyticsManager } from '@internetarchive/analytics-manager/dist/test/mock-analytics-manager';\r\n\r\ndescribe('Donation Form Controller', () => {\r\n beforeEach(() => {\r\n (window['grecaptcha' as any] as any) = new MockGrecaptcha(MockGrecaptchaMode.Success);\r\n });\r\n\r\n afterEach(() => {\r\n delete window['grecaptcha' as any];\r\n });\r\n\r\n it('has no shadowRoot', async () => {\r\n const el = (await fixture(html`\r\n <donation-form-controller></donation-form-controller>\r\n `)) as DonationFormController;\r\n\r\n expect(el.shadowRoot).to.equal(null);\r\n });\r\n\r\n it('can submit a donation', async () => {\r\n const mockAnalytics = new MockAnalyticsManager();\r\n const controller = (await fixture(html`\r\n <donation-form-controller .analyticsHandler=${mockAnalytics}> </donation-form-controller>\r\n `)) as DonationFormController;\r\n\r\n // configure the donation-form-controller\r\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\r\n const endpointManager = new MockEndpointManager();\r\n const paymentClients = new MockPaymentClients();\r\n const modalManager = new MockModalManager();\r\n controller.paymentClients = paymentClients;\r\n controller.modalManager = modalManager;\r\n controller.environment = HostingEnvironment.Development;\r\n controller.recaptchaElement = recaptchaElement;\r\n controller.endpointManager = endpointManager;\r\n controller.braintreeAuthToken = 'foo';\r\n controller.recaptchaSiteKey = 'bar';\r\n controller.venmoProfileId = 'baz';\r\n controller.referrer = 'test-referrer';\r\n controller.loggedInUser = 'test-user';\r\n\r\n // grab some internal elements to interact with\r\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\r\n const paymentSelector: PaymentSelector = donationForm?.shadowRoot?.querySelector(\r\n 'payment-selector',\r\n ) as PaymentSelector;\r\n const creditCardButton = paymentSelector?.shadowRoot?.querySelector('.credit-card-button');\r\n\r\n // click on the credit card button\r\n const ccClickEvent = new MouseEvent('click');\r\n creditCardButton?.dispatchEvent(ccClickEvent);\r\n\r\n // clicking on the credit card button will show the contact form so wait for it to be updated\r\n await elementUpdated(donationForm);\r\n await promisedSleep(100);\r\n const contactForm = document.querySelector('contact-form') as ContactForm;\r\n await fillInContactForm(contactForm);\r\n\r\n // verify the Donate button is still disabled\r\n const donateButton = donationForm?.shadowRoot?.querySelector(\r\n '#donate-button',\r\n ) as HTMLButtonElement;\r\n\r\n // simulates after the user has input all of the credit card fields\r\n const hostedFields = (await paymentClients.hostedFields.get()) as MockHostedFieldsClient;\r\n hostedFields.emitValidityChangedEvent(true);\r\n await promisedSleep(100);\r\n\r\n // verify that the donate button has become enabled and no request has been submitted\r\n expect(donateButton.disabled).to.equal(false);\r\n expect(endpointManager.requestSubmitted).to.equal(undefined);\r\n\r\n // click the donate button\r\n const donateClickEvent = new MouseEvent('click');\r\n donateButton?.dispatchEvent(donateClickEvent);\r\n await promisedSleep(100);\r\n\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('PaymentFlowStarted');\r\n\r\n // verify that a payload has been requested to be submitted to the backend\r\n expect(endpointManager.requestSubmitted).to.not.equal(undefined);\r\n });\r\n\r\n it('sends Viewed analytics when it first updates', async () => {\r\n const mockAnalytics = new MockAnalyticsManager();\r\n const analyticsCategory = 'FooCategory';\r\n (await fixture(html`\r\n <donation-form-controller\r\n ?showCreditCardButtonText=${true}\r\n .analyticsCategory=${analyticsCategory}\r\n .analyticsHandler=${mockAnalytics}\r\n >\r\n </donation-form-controller>\r\n `)) as DonationFormController;\r\n expect(mockAnalytics.sendEventOptions?.category).to.equal(analyticsCategory);\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('Viewed');\r\n });\r\n\r\n it('sends DonationInfoChanged analytics when donation info changes', async () => {\r\n const mockAnalytics = new MockAnalyticsManager();\r\n const analyticsCategory = 'FooCategory';\r\n const controller = (await fixture(html`\r\n <donation-form-controller\r\n ?showCreditCardButtonText=${true}\r\n .analyticsCategory=${analyticsCategory}\r\n .analyticsHandler=${mockAnalytics}\r\n >\r\n </donation-form-controller>\r\n `)) as DonationFormController;\r\n\r\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\r\n const donationHeader = donationForm.shadowRoot?.querySelector(\r\n 'donation-form-header',\r\n ) as DonationFormHeader;\r\n const editDonation = donationHeader?.shadowRoot?.querySelector(\r\n 'donation-form-edit-donation',\r\n ) as DonationFormEditDonation;\r\n const monthlyOption = editDonation?.shadowRoot?.querySelector('#donationType-monthly-option');\r\n const clickEvent = new MouseEvent('click');\r\n monthlyOption?.dispatchEvent(clickEvent);\r\n\r\n expect(mockAnalytics.sendEventOptions?.category).to.equal(analyticsCategory);\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('DonationInfoChanged');\r\n });\r\n\r\n it('sends ProviderSelected analytics', async () => {\r\n const mockAnalytics = new MockAnalyticsManager();\r\n const analyticsCategory = 'FooCategory';\r\n const controller = (await fixture(html`\r\n <donation-form-controller\r\n ?showCreditCardButtonText=${true}\r\n .analyticsCategory=${analyticsCategory}\r\n .analyticsHandler=${mockAnalytics}\r\n >\r\n </donation-form-controller>\r\n `)) as DonationFormController;\r\n\r\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\r\n const paymentSelector = donationForm.shadowRoot?.querySelector(\r\n 'payment-selector',\r\n ) as PaymentSelector;\r\n\r\n // on the first payment provider chosen, the previousPaymentProvider is undefined\r\n const creditCardButton = paymentSelector.shadowRoot?.querySelector(\r\n '.credit-card-button',\r\n ) as HTMLButtonElement;\r\n setTimeout(() => {\r\n const ccClickEvent = new MouseEvent('click');\r\n creditCardButton.dispatchEvent(ccClickEvent);\r\n });\r\n await oneEvent(donationForm, 'paymentProviderSelected');\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('ProviderFirstSelected-CreditCard');\r\n\r\n // on subsequent payment provider choices, the previousPaymentProvider is populated\r\n const venmoButton = paymentSelector.shadowRoot?.querySelector('.venmo') as HTMLButtonElement;\r\n setTimeout(() => {\r\n const venmoClickEvent = new MouseEvent('click');\r\n venmoButton.dispatchEvent(venmoClickEvent);\r\n });\r\n await oneEvent(donationForm, 'paymentProviderSelected');\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('ProviderChangedTo-Venmo');\r\n });\r\n\r\n it('sends PaymentFlowCancelled analytics', async () => {\r\n const mockAnalytics = new MockAnalyticsManager();\r\n const analyticsCategory = 'FooCategory';\r\n const controller = (await fixture(html`\r\n <donation-form-controller\r\n ?showCreditCardButtonText=${true}\r\n .analyticsCategory=${analyticsCategory}\r\n .analyticsHandler=${mockAnalytics}\r\n >\r\n </donation-form-controller>\r\n `)) as DonationFormController;\r\n\r\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\r\n const flowHandlers = new MockPaymentFlowHandlers();\r\n donationForm.paymentFlowHandlers = flowHandlers;\r\n await elementUpdated(donationForm);\r\n await promisedSleep(250);\r\n flowHandlers.paypalHandler.emitPaymentCancelledEvent();\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('PaymentFlowCancelled');\r\n expect(mockAnalytics.sendEventOptions?.label).to.equal('PayPal');\r\n });\r\n\r\n it('sends PaymentFlowError analytics', async () => {\r\n const mockAnalytics = new MockAnalyticsManager();\r\n const analyticsCategory = 'FooCategory';\r\n const controller = (await fixture(html`\r\n <donation-form-controller\r\n ?showCreditCardButtonText=${true}\r\n .analyticsCategory=${analyticsCategory}\r\n .analyticsHandler=${mockAnalytics}\r\n >\r\n </donation-form-controller>\r\n `)) as DonationFormController;\r\n\r\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\r\n const flowHandlers = new MockPaymentFlowHandlers();\r\n donationForm.paymentFlowHandlers = flowHandlers;\r\n await elementUpdated(donationForm);\r\n await promisedSleep(250);\r\n flowHandlers.paypalHandler.emitPaymentErrorEvent();\r\n expect(mockAnalytics.sendEventOptions?.action).to.equal('PaymentFlowError');\r\n expect(mockAnalytics.sendEventOptions?.label).to.equal('PayPal-foo-error');\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"donation-form-controller.test.js","sourceRoot":"","sources":["../../../test/tests/donation-form-controller.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { html, fixture, expect, elementUpdated, oneEvent } from '@open-wc/testing';\n\nimport '../../src/donation-form-controller';\nimport { DonationFormController } from '../../src/donation-form-controller';\nimport { MockGrecaptcha, MockGrecaptchaMode } from '../mocks/payment-clients/mock-grecaptcha';\nimport { HostingEnvironment } from '../../src/braintree-manager/braintree-interfaces';\nimport { MockEndpointManager } from '../mocks/mock-endpoint-manager';\nimport { MockPaymentClients } from '../mocks/mock-payment-clients';\nimport { ContactForm } from '../../src/form-elements/contact-form/contact-form';\nimport { fillInContactForm } from '../helpers/fillInContactForm';\nimport { promisedSleep } from '../../src/util/promisedSleep';\nimport { MockModalManager } from '../mocks/mock-modal-manager';\nimport { MockHostedFieldsClient } from '../mocks/payment-clients/mock-hostedfields-client';\nimport { DonationForm } from '../../src/donation-form';\nimport { PaymentSelector } from '../../src/form-elements/payment-selector';\nimport { DonationFormHeader } from '../../src/form-elements/header/donation-form-header';\nimport { DonationFormEditDonation } from '@internetarchive/donation-form-edit-donation';\nimport { MockPaymentFlowHandlers } from '../mocks/flow-handlers/mock-payment-flow-handlers';\nimport { MockAnalyticsManager } from '@internetarchive/analytics-manager/dist/test/mock-analytics-manager';\n\ndescribe('Donation Form Controller', () => {\n beforeEach(() => {\n (window['grecaptcha' as any] as any) = new MockGrecaptcha(MockGrecaptchaMode.Success);\n });\n\n afterEach(() => {\n delete window['grecaptcha' as any];\n });\n\n it('has no shadowRoot', async () => {\n const el = (await fixture(html`\n <donation-form-controller></donation-form-controller>\n `)) as DonationFormController;\n\n expect(el.shadowRoot).to.equal(null);\n });\n\n it('can submit a donation', async () => {\n const mockAnalytics = new MockAnalyticsManager();\n const controller = (await fixture(html`\n <donation-form-controller .analyticsHandler=${mockAnalytics}> </donation-form-controller>\n `)) as DonationFormController;\n\n // configure the donation-form-controller\n const recaptchaElement = (await fixture(html` <div></div> `)) as HTMLElement;\n const endpointManager = new MockEndpointManager();\n const paymentClients = new MockPaymentClients();\n const modalManager = new MockModalManager();\n controller.paymentClients = paymentClients;\n controller.modalManager = modalManager;\n controller.environment = HostingEnvironment.Development;\n controller.recaptchaElement = recaptchaElement;\n controller.endpointManager = endpointManager;\n controller.braintreeAuthToken = 'foo';\n controller.recaptchaSiteKey = 'bar';\n controller.venmoProfileId = 'baz';\n controller.referrer = 'test-referrer';\n controller.loggedInUser = 'test-user';\n\n // grab some internal elements to interact with\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\n const paymentSelector: PaymentSelector = donationForm?.shadowRoot?.querySelector(\n 'payment-selector',\n ) as PaymentSelector;\n const creditCardButton = paymentSelector?.shadowRoot?.querySelector('.credit-card-button');\n\n // click on the credit card button\n const ccClickEvent = new MouseEvent('click');\n creditCardButton?.dispatchEvent(ccClickEvent);\n\n // clicking on the credit card button will show the contact form so wait for it to be updated\n await elementUpdated(donationForm);\n await promisedSleep(100);\n const contactForm = document.querySelector('contact-form') as ContactForm;\n await fillInContactForm(contactForm);\n\n // verify the Donate button is still disabled\n const donateButton = donationForm?.shadowRoot?.querySelector(\n '#donate-button',\n ) as HTMLButtonElement;\n\n // simulates after the user has input all of the credit card fields\n const hostedFields = (await paymentClients.hostedFields.get()) as MockHostedFieldsClient;\n hostedFields.emitValidityChangedEvent(true);\n await promisedSleep(100);\n\n // verify that the donate button has become enabled and no request has been submitted\n expect(donateButton.disabled).to.equal(false);\n expect(endpointManager.requestSubmitted).to.equal(undefined);\n\n // click the donate button\n const donateClickEvent = new MouseEvent('click');\n donateButton?.dispatchEvent(donateClickEvent);\n await promisedSleep(100);\n\n expect(mockAnalytics.sendEventOptions?.action).to.equal('PaymentFlowStarted');\n\n // verify that a payload has been requested to be submitted to the backend\n expect(endpointManager.requestSubmitted).to.not.equal(undefined);\n });\n\n it('sends Viewed analytics when it first updates', async () => {\n const mockAnalytics = new MockAnalyticsManager();\n const analyticsCategory = 'FooCategory';\n (await fixture(html`\n <donation-form-controller\n ?showCreditCardButtonText=${true}\n .analyticsCategory=${analyticsCategory}\n .analyticsHandler=${mockAnalytics}\n >\n </donation-form-controller>\n `)) as DonationFormController;\n expect(mockAnalytics.sendEventOptions?.category).to.equal(analyticsCategory);\n expect(mockAnalytics.sendEventOptions?.action).to.equal('Viewed');\n });\n\n it('sends DonationInfoChanged analytics when donation info changes', async () => {\n const mockAnalytics = new MockAnalyticsManager();\n const analyticsCategory = 'FooCategory';\n const controller = (await fixture(html`\n <donation-form-controller\n ?showCreditCardButtonText=${true}\n .analyticsCategory=${analyticsCategory}\n .analyticsHandler=${mockAnalytics}\n >\n </donation-form-controller>\n `)) as DonationFormController;\n\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\n const donationHeader = donationForm.shadowRoot?.querySelector(\n 'donation-form-header',\n ) as DonationFormHeader;\n const editDonation = donationHeader?.shadowRoot?.querySelector(\n 'donation-form-edit-donation',\n ) as DonationFormEditDonation;\n const monthlyOption = editDonation?.shadowRoot?.querySelector('#donationType-monthly-option');\n const clickEvent = new MouseEvent('click');\n monthlyOption?.dispatchEvent(clickEvent);\n\n expect(mockAnalytics.sendEventOptions?.category).to.equal(analyticsCategory);\n expect(mockAnalytics.sendEventOptions?.action).to.equal('DonationInfoChanged');\n });\n\n it('sends ProviderSelected analytics', async () => {\n const mockAnalytics = new MockAnalyticsManager();\n const analyticsCategory = 'FooCategory';\n const controller = (await fixture(html`\n <donation-form-controller\n ?showCreditCardButtonText=${true}\n .analyticsCategory=${analyticsCategory}\n .analyticsHandler=${mockAnalytics}\n >\n </donation-form-controller>\n `)) as DonationFormController;\n\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\n const paymentSelector = donationForm.shadowRoot?.querySelector(\n 'payment-selector',\n ) as PaymentSelector;\n\n // on the first payment provider chosen, the previousPaymentProvider is undefined\n const creditCardButton = paymentSelector.shadowRoot?.querySelector(\n '.credit-card-button',\n ) as HTMLButtonElement;\n setTimeout(() => {\n const ccClickEvent = new MouseEvent('click');\n creditCardButton.dispatchEvent(ccClickEvent);\n });\n await oneEvent(donationForm, 'paymentProviderSelected');\n expect(mockAnalytics.sendEventOptions?.action).to.equal('ProviderFirstSelected-CreditCard');\n\n // on subsequent payment provider choices, the previousPaymentProvider is populated\n const venmoButton = paymentSelector.shadowRoot?.querySelector('.venmo') as HTMLButtonElement;\n setTimeout(() => {\n const venmoClickEvent = new MouseEvent('click');\n venmoButton.dispatchEvent(venmoClickEvent);\n });\n await oneEvent(donationForm, 'paymentProviderSelected');\n expect(mockAnalytics.sendEventOptions?.action).to.equal('ProviderChangedTo-Venmo');\n });\n\n it('sends PaymentFlowCancelled analytics', async () => {\n const mockAnalytics = new MockAnalyticsManager();\n const analyticsCategory = 'FooCategory';\n const controller = (await fixture(html`\n <donation-form-controller\n ?showCreditCardButtonText=${true}\n .analyticsCategory=${analyticsCategory}\n .analyticsHandler=${mockAnalytics}\n >\n </donation-form-controller>\n `)) as DonationFormController;\n\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\n const flowHandlers = new MockPaymentFlowHandlers();\n donationForm.paymentFlowHandlers = flowHandlers;\n await elementUpdated(donationForm);\n await promisedSleep(250);\n flowHandlers.paypalHandler.emitPaymentCancelledEvent();\n expect(mockAnalytics.sendEventOptions?.action).to.equal('PaymentFlowCancelled');\n expect(mockAnalytics.sendEventOptions?.label).to.equal('PayPal');\n });\n\n it('sends PaymentFlowError analytics', async () => {\n const mockAnalytics = new MockAnalyticsManager();\n const analyticsCategory = 'FooCategory';\n const controller = (await fixture(html`\n <donation-form-controller\n ?showCreditCardButtonText=${true}\n .analyticsCategory=${analyticsCategory}\n .analyticsHandler=${mockAnalytics}\n >\n </donation-form-controller>\n `)) as DonationFormController;\n\n const donationForm: DonationForm = controller.querySelector('donation-form') as DonationForm;\n const flowHandlers = new MockPaymentFlowHandlers();\n donationForm.paymentFlowHandlers = flowHandlers;\n await elementUpdated(donationForm);\n await promisedSleep(250);\n flowHandlers.paypalHandler.emitPaymentErrorEvent();\n expect(mockAnalytics.sendEventOptions?.action).to.equal('PaymentFlowError');\n expect(mockAnalytics.sendEventOptions?.label).to.equal('PayPal-foo-error');\n });\n});\n"]}
@@ -15,8 +15,8 @@ describe('Donation Form', () => {
15
15
  }));
16
16
  it('updates donationInfo when user changes donation info', () => __awaiter(void 0, void 0, void 0, function* () {
17
17
  var _a, _b, _c, _d;
18
- const el = (yield fixture(html `
19
- <donation-form .donationInfo=${new MockDonationInfo()}></donation-form>
18
+ const el = (yield fixture(html `
19
+ <donation-form .donationInfo=${new MockDonationInfo()}></donation-form>
20
20
  `));
21
21
  const donationHeader = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('donation-form-header');
22
22
  const editDonation = (_b = donationHeader === null || donationHeader === void 0 ? void 0 : donationHeader.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('donation-form-edit-donation');
@@ -60,8 +60,8 @@ describe('Donation Form', () => {
60
60
  amount: 3.5,
61
61
  coverFees: false,
62
62
  });
63
- const el = (yield fixture(html `
64
- <donation-form .donationInfo=${donationInfo}></donation-form>
63
+ const el = (yield fixture(html `
64
+ <donation-form .donationInfo=${donationInfo}></donation-form>
65
65
  `));
66
66
  const flowHandlers = new MockPaymentFlowHandlers();
67
67
  el.paymentFlowHandlers = flowHandlers;
@@ -1 +1 @@
1
- {"version":3,"file":"donation-form.test.js","sourceRoot":"","sources":["../../../test/tests/donation-form.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, elementUpdated, oneEvent } from '@open-wc/testing';\r\n\r\nimport '../../src/donation-form';\r\nimport { DonationForm } from '../../src/donation-form';\r\nimport {\r\n DonationType,\r\n DonationPaymentInfo,\r\n PaymentProvider,\r\n} from '@internetarchive/donation-form-data-models';\r\nimport { PaymentSelector } from '../../src/form-elements/payment-selector';\r\nimport { MockBraintreeManager } from '../mocks/mock-braintree-manager';\r\nimport { MockPaymentFlowHandlers } from '../mocks/flow-handlers/mock-payment-flow-handlers';\r\nimport { promisedSleep } from '../../src/util/promisedSleep';\r\nimport { MockDonationInfo } from '../mocks/mock-donation-info';\r\n\r\ndescribe('Donation Form', () => {\r\n describe('Configuration', () => {\r\n it('has no configuration', async () => {\r\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\r\n\r\n expect(el.braintreeManager).to.equal(undefined);\r\n expect(el.donationRequest).to.equal(undefined);\r\n });\r\n\r\n it('updates donationInfo when user changes donation info', async () => {\r\n const el = (await fixture(html`\r\n <donation-form .donationInfo=${new MockDonationInfo()}></donation-form>\r\n `)) as DonationForm;\r\n const donationHeader = el.shadowRoot?.querySelector('donation-form-header');\r\n const editDonation = donationHeader?.shadowRoot?.querySelector('donation-form-edit-donation');\r\n const monthlyOption = editDonation?.shadowRoot?.querySelector('#donationType-monthly-option');\r\n const clickEvent = new MouseEvent('click');\r\n monthlyOption?.dispatchEvent(clickEvent);\r\n await elementUpdated(el);\r\n expect(el.donationInfo?.donationType).to.equal(DonationType.Monthly);\r\n });\r\n });\r\n\r\n it('shows the contact form when Credit Card is selected', async () => {\r\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\r\n const contactFormSection = el.shadowRoot?.querySelector('.contact-form-section');\r\n const paymentSelector = el.shadowRoot?.querySelector('payment-selector') as PaymentSelector;\r\n const creditCardButton = paymentSelector.shadowRoot?.querySelector(\r\n '.credit-card-button',\r\n ) as HTMLButtonElement;\r\n expect(contactFormSection?.classList.contains('hidden')).to.be.true;\r\n const clickEvent = new MouseEvent('click');\r\n creditCardButton.dispatchEvent(clickEvent);\r\n await elementUpdated(el);\r\n expect(contactFormSection?.classList.contains('hidden')).to.be.false;\r\n });\r\n\r\n it('shows the contact form when Venmo is selected', async () => {\r\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\r\n const braintreeManager = new MockBraintreeManager();\r\n el.braintreeManager = braintreeManager;\r\n await elementUpdated(el);\r\n const contactFormSection = el.shadowRoot?.querySelector('.contact-form-section');\r\n const paymentSelector = el.shadowRoot?.querySelector('payment-selector') as PaymentSelector;\r\n const venmoButton = paymentSelector.shadowRoot?.querySelector('.venmo') as HTMLButtonElement;\r\n expect(contactFormSection?.classList.contains('hidden')).to.be.true;\r\n const clickEvent = new MouseEvent('click');\r\n venmoButton.dispatchEvent(clickEvent);\r\n await elementUpdated(el);\r\n expect(contactFormSection?.classList.contains('hidden')).to.be.false;\r\n });\r\n\r\n it('properly configures the flow handlers when they are set', async () => {\r\n const donationInfo = new DonationPaymentInfo({\r\n donationType: DonationType.Monthly,\r\n amount: 3.5,\r\n coverFees: false,\r\n });\r\n const el = (await fixture(html`\r\n <donation-form .donationInfo=${donationInfo}></donation-form>\r\n `)) as DonationForm;\r\n const flowHandlers = new MockPaymentFlowHandlers();\r\n el.paymentFlowHandlers = flowHandlers;\r\n await elementUpdated(el);\r\n await promisedSleep(250);\r\n expect(flowHandlers.paypalHandler.donationInfo).to.equal(donationInfo);\r\n });\r\n\r\n it('emits paymentProviderSelected when the selected provider changes', async () => {\r\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\r\n const braintreeManager = new MockBraintreeManager();\r\n el.braintreeManager = braintreeManager;\r\n await elementUpdated(el);\r\n const paymentSelector = el.shadowRoot?.querySelector('payment-selector') as PaymentSelector;\r\n const creditCardButton = paymentSelector.shadowRoot?.querySelector(\r\n '.credit-card-button',\r\n ) as HTMLButtonElement;\r\n\r\n // on the first payment provider chosen, the previousPaymentProvider is undefined\r\n setTimeout(() => {\r\n const ccClickEvent = new MouseEvent('click');\r\n creditCardButton.dispatchEvent(ccClickEvent);\r\n });\r\n const ccResponse = await oneEvent(el, 'paymentProviderSelected');\r\n expect(ccResponse).to.exist;\r\n expect(ccResponse.detail.paymentProvider).to.equal(PaymentProvider.CreditCard);\r\n expect(ccResponse.detail.previousPaymentProvider).to.equal(undefined);\r\n\r\n // on subsequent payment provider choices, the previousPaymentProvider is populated\r\n setTimeout(() => {\r\n const venmoButton = paymentSelector.shadowRoot?.querySelector('.venmo') as HTMLButtonElement;\r\n const venmoClickEvent = new MouseEvent('click');\r\n venmoButton.dispatchEvent(venmoClickEvent);\r\n });\r\n const venmoResponse = await oneEvent(el, 'paymentProviderSelected');\r\n expect(venmoResponse).to.exist;\r\n expect(venmoResponse.detail.paymentProvider).to.equal(PaymentProvider.Venmo);\r\n expect(venmoResponse.detail.previousPaymentProvider).to.equal(PaymentProvider.CreditCard);\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"donation-form.test.js","sourceRoot":"","sources":["../../../test/tests/donation-form.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, fixture, expect, elementUpdated, oneEvent } from '@open-wc/testing';\n\nimport '../../src/donation-form';\nimport { DonationForm } from '../../src/donation-form';\nimport {\n DonationType,\n DonationPaymentInfo,\n PaymentProvider,\n} from '@internetarchive/donation-form-data-models';\nimport { PaymentSelector } from '../../src/form-elements/payment-selector';\nimport { MockBraintreeManager } from '../mocks/mock-braintree-manager';\nimport { MockPaymentFlowHandlers } from '../mocks/flow-handlers/mock-payment-flow-handlers';\nimport { promisedSleep } from '../../src/util/promisedSleep';\nimport { MockDonationInfo } from '../mocks/mock-donation-info';\n\ndescribe('Donation Form', () => {\n describe('Configuration', () => {\n it('has no configuration', async () => {\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\n\n expect(el.braintreeManager).to.equal(undefined);\n expect(el.donationRequest).to.equal(undefined);\n });\n\n it('updates donationInfo when user changes donation info', async () => {\n const el = (await fixture(html`\n <donation-form .donationInfo=${new MockDonationInfo()}></donation-form>\n `)) as DonationForm;\n const donationHeader = el.shadowRoot?.querySelector('donation-form-header');\n const editDonation = donationHeader?.shadowRoot?.querySelector('donation-form-edit-donation');\n const monthlyOption = editDonation?.shadowRoot?.querySelector('#donationType-monthly-option');\n const clickEvent = new MouseEvent('click');\n monthlyOption?.dispatchEvent(clickEvent);\n await elementUpdated(el);\n expect(el.donationInfo?.donationType).to.equal(DonationType.Monthly);\n });\n });\n\n it('shows the contact form when Credit Card is selected', async () => {\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\n const contactFormSection = el.shadowRoot?.querySelector('.contact-form-section');\n const paymentSelector = el.shadowRoot?.querySelector('payment-selector') as PaymentSelector;\n const creditCardButton = paymentSelector.shadowRoot?.querySelector(\n '.credit-card-button',\n ) as HTMLButtonElement;\n expect(contactFormSection?.classList.contains('hidden')).to.be.true;\n const clickEvent = new MouseEvent('click');\n creditCardButton.dispatchEvent(clickEvent);\n await elementUpdated(el);\n expect(contactFormSection?.classList.contains('hidden')).to.be.false;\n });\n\n it('shows the contact form when Venmo is selected', async () => {\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\n const braintreeManager = new MockBraintreeManager();\n el.braintreeManager = braintreeManager;\n await elementUpdated(el);\n const contactFormSection = el.shadowRoot?.querySelector('.contact-form-section');\n const paymentSelector = el.shadowRoot?.querySelector('payment-selector') as PaymentSelector;\n const venmoButton = paymentSelector.shadowRoot?.querySelector('.venmo') as HTMLButtonElement;\n expect(contactFormSection?.classList.contains('hidden')).to.be.true;\n const clickEvent = new MouseEvent('click');\n venmoButton.dispatchEvent(clickEvent);\n await elementUpdated(el);\n expect(contactFormSection?.classList.contains('hidden')).to.be.false;\n });\n\n it('properly configures the flow handlers when they are set', async () => {\n const donationInfo = new DonationPaymentInfo({\n donationType: DonationType.Monthly,\n amount: 3.5,\n coverFees: false,\n });\n const el = (await fixture(html`\n <donation-form .donationInfo=${donationInfo}></donation-form>\n `)) as DonationForm;\n const flowHandlers = new MockPaymentFlowHandlers();\n el.paymentFlowHandlers = flowHandlers;\n await elementUpdated(el);\n await promisedSleep(250);\n expect(flowHandlers.paypalHandler.donationInfo).to.equal(donationInfo);\n });\n\n it('emits paymentProviderSelected when the selected provider changes', async () => {\n const el = (await fixture(html` <donation-form></donation-form> `)) as DonationForm;\n const braintreeManager = new MockBraintreeManager();\n el.braintreeManager = braintreeManager;\n await elementUpdated(el);\n const paymentSelector = el.shadowRoot?.querySelector('payment-selector') as PaymentSelector;\n const creditCardButton = paymentSelector.shadowRoot?.querySelector(\n '.credit-card-button',\n ) as HTMLButtonElement;\n\n // on the first payment provider chosen, the previousPaymentProvider is undefined\n setTimeout(() => {\n const ccClickEvent = new MouseEvent('click');\n creditCardButton.dispatchEvent(ccClickEvent);\n });\n const ccResponse = await oneEvent(el, 'paymentProviderSelected');\n expect(ccResponse).to.exist;\n expect(ccResponse.detail.paymentProvider).to.equal(PaymentProvider.CreditCard);\n expect(ccResponse.detail.previousPaymentProvider).to.equal(undefined);\n\n // on subsequent payment provider choices, the previousPaymentProvider is populated\n setTimeout(() => {\n const venmoButton = paymentSelector.shadowRoot?.querySelector('.venmo') as HTMLButtonElement;\n const venmoClickEvent = new MouseEvent('click');\n venmoButton.dispatchEvent(venmoClickEvent);\n });\n const venmoResponse = await oneEvent(el, 'paymentProviderSelected');\n expect(venmoResponse).to.exist;\n expect(venmoResponse.detail.paymentProvider).to.equal(PaymentProvider.Venmo);\n expect(venmoResponse.detail.previousPaymentProvider).to.equal(PaymentProvider.CreditCard);\n });\n});\n"]}