flamingo.me/flamingo-commerce/v3@v3.11.0/payment/application/payment_service_test.go (about) 1 package application_test 2 3 import ( 4 "testing" 5 6 cartDomain "flamingo.me/flamingo-commerce/v3/cart/domain/cart" 7 "flamingo.me/flamingo-commerce/v3/payment/application" 8 "flamingo.me/flamingo-commerce/v3/payment/interfaces" 9 "flamingo.me/flamingo-commerce/v3/payment/interfaces/mocks" 10 "flamingo.me/flamingo-commerce/v3/price/domain" 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestPaymentService_AvailablePaymentGateways(t *testing.T) { 15 ps := application.PaymentService{} 16 ps.Inject(func() map[string]interfaces.WebCartPaymentGateway { 17 return map[string]interfaces.WebCartPaymentGateway{ 18 "gateway-code": &mocks.WebCartPaymentGateway{}, 19 } 20 }) 21 22 assert.Equal(t, map[string]interfaces.WebCartPaymentGateway{ 23 "gateway-code": &mocks.WebCartPaymentGateway{}, 24 }, ps.AvailablePaymentGateways()) 25 } 26 27 func TestPaymentService_PaymentGateway(t *testing.T) { 28 ps := application.PaymentService{} 29 ps.Inject(func() map[string]interfaces.WebCartPaymentGateway { 30 return map[string]interfaces.WebCartPaymentGateway{ 31 "gateway-code": &mocks.WebCartPaymentGateway{}, 32 } 33 }) 34 35 gateway, err := ps.PaymentGateway("non-existing") 36 assert.Nil(t, gateway) 37 assert.EqualError(t, err, "Payment gateway non-existing not found") 38 39 gateway, err = ps.PaymentGateway("gateway-code") 40 assert.Equal(t, &mocks.WebCartPaymentGateway{}, gateway) 41 assert.Nil(t, err) 42 } 43 44 func TestPaymentService_PaymentGatewayByCart(t *testing.T) { 45 ps := application.PaymentService{} 46 ps.Inject(func() map[string]interfaces.WebCartPaymentGateway { 47 return map[string]interfaces.WebCartPaymentGateway{ 48 "gateway-code": &mocks.WebCartPaymentGateway{}, 49 } 50 }) 51 52 // cart without payment selection 53 cart := cartDomain.Cart{} 54 gateway, err := ps.PaymentGatewayByCart(cart) 55 assert.Nil(t, gateway) 56 assert.EqualError(t, err, "PaymentSelection not set") 57 58 // cart with valid payment selection and working gateway 59 cart = cartDomain.Cart{} 60 paymentSelection, _ := cartDomain.NewDefaultPaymentSelection("gateway-code", map[string]string{domain.ChargeTypeMain: "main"}, cart) 61 cart.PaymentSelection = paymentSelection 62 gateway, err = ps.PaymentGatewayByCart(cart) 63 assert.Equal(t, &mocks.WebCartPaymentGateway{}, gateway) 64 assert.Nil(t, err) 65 66 }