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  }