update qty
All checks were successful
Build and Publish / BuildAndDeployAmd64 (push) Successful in 27s
Build and Publish / BuildAndDeploy (push) Successful in 2m25s

This commit is contained in:
matst80
2024-11-14 20:35:04 +01:00
parent 352c570f0b
commit 4112666457
3 changed files with 47 additions and 8 deletions

38
api-tests/cart.http Normal file
View File

@@ -0,0 +1,38 @@
### Add item to cart
POST https://cart.tornberg.me/api/12345
Content-Type: application/json
{
"sku": "763281",
"quantity": 1
}
### Update quanity of item in cart
PUT https://cart.tornberg.me/api/12345/1
Content-Type: application/json
{
"quantity": 1
}
### Add item to cart
POST http://localhost:8080/cart/12345/item
Content-Type: application/json
{
"itemId": "67890",
"quantity": 2
}
### Remove item from cart
DELETE http://localhost:8080/cart/12345/item/67890
### Checkout cart
POST http://localhost:8080/cart/12345/checkout
Content-Type: application/json
{
"paymentMethod": "credit_card",
"shippingAddress": "123 Main St, Anytown, USA"
}

View File

@@ -164,14 +164,15 @@ func (s *PoolServer) HandleRemoveDelivery(w http.ResponseWriter, r *http.Request
func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request) error { func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request) error {
id := r.PathValue("id") id := r.PathValue("id")
itemIdString := r.PathValue("itemId")
itemId, err := strconv.Atoi(itemIdString) changeQuantity := messages.ChangeQuantity{}
err := json.NewDecoder(r.Body).Decode(&changeQuantity)
if err != nil { if err != nil {
return err return err
} }
reply, err := s.pool.Process(ToCartId(id), Message{ reply, err := s.pool.Process(ToCartId(id), Message{
Type: ChangeQuantityType, Type: ChangeQuantityType,
Content: &messages.ChangeQuantity{Id: int64(itemId)}, Content: changeQuantity,
}) })
if err != nil { if err != nil {
return err return err
@@ -182,14 +183,14 @@ func (s *PoolServer) HandleQuantityChange(w http.ResponseWriter, r *http.Request
func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request) error { func (s *PoolServer) HandleAddRequest(w http.ResponseWriter, r *http.Request) error {
id := r.PathValue("id") id := r.PathValue("id")
pickupPoint := messages.AddRequest{} addRequest := messages.AddRequest{}
err := json.NewDecoder(r.Body).Decode(&pickupPoint) err := json.NewDecoder(r.Body).Decode(&addRequest)
if err != nil { if err != nil {
return err return err
} }
reply, err := s.pool.Process(ToCartId(id), Message{ reply, err := s.pool.Process(ToCartId(id), Message{
Type: AddRequestType, Type: AddRequestType,
Content: &pickupPoint, Content: &addRequest,
}) })
if err != nil { if err != nil {
return err return err
@@ -203,7 +204,7 @@ func (s *PoolServer) Serve() *http.ServeMux {
mux.HandleFunc("GET /{id}/add/{sku}", ErrorHandler(s.HandleAddSku)) mux.HandleFunc("GET /{id}/add/{sku}", ErrorHandler(s.HandleAddSku))
mux.HandleFunc("POST /{id}", ErrorHandler(s.HandleAddRequest)) mux.HandleFunc("POST /{id}", ErrorHandler(s.HandleAddRequest))
mux.HandleFunc("DELETE /{id}/{itemId}", ErrorHandler(s.HandleDeleteItem)) mux.HandleFunc("DELETE /{id}/{itemId}", ErrorHandler(s.HandleDeleteItem))
mux.HandleFunc("PUT /{id}/{itemId}", ErrorHandler(s.HandleQuantityChange)) mux.HandleFunc("PUT /{id}", ErrorHandler(s.HandleQuantityChange))
mux.HandleFunc("POST /{id}/delivery", ErrorHandler(s.HandleSetDelivery)) mux.HandleFunc("POST /{id}/delivery", ErrorHandler(s.HandleSetDelivery))
mux.HandleFunc("DELETE /{id}/delivery/{deliveryId}", ErrorHandler(s.HandleRemoveDelivery)) mux.HandleFunc("DELETE /{id}/delivery/{deliveryId}", ErrorHandler(s.HandleRemoveDelivery))
mux.HandleFunc("PUT /{id}/delivery/{deliveryId}/pickupPoint", ErrorHandler(s.HandleSetPickupPoint)) mux.HandleFunc("PUT /{id}/delivery/{deliveryId}/pickupPoint", ErrorHandler(s.HandleSetPickupPoint))

View File

@@ -16,7 +16,7 @@ func TestConnection(t *testing.T) {
Id: id, Id: id,
storageMessages: []Message{}, storageMessages: []Message{},
Items: []*CartItem{}, Items: []*CartItem{},
Deliveries: make([]CartDelivery, 0), Deliveries: make([]*CartDelivery, 0),
TotalPrice: 0, TotalPrice: 0,
}, nil }, nil
}) })