flamingo.me/flamingo-commerce/v3@v3.11.0/test/integrationtest/projecttest/tests/frontend/testutil_test.go (about) 1 //go:build integration 2 // +build integration 3 4 package frontend_test 5 6 import ( 7 "fmt" 8 "net/http" 9 "testing" 10 11 "github.com/gavv/httpexpect/v2" 12 ) 13 14 type ( 15 // CartItems list of CartItem 16 CartItems []CartItem 17 // CartItem used as simple CartItem representation during test 18 CartItem struct { 19 ProductName string 20 MarketplaceCode string 21 Qty int 22 } 23 ) 24 25 const ( 26 routeCheckoutSubmit = "/en/checkout" 27 routeCheckoutReview = "/en/checkout/review" 28 routeCheckoutPlaceOrder = "/en/checkout/placeorder" 29 routeCheckoutSuccess = "/en/checkout/success" 30 ) 31 32 // CartAddProduct helper 33 func CartAddProduct(t *testing.T, e *httpexpect.Expect, marketplaceCode string, qty int, variantMarketplaceCode string, deliveryCode string) { 34 t.Helper() 35 request := e.POST("/en/cart/add/"+marketplaceCode).WithQuery("qty", qty) 36 if deliveryCode != "" { 37 request = request.WithQuery("deliveryCode", deliveryCode) 38 } 39 if variantMarketplaceCode != "" { 40 request = request.WithQuery("variantMarketplaceCode", variantMarketplaceCode) 41 } 42 request.Expect(). 43 Status(http.StatusOK) 44 } 45 46 // CartApplyVoucher applies a voucher via api 47 func CartApplyVoucher(t *testing.T, e *httpexpect.Expect, code string) { 48 t.Helper() 49 request := e.POST("/en/api/cart/applyvoucher").WithQuery("couponCode", code) 50 request.Expect().Status(http.StatusOK) 51 } 52 53 // CartGetItems testhelper 54 func CartGetItems(t *testing.T, e *httpexpect.Expect) CartItems { 55 t.Helper() 56 var items CartItems 57 58 cartItems := e.GET("/en/cart/").Expect().Status(http.StatusOK).JSON().Object(). 59 Value("DecoratedCart").Object(). 60 Value("Cart").Object(). 61 Value("Deliveries").Array().Value(0).Object(). 62 Value("Cartitems").Array() 63 64 for _, v := range cartItems.Iter() { 65 items = append(items, CartItem{ 66 ProductName: v.Object().Value("ProductName").String().Raw(), 67 Qty: int(v.Object().Value("Qty").Number().Raw()), 68 MarketplaceCode: v.Object().Value("MarketplaceCode").String().Raw(), 69 }) 70 71 } 72 return items 73 } 74 75 // MustContain checks and returns CartItem by marketplaceCode 76 func (c CartItems) MustContain(t *testing.T, marketplaceCode string) *CartItem { 77 t.Helper() 78 for _, v := range c { 79 if v.MarketplaceCode == marketplaceCode { 80 return &v 81 } 82 } 83 t.Fatal(fmt.Sprintf("No CartItem with marketplaceCode: %v Only: %#v", marketplaceCode, c)) 84 return nil 85 } 86 87 // SubmitCheckoutForm sends a POST request to the checkout route with provided form params 88 func SubmitCheckoutForm(t *testing.T, e *httpexpect.Expect, form map[string]interface{}) *httpexpect.Response { 89 t.Helper() 90 return e.POST(routeCheckoutSubmit).WithForm(form).Expect().Status(http.StatusOK) 91 } 92 93 // SubmitReviewForm sends a POST request to the review route with provided form params 94 func SubmitReviewForm(t *testing.T, e *httpexpect.Expect, form map[string]interface{}) *httpexpect.Response { 95 t.Helper() 96 return e.POST(routeCheckoutReview).WithForm(form).Expect().Status(http.StatusOK) 97 }