@@ -313,6 +313,17 @@ describe('Account form', () => {
313313
314314describe ( 'Salesforce Payments Integration' , ( ) => {
315315 const mockSFPaymentsOrder = {
316+ ...mockOrder ,
317+ paymentInstruments : [
318+ {
319+ amount : 82.56 ,
320+ paymentInstrumentId : 'sfp123' ,
321+ paymentMethodId : 'Salesforce Payments'
322+ }
323+ ]
324+ }
325+
326+ const mockSFPaymentsOrderWithType = {
316327 ...mockOrder ,
317328 paymentInstruments : [
318329 {
@@ -326,164 +337,61 @@ describe('Salesforce Payments Integration', () => {
326337 ]
327338 }
328339
329- beforeEach ( ( ) => {
340+ test ( 'does not render payment details for Salesforce Payments orders when c_paymentReference_type is missing' , async ( ) => {
330341 global . server . use (
331342 rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
332343 return res ( ctx . delay ( 0 ) , ctx . json ( mockSFPaymentsOrder ) )
333344 } )
334345 )
335- } )
336346
337- test ( 'renders SFPaymentsOrderSummary for Salesforce Payments orders' , async ( ) => {
338347 renderWithProviders ( < MockedComponent /> )
339348
340- // Wait for the page to load
341349 await screen . findByText ( mockSFPaymentsOrder . orderNo )
342350
343- // Check that Payment Details section exists
344- const paymentDetailsHeading = screen . getByText ( 'Payment Details' )
345- expect ( paymentDetailsHeading ) . toBeInTheDocument ( )
346-
347- // The SFPaymentsOrderSummary should render instead of credit card display
348- const creditCardHeading = await screen . findByRole ( 'heading' , { name : / c r e d i t c a r d / i} )
349- expect ( creditCardHeading ) . toBeInTheDocument ( )
350- } )
351-
352- test ( 'displays Visa payment information for Salesforce Payments' , async ( ) => {
353- renderWithProviders ( < MockedComponent /> )
354-
355- await screen . findByText ( mockSFPaymentsOrder . orderNo )
356-
357- // Check for Visa brand name
358- expect ( await screen . findByText ( 'Visa' ) ) . toBeInTheDocument ( )
359-
360- // Check for last 4 digits with masked format
361- expect ( screen . getByText ( / 4 2 4 2 / ) ) . toBeInTheDocument ( )
362- } )
363-
364- test ( 'renders different payment types for Salesforce Payments' , async ( ) => {
365- const mockOrderWithKlarna = {
366- ...mockOrder ,
367- paymentInstruments : [
368- {
369- amount : 82.56 ,
370- paymentInstrumentId : 'sfp-klarna' ,
371- paymentMethodId : 'Salesforce Payments' ,
372- c_paymentReference_type : 'klarna'
373- }
374- ]
375- }
376-
377- global . server . use (
378- rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
379- return res ( ctx . delay ( 0 ) , ctx . json ( mockOrderWithKlarna ) )
380- } )
381- )
382-
383- renderWithProviders ( < MockedComponent /> )
384-
385- await screen . findByText ( mockOrderWithKlarna . orderNo )
386-
387- // Check for Klarna heading
388- expect ( await screen . findByText ( 'Klarna' ) ) . toBeInTheDocument ( )
389- } )
390-
391- test ( 'displays MasterCard payment information for Salesforce Payments' , async ( ) => {
392- const mockOrderWithMasterCard = {
393- ...mockOrder ,
394- paymentInstruments : [
395- {
396- amount : 82.56 ,
397- paymentInstrumentId : 'sfp-mc' ,
398- paymentMethodId : 'Salesforce Payments' ,
399- c_paymentReference_type : 'card' ,
400- c_paymentReference_brand : 'mastercard' ,
401- c_paymentReference_last4 : '5454'
402- }
403- ]
404- }
405-
406- global . server . use (
407- rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
408- return res ( ctx . delay ( 0 ) , ctx . json ( mockOrderWithMasterCard ) )
409- } )
410- )
411-
412- renderWithProviders ( < MockedComponent /> )
413-
414- await screen . findByText ( mockOrderWithMasterCard . orderNo )
415-
416- // Check for MasterCard brand name
417- expect ( await screen . findByText ( 'MasterCard' ) ) . toBeInTheDocument ( )
351+ // Payment Details section should exist
352+ expect ( screen . getByText ( 'Payment Details' ) ) . toBeInTheDocument ( )
418353
419- // Check for last 4 digits
420- expect ( screen . getByText ( / 5 4 5 4 / ) ) . toBeInTheDocument ( )
354+ // No payment method details should be shown for SFP orders when c_paymentReference_type is missing
355+ expect ( screen . queryByRole ( 'heading' , { name : / c r e d i t c a r d / i } ) ) . not . toBeInTheDocument ( )
421356 } )
422357
423- test ( 'displays SEPA Debit payment information for Salesforce Payments' , async ( ) => {
424- const mockOrderWithSEPA = {
425- ...mockOrder ,
426- paymentInstruments : [
427- {
428- amount : 82.56 ,
429- paymentInstrumentId : 'sfp-sepa' ,
430- paymentMethodId : 'Salesforce Payments' ,
431- c_paymentReference_type : 'sepa_debit' ,
432- c_paymentReference_last4 : '9012'
433- }
434- ]
435- }
436-
358+ test ( 'renders SFPaymentsOrderSummary for Salesforce Payments orders when c_paymentReference_type exists' , async ( ) => {
437359 global . server . use (
438360 rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
439- return res ( ctx . delay ( 0 ) , ctx . json ( mockOrderWithSEPA ) )
361+ return res ( ctx . delay ( 0 ) , ctx . json ( mockSFPaymentsOrderWithType ) )
440362 } )
441363 )
442364
443365 renderWithProviders ( < MockedComponent /> )
444366
445- await screen . findByText ( mockOrderWithSEPA . orderNo )
367+ await screen . findByText ( mockSFPaymentsOrderWithType . orderNo )
446368
447- // Check for SEPA Debit heading
448- expect ( await screen . findByText ( 'SEPA Debit ') ) . toBeInTheDocument ( )
369+ // Payment Details section should exist
370+ expect ( screen . getByText ( 'Payment Details ') ) . toBeInTheDocument ( )
449371
450- // Check for last 4 digits
451- expect ( screen . getByText ( / 9 0 1 2 / ) ) . toBeInTheDocument ( )
372+ // SFPaymentsOrderSummary should render when c_paymentReference_type is available
373+ expect ( await screen . findByRole ( 'heading' , { name : / c r e d i t c a r d / i} ) ) . toBeInTheDocument ( )
374+ expect ( screen . getByText ( 'Visa' ) ) . toBeInTheDocument ( )
375+ expect ( screen . getByText ( / 4 2 4 2 / ) ) . toBeInTheDocument ( )
452376 } )
453377
454- test ( 'displays Bancontact payment information for Salesforce Payments' , async ( ) => {
455- const mockOrderWithBancontact = {
456- ...mockOrder ,
457- paymentInstruments : [
458- {
459- amount : 82.56 ,
460- paymentInstrumentId : 'sfp-bancontact' ,
461- paymentMethodId : 'Salesforce Payments' ,
462- c_paymentReference_type : 'bancontact' ,
463- c_paymentReference_bankName : 'ING Bank' ,
464- c_paymentReference_last4 : '1234'
465- }
466- ]
467- }
468-
378+ test ( 'renders billing address for Salesforce Payments orders' , async ( ) => {
469379 global . server . use (
470380 rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
471- return res ( ctx . delay ( 0 ) , ctx . json ( mockOrderWithBancontact ) )
381+ return res ( ctx . delay ( 0 ) , ctx . json ( mockSFPaymentsOrder ) )
472382 } )
473383 )
474384
475385 renderWithProviders ( < MockedComponent /> )
476386
477- await screen . findByText ( mockOrderWithBancontact . orderNo )
478-
479- // Check for Bancontact heading
480- expect ( await screen . findByText ( 'Bancontact' ) ) . toBeInTheDocument ( )
387+ await screen . findByText ( mockSFPaymentsOrder . orderNo )
481388
482- // Check for bank name
483- expect ( screen . getByText ( 'ING Bank' ) ) . toBeInTheDocument ( )
389+ // Billing address should be shown
390+ expect ( screen . getByRole ( 'heading' , { name : / b i l l i n g a d d r e s s / i } ) ) . toBeInTheDocument ( )
484391
485- // Check for last 4 digits
486- expect ( screen . getByText ( / 1 2 3 4 / ) ) . toBeInTheDocument ( )
392+ // Check that billing address is displayed
393+ const addresses = screen . getAllByText ( / 1 2 3 W a l n u t P l a c e / )
394+ expect ( addresses . length ) . toBeGreaterThan ( 0 )
487395 } )
488396
489397 test ( 'still renders traditional credit card display for non-SF Payments orders' , async ( ) => {
@@ -501,78 +409,5 @@ describe('Salesforce Payments Integration', () => {
501409 expect ( await screen . findByText ( 'Credit Card' ) ) . toBeInTheDocument ( )
502410 expect ( screen . getByText ( 'Visa' ) ) . toBeInTheDocument ( )
503411 expect ( screen . getByText ( / 1 1 1 1 / ) ) . toBeInTheDocument ( )
504- expect ( screen . getByText ( / 1 \/ 2 0 4 0 / ) ) . toBeInTheDocument ( )
505- } )
506-
507- test ( 'renders billing address alongside Salesforce Payments details' , async ( ) => {
508- renderWithProviders ( < MockedComponent /> )
509-
510- await screen . findByText ( mockSFPaymentsOrder . orderNo )
511-
512- // Check for billing address heading
513- const billingAddressHeading = screen . getByRole ( 'heading' , { name : / b i l l i n g a d d r e s s / i} )
514- expect ( billingAddressHeading ) . toBeInTheDocument ( )
515-
516- // Check that billing address is displayed (use getAllByText since address appears in multiple places)
517- const addresses = screen . getAllByText ( / 1 2 3 W a l n u t P l a c e / )
518- expect ( addresses . length ) . toBeGreaterThan ( 0 )
519-
520- // Verify Payment Details heading exists
521- expect ( screen . getByText ( 'Payment Details' ) ) . toBeInTheDocument ( )
522- } )
523-
524- test ( 'displays Afterpay/Clearpay payment information for Salesforce Payments' , async ( ) => {
525- const mockOrderWithAfterpay = {
526- ...mockOrder ,
527- paymentInstruments : [
528- {
529- amount : 82.56 ,
530- paymentInstrumentId : 'sfp-afterpay' ,
531- paymentMethodId : 'Salesforce Payments' ,
532- c_paymentReference_type : 'afterpay_clearpay'
533- }
534- ]
535- }
536-
537- global . server . use (
538- rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
539- return res ( ctx . delay ( 0 ) , ctx . json ( mockOrderWithAfterpay ) )
540- } )
541- )
542-
543- renderWithProviders ( < MockedComponent /> )
544-
545- await screen . findByText ( mockOrderWithAfterpay . orderNo )
546-
547- // Check for Afterpay/Clearpay heading
548- expect ( await screen . findByText ( 'Afterpay/Clearpay' ) ) . toBeInTheDocument ( )
549- } )
550-
551- test ( 'displays iDEAL payment information for Salesforce Payments' , async ( ) => {
552- const mockOrderWithIdeal = {
553- ...mockOrder ,
554- paymentInstruments : [
555- {
556- amount : 82.56 ,
557- paymentInstrumentId : 'sfp-ideal' ,
558- paymentMethodId : 'Salesforce Payments' ,
559- c_paymentReference_type : 'ideal' ,
560- c_paymentReference_bank : 'rabobank'
561- }
562- ]
563- }
564-
565- global . server . use (
566- rest . get ( '*/orders/:orderId' , ( req , res , ctx ) => {
567- return res ( ctx . delay ( 0 ) , ctx . json ( mockOrderWithIdeal ) )
568- } )
569- )
570-
571- renderWithProviders ( < MockedComponent /> )
572-
573- await screen . findByText ( mockOrderWithIdeal . orderNo )
574-
575- // Check for iDEAL heading
576- expect ( await screen . findByText ( 'iDEAL' ) ) . toBeInTheDocument ( )
577412 } )
578413} )
0 commit comments