From bc6c3ee692aef767f87857afa3c21d71a9d6e5a4 Mon Sep 17 00:00:00 2001 From: matst80 Date: Sun, 10 Nov 2024 22:46:52 +0100 Subject: [PATCH] add stuff --- cart-grain.go | 2 +- cart-grain_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ main.go | 3 +++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 cart-grain_test.go diff --git a/cart-grain.go b/cart-grain.go index 34bee03..9473581 100644 --- a/cart-grain.go +++ b/cart-grain.go @@ -145,7 +145,7 @@ func (c *CartGrain) HandleMessage(message *Message, isReplay bool) ([]byte, erro Price: msg.Price, Image: msg.Image, }) - c.TotalPrice += msg.Price + c.TotalPrice += msg.Price * int64(msg.Quantity) } case RemoveItemType: //msg, ok := message.Content.(*messages.RemoveItem) diff --git a/cart-grain_test.go b/cart-grain_test.go new file mode 100644 index 0000000..50efa19 --- /dev/null +++ b/cart-grain_test.go @@ -0,0 +1,43 @@ +package main + +import ( + "testing" + "time" + + messages "git.tornberg.me/go-cart-actor/proto" +) + +func TestAddToCart(t *testing.T) { + grain, err := spawn(ToCartId("kalle")) + if err != nil { + t.Errorf("Error spawning: %v\n", err) + } + if len(grain.Items) != 0 { + t.Errorf("Expected 0 items, got %d\n", len(grain.Items)) + } + addItem := messages.AddItem{ + Quantity: 2, + Price: 100, + Sku: "123", + Name: "Test item", + Image: "test.jpg", + } + ts := time.Now().Unix() + msg := &Message{ + TimeStamp: &ts, + Type: AddItemType, + Content: &addItem, + } + result, err := grain.HandleMessage(msg, false) + + if err != nil { + t.Errorf("Error handling message: %v\n", err) + } + if len(result) == 0 { + t.Errorf("Expected result, got nil\n") + } + if grain.TotalPrice != 200 { + t.Errorf("Expected total price 200, got %d\n", grain.TotalPrice) + } + +} diff --git a/main.go b/main.go index 3a31d34..d739590 100644 --- a/main.go +++ b/main.go @@ -36,6 +36,9 @@ var ( func spawn(id CartId) (*CartGrain, error) { grainSpawns.Inc() ret := &CartGrain{ + lastItemId: 0, + lastDeliveryId: 0, + Deliveries: []string{}, Id: id, Items: []CartItem{}, storageMessages: []Message{},