package main import ( "bytes" "testing" messages "git.tornberg.me/go-cart-actor/proto" ) func TestAddRequest(t *testing.T) { h, err := GetMessageHandler(AddRequestType) if err != nil { t.Errorf("Error getting message handler: %v\n", err) } if h == nil { t.Errorf("Expected message handler, got nil\n") } message := Message{ Type: AddRequestType, Content: &messages.AddRequest{ Quantity: 2, Sku: "123", }, } var b bytes.Buffer err = h.Write(&message, &b) if err != nil { t.Errorf("Error writing message: %v\n", err) } result, err := h.Read(b.Bytes()) if err != nil { t.Errorf("Error reading message: %v\n", err) } if result == nil { t.Errorf("Expected result, got nil\n") } r, ok := result.(*messages.AddRequest) if !ok { t.Errorf("Expected AddRequest, got %T\n", result) } if r.Quantity != 2 { t.Errorf("Expected quantity 2, got %d\n", r.Quantity) } if r.Sku != "123" { t.Errorf("Expected sku '123', got %s\n", r.Sku) } } func TestItemRequest(t *testing.T) { h, err := GetMessageHandler(AddItemType) if err != nil { t.Errorf("Error getting message handler: %v\n", err) } if h == nil { t.Errorf("Expected message handler, got nil\n") } message := Message{ Type: AddItemType, Content: &messages.AddItem{ Quantity: 2, Sku: "123", Price: 100, Name: "Test item", Image: "test.jpg", }, } var b bytes.Buffer err = h.Write(&message, &b) if err != nil { t.Errorf("Error writing message: %v\n", err) } result, err := h.Read(b.Bytes()) if err != nil { t.Errorf("Error reading message: %v\n", err) } if result == nil { t.Errorf("Expected result, got nil\n") } var r *messages.AddItem ok := h.Is(&message) if !ok { t.Errorf("Expected AddRequest, got %T\n", result) } if r.Quantity != 2 { t.Errorf("Expected quantity 2, got %d\n", r.Quantity) } if r.Sku != "123" { t.Errorf("Expected sku '123', got %s\n", r.Sku) } }