66 */
77
88import React from 'react'
9- import { screen , waitFor , act } from '@testing-library/react'
9+ import { waitFor , act } from '@testing-library/react'
1010import { renderWithProviders } from '@salesforce/retail-react-app/app/utils/test-utils'
1111import SFPaymentsSheet from '@salesforce/retail-react-app/app/pages/checkout/partials/sf-payments-sheet'
1212import { CheckoutProvider } from '@salesforce/retail-react-app/app/pages/checkout/util/checkout-context'
@@ -48,8 +48,18 @@ jest.mock('@salesforce/commerce-sdk-react', () => {
4848 usePaymentConfiguration : ( ) => ( {
4949 data : {
5050 paymentMethods : [
51- { id : 'card' , name : 'Card' , paymentMethodType : 'card' , accountId : 'stripe-account-1' } ,
52- { id : 'paypal' , name : 'PayPal' , paymentMethodType : 'paypal' , accountId : 'paypal-account-1' }
51+ {
52+ id : 'card' ,
53+ name : 'Card' ,
54+ paymentMethodType : 'card' ,
55+ accountId : 'stripe-account-1'
56+ } ,
57+ {
58+ id : 'paypal' ,
59+ name : 'PayPal' ,
60+ paymentMethodType : 'paypal' ,
61+ accountId : 'paypal-account-1'
62+ }
5363 ] ,
5464 paymentMethodSetAccounts : [
5565 {
@@ -168,6 +178,9 @@ jest.mock('@salesforce/retail-react-app/app/components/address-display', () => {
168178 const AddressDisplay = ( { address} ) => {
169179 return < div data-testid = "address-display" > { address ?. fullName } </ div >
170180 }
181+ AddressDisplay . propTypes = {
182+ address : ( ) => null
183+ }
171184 return AddressDisplay
172185} )
173186
@@ -178,10 +191,21 @@ jest.mock('@salesforce/retail-react-app/app/components/toggle-card', () => {
178191 { children }
179192 </ div >
180193 )
194+ ToggleCard . propTypes = {
195+ children : ( ) => null ,
196+ title : ( ) => null ,
197+ editing : ( ) => null
198+ }
181199 const ToggleCardEdit = ( { children} ) => < div data-testid = "toggle-card-edit" > { children } </ div >
200+ ToggleCardEdit . propTypes = {
201+ children : ( ) => null
202+ }
182203 const ToggleCardSummary = ( { children} ) => (
183204 < div data-testid = "toggle-card-summary" > { children } </ div >
184205 )
206+ ToggleCardSummary . propTypes = {
207+ children : ( ) => null
208+ }
185209 return {
186210 ToggleCard,
187211 ToggleCardEdit,
@@ -197,50 +221,50 @@ const mockRef = {current: null}
197221
198222const setupComponentAndGetPaymentElement = async ( ) => {
199223 renderWithCheckoutContext (
200- < SFPaymentsSheet
201- ref = { mockRef }
202- onCreateOrder = { mockOnCreateOrder }
203- onError = { mockOnError }
204- />
224+ < SFPaymentsSheet ref = { mockRef } onCreateOrder = { mockOnCreateOrder } onError = { mockOnError } />
205225 )
206226
207- await waitFor ( ( ) => {
208- expect ( mockCheckout ) . toHaveBeenCalled ( )
209- } , { timeout : 3000 } )
227+ await waitFor (
228+ ( ) => {
229+ expect ( mockCheckout ) . toHaveBeenCalled ( )
230+ } ,
231+ { timeout : 3000 }
232+ )
210233
211234 const checkoutCall = mockCheckout . mock . calls [ 0 ]
212235 return checkoutCall [ 4 ]
213236}
214237
215238const firePaymentMethodSelectedEvent = async ( paymentElement , detail = { } ) => {
216239 await act ( async ( ) => {
217- paymentElement . dispatchEvent ( new CustomEvent ( 'sfp:paymentmethodselected' , {
218- bubbles : true ,
219- composed : true ,
220- detail : {
221- selectedPaymentMethod : 'card' ,
222- ...detail
223- }
224- } ) )
240+ paymentElement . dispatchEvent (
241+ new CustomEvent ( 'sfp:paymentmethodselected' , {
242+ bubbles : true ,
243+ composed : true ,
244+ detail : {
245+ selectedPaymentMethod : 'card' ,
246+ ...detail
247+ }
248+ } )
249+ )
225250 } )
226251}
227252
228253const firePaymentApproveEvent = async ( paymentElement , detail = { } ) => {
229254 await act ( async ( ) => {
230- paymentElement . dispatchEvent ( new CustomEvent ( 'sfp:paymentapprove' , {
231- bubbles : true ,
232- composed : true ,
233- detail
234- } ) )
255+ paymentElement . dispatchEvent (
256+ new CustomEvent ( 'sfp:paymentapprove' , {
257+ bubbles : true ,
258+ composed : true ,
259+ detail
260+ } )
261+ )
235262 } )
236263}
237264
238265describe ( 'SFPaymentsSheet - SDK Event Handler Tests' , ( ) => {
239- let paymentElement = null
240-
241266 beforeEach ( ( ) => {
242267 jest . clearAllMocks ( )
243- paymentElement = null
244268 mockRef . current = null
245269 mockCheckout . mockClear ( )
246270
@@ -356,15 +380,20 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
356380 await firePaymentMethodSelectedEvent ( paymentElement , { savePaymentMethodForFutureUse : true } )
357381 await firePaymentApproveEvent ( paymentElement , { savePaymentMethodForFutureUse : true } )
358382
359- await waitFor ( ( ) => {
360- expect ( mockUpdatePaymentInstrument ) . toHaveBeenCalled ( )
361- } , { timeout : 3000 } )
383+ await waitFor (
384+ ( ) => {
385+ expect ( mockUpdatePaymentInstrument ) . toHaveBeenCalled ( )
386+ } ,
387+ { timeout : 3000 }
388+ )
362389
363390 const updateCall = mockUpdatePaymentInstrument . mock . calls [ 0 ]
364391 const requestBody = updateCall [ 0 ] . body
365392
366393 expect ( requestBody . paymentReferenceRequest . gateway ) . toBe ( 'stripe' )
367- expect ( requestBody . paymentReferenceRequest . gatewayProperties . stripe . setupFutureUsage ) . toBe ( 'on_session' )
394+ expect ( requestBody . paymentReferenceRequest . gatewayProperties . stripe . setupFutureUsage ) . toBe (
395+ 'on_session'
396+ )
368397 } )
369398
370399 test ( 'handlePaymentButtonApprove does not include setupFutureUsage when savePaymentMethodForFutureUse is false' , async ( ) => {
@@ -373,9 +402,12 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
373402 await firePaymentMethodSelectedEvent ( paymentElement , { savePaymentMethodForFutureUse : false } )
374403 await firePaymentApproveEvent ( paymentElement , { savePaymentMethodForFutureUse : false } )
375404
376- await waitFor ( ( ) => {
377- expect ( mockUpdatePaymentInstrument ) . toHaveBeenCalled ( )
378- } , { timeout : 3000 } )
405+ await waitFor (
406+ ( ) => {
407+ expect ( mockUpdatePaymentInstrument ) . toHaveBeenCalled ( )
408+ } ,
409+ { timeout : 3000 }
410+ )
379411
380412 const updateCall = mockUpdatePaymentInstrument . mock . calls [ 0 ]
381413 const requestBody = updateCall [ 0 ] . body
@@ -389,9 +421,12 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
389421 await firePaymentMethodSelectedEvent ( paymentElement , { savePaymentMethodForFutureUse : true } )
390422 await firePaymentApproveEvent ( paymentElement , { savePaymentMethodForFutureUse : true } )
391423
392- await waitFor ( ( ) => {
393- expect ( mockUpdatePaymentInstrument ) . toHaveBeenCalled ( )
394- } , { timeout : 3000 } )
424+ await waitFor (
425+ ( ) => {
426+ expect ( mockUpdatePaymentInstrument ) . toHaveBeenCalled ( )
427+ } ,
428+ { timeout : 3000 }
429+ )
395430
396431 const updateCall = mockUpdatePaymentInstrument . mock . calls [ 0 ]
397432 const requestParams = updateCall [ 0 ] . parameters
@@ -400,7 +435,9 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
400435 expect ( requestParams . orderNo ) . toBe ( 'ORDER123' )
401436 expect ( requestParams . paymentInstrumentId ) . toBe ( 'PI123' )
402437 expect ( requestBody . paymentReferenceRequest . gateway ) . toBe ( 'stripe' )
403- expect ( requestBody . paymentReferenceRequest . gatewayProperties . stripe . setupFutureUsage ) . toBe ( 'on_session' )
438+ expect ( requestBody . paymentReferenceRequest . gatewayProperties . stripe . setupFutureUsage ) . toBe (
439+ 'on_session'
440+ )
404441 expect ( requestBody . paymentReferenceRequest . paymentMethodType ) . toBe ( 'card' )
405442 } )
406443
@@ -429,29 +466,36 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
429466 await config . actions . createIntent ( )
430467
431468 await act ( async ( ) => {
432- paymentElement . dispatchEvent ( new CustomEvent ( 'sfp:paymentcancel' , {
433- bubbles : true ,
434- composed : true
435- } ) )
469+ paymentElement . dispatchEvent (
470+ new CustomEvent ( 'sfp:paymentcancel' , {
471+ bubbles : true ,
472+ composed : true
473+ } )
474+ )
436475 } )
437476
438- await waitFor ( ( ) => {
439- expect ( mockRemovePaymentInstrument ) . toHaveBeenCalled ( )
440- expect ( mockOnError ) . toHaveBeenCalled ( )
441- } , { timeout : 3000 } )
477+ await waitFor (
478+ ( ) => {
479+ expect ( mockRemovePaymentInstrument ) . toHaveBeenCalled ( )
480+ expect ( mockOnError ) . toHaveBeenCalled ( )
481+ } ,
482+ { timeout : 3000 }
483+ )
442484 } )
443485
444486 test ( 'does nothing when no basket to cleanup' , async ( ) => {
445487 const paymentElement = await setupComponentAndGetPaymentElement ( )
446488
447489 await act ( async ( ) => {
448- paymentElement . dispatchEvent ( new CustomEvent ( 'sfp:paymentcancel' , {
449- bubbles : true ,
450- composed : true
451- } ) )
490+ paymentElement . dispatchEvent (
491+ new CustomEvent ( 'sfp:paymentcancel' , {
492+ bubbles : true ,
493+ composed : true
494+ } )
495+ )
452496 } )
453497
454- await new Promise ( resolve => setTimeout ( resolve , 500 ) )
498+ await new Promise ( ( resolve ) => setTimeout ( resolve , 500 ) )
455499 expect ( mockRemovePaymentInstrument ) . not . toHaveBeenCalled ( )
456500 } )
457501 } )
@@ -464,9 +508,12 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
464508
465509 await firePaymentApproveEvent ( paymentElement , { savePaymentMethodForFutureUse : true } )
466510
467- await waitFor ( ( ) => {
468- expect ( mockOnError ) . toHaveBeenCalled ( )
469- } , { timeout : 3000 } )
511+ await waitFor (
512+ ( ) => {
513+ expect ( mockOnError ) . toHaveBeenCalled ( )
514+ } ,
515+ { timeout : 3000 }
516+ )
470517 } )
471518 } )
472519
@@ -483,9 +530,12 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
483530 />
484531 )
485532
486- await waitFor ( ( ) => {
487- expect ( mockCheckout ) . toHaveBeenCalled ( )
488- } , { timeout : 3000 } )
533+ await waitFor (
534+ ( ) => {
535+ expect ( mockCheckout ) . toHaveBeenCalled ( )
536+ } ,
537+ { timeout : 3000 }
538+ )
489539
490540 const checkoutCall = mockCheckout . mock . calls [ 0 ]
491541 const paymentElement = checkoutCall [ 4 ]
@@ -498,4 +548,3 @@ describe('SFPaymentsSheet - SDK Event Handler Tests', () => {
498548 } )
499549 } )
500550} )
501-
0 commit comments