223 lines
5.3 KiB
Go
223 lines
5.3 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
messages "git.tornberg.me/go-cart-actor/proto"
|
|
)
|
|
|
|
func GetMessage(t uint16, data interface{}) *Message {
|
|
ts := time.Now().Unix()
|
|
return &Message{
|
|
TimeStamp: &ts,
|
|
Type: t,
|
|
Content: data,
|
|
}
|
|
}
|
|
|
|
func TestAddToCartShortCut(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))
|
|
}
|
|
msg := GetMessage(AddItemType, &messages.AddItem{
|
|
Quantity: 2,
|
|
Price: 100,
|
|
Sku: "123",
|
|
Name: "Test item",
|
|
Image: "test.jpg",
|
|
})
|
|
|
|
_, err = grain.HandleMessage(msg, false)
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if len(grain.Items) != 1 {
|
|
t.Errorf("Expected 1 item, got %d\n", len(grain.Items))
|
|
}
|
|
if grain.Items[0].Quantity != 2 {
|
|
t.Errorf("Expected quantity 2, got %d\n", grain.Items[0].Quantity)
|
|
}
|
|
if len(grain.storageMessages) != 1 {
|
|
t.Errorf("Expected 1 storage message, got %d\n", len(grain.storageMessages))
|
|
}
|
|
shortCutMessage := GetMessage(AddRequestType, &messages.AddRequest{
|
|
Quantity: 2,
|
|
Sku: "123",
|
|
})
|
|
_, err = grain.HandleMessage(shortCutMessage, false)
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if len(grain.Items) != 1 {
|
|
t.Errorf("Expected 1 item, got %d\n", len(grain.Items))
|
|
}
|
|
if len(grain.storageMessages) != 2 {
|
|
t.Errorf("Expected 2 storage message, got %d\n", len(grain.storageMessages))
|
|
}
|
|
if grain.storageMessages[0].Type != AddItemType {
|
|
t.Errorf("Expected AddItemType, got %d\n", grain.storageMessages[0].Type)
|
|
}
|
|
if grain.storageMessages[1].Type != AddRequestType {
|
|
t.Errorf("Expected AddRequestType, got %d\n", grain.storageMessages[1].Type)
|
|
}
|
|
}
|
|
|
|
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))
|
|
}
|
|
msg := GetMessage(AddItemType, &messages.AddItem{
|
|
Quantity: 2,
|
|
Price: 100,
|
|
Sku: "123",
|
|
Name: "Test item",
|
|
Image: "test.jpg",
|
|
})
|
|
|
|
result, err := grain.HandleMessage(msg, false)
|
|
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if result.StatusCode != 200 {
|
|
t.Errorf("Call failed\n")
|
|
}
|
|
if grain.TotalPrice != 200 {
|
|
t.Errorf("Expected total price 200, got %d\n", grain.TotalPrice)
|
|
}
|
|
if len(grain.Items) != 1 {
|
|
t.Errorf("Expected 1 item, got %d\n", len(grain.Items))
|
|
}
|
|
if grain.Items[0].Quantity != 2 {
|
|
t.Errorf("Expected quantity 2, got %d\n", grain.Items[0].Quantity)
|
|
}
|
|
result, err = grain.HandleMessage(msg, false)
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if result.StatusCode != 200 {
|
|
t.Errorf("Call failed\n")
|
|
}
|
|
if grain.Items[0].Quantity != 4 {
|
|
t.Errorf("Expected quantity 4, got %d\n", grain.Items[0].Quantity)
|
|
}
|
|
if grain.TotalPrice != 400 {
|
|
t.Errorf("Expected total price 400, got %d\n", grain.TotalPrice)
|
|
}
|
|
}
|
|
|
|
func TestSetDelivery(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))
|
|
}
|
|
msg := GetMessage(AddItemType, &messages.AddItem{
|
|
Quantity: 2,
|
|
Price: 100,
|
|
Sku: "123",
|
|
Name: "Test item",
|
|
Image: "test.jpg",
|
|
})
|
|
|
|
grain.HandleMessage(msg, false)
|
|
|
|
msg = GetMessage(AddItemType, &messages.AddItem{
|
|
Quantity: 2,
|
|
Price: 100,
|
|
Sku: "123",
|
|
Name: "Test item",
|
|
Image: "test.jpg",
|
|
})
|
|
|
|
result, err := grain.HandleMessage(msg, false)
|
|
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if result.StatusCode != 200 {
|
|
t.Errorf("Call failed\n")
|
|
}
|
|
|
|
setDelivery := GetMessage(SetDeliveryType, &messages.SetDelivery{
|
|
Provider: "test",
|
|
Items: []int64{1},
|
|
})
|
|
|
|
_, err = grain.HandleMessage(setDelivery, false)
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if len(grain.Deliveries) != 1 {
|
|
t.Errorf("Expected 1 delivery, got %d\n", len(grain.Deliveries))
|
|
}
|
|
if len(grain.Deliveries[0].Items) != 1 {
|
|
t.Errorf("Expected 1 items in delivery, got %d\n", len(grain.Deliveries[0].Items))
|
|
}
|
|
}
|
|
|
|
func TestSetDeliveryOnAll(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))
|
|
}
|
|
msg := GetMessage(AddItemType, &messages.AddItem{
|
|
Quantity: 2,
|
|
Price: 100,
|
|
Sku: "123",
|
|
Name: "Test item",
|
|
Image: "test.jpg",
|
|
})
|
|
|
|
grain.HandleMessage(msg, false)
|
|
|
|
msg = GetMessage(AddItemType, &messages.AddItem{
|
|
Quantity: 2,
|
|
Price: 100,
|
|
Sku: "1233",
|
|
Name: "Test item2",
|
|
Image: "test.jpg",
|
|
})
|
|
|
|
result, err := grain.HandleMessage(msg, false)
|
|
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if result.StatusCode != 200 {
|
|
t.Errorf("Call failed\n")
|
|
}
|
|
|
|
setDelivery := GetMessage(SetDeliveryType, &messages.SetDelivery{
|
|
Provider: "test",
|
|
Items: []int64{},
|
|
})
|
|
|
|
_, err = grain.HandleMessage(setDelivery, false)
|
|
if err != nil {
|
|
t.Errorf("Error handling message: %v\n", err)
|
|
}
|
|
if len(grain.Deliveries) != 1 {
|
|
t.Errorf("Expected 1 delivery, got %d\n", len(grain.Deliveries))
|
|
}
|
|
|
|
if len(grain.Deliveries[0].Items) != 2 {
|
|
t.Errorf("Expected 2 items in delivery, got %d\n", len(grain.Deliveries[0].Items))
|
|
}
|
|
|
|
}
|