commerce: add CLI and checkout session lifecycle\n\n🤖 Generated with Codebuff\nCo-Authored-By: Codebuff <noreply@codebuff.com>
This commit is contained in:
1 parent
8627f0a26f
commit
cb7967e419
4 files changed
+378
No files matched your search
@@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCommerceCartAddUsesBaseURLAndPayload(t *testing.T) {
|
||||
var gotMethod, gotPath, gotBody string
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
gotMethod, gotPath = r.Method, r.URL.Path
|
||||
b, _ := io.ReadAll(r.Body)
|
||||
gotBody = string(b)
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
_, _ = io.WriteString(w, `{ "id": "cart-1", "items": [] }`)
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
client := newClient(Config{BaseURL: server.URL}, "token", "", 0)
|
||||
var out strings.Builder
|
||||
if err := runCommerceCarts(context.Background(), client, []string{"add", "cart-1", "--sku", "ND10200818HB0001", "--quantity", "2"}, strings.NewReader(""), &out); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if gotMethod != http.MethodPost || gotPath != "/cart/byid/cart-1" {
|
||||
t.Fatalf("request = %s %s, want POST /cart/byid/cart-1", gotMethod, gotPath)
|
||||
}
|
||||
if gotBody != `{"quantity":2,"sku":"ND10200818HB0001"}` {
|
||||
t.Fatalf("body = %s", gotBody)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCommercePromotionUpsertUsesMCPHandshakeAndToolCall(t *testing.T) {
|
||||
var methods []string
|
||||
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
body, _ := io.ReadAll(r.Body)
|
||||
methods = append(methods, string(body))
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
_, _ = io.WriteString(w, `{"jsonrpc":"2.0","id":1,"result":{}}`)
|
||||
}))
|
||||
defer server.Close()
|
||||
|
||||
client := newClient(Config{BaseURL: server.URL}, "token", "", 0)
|
||||
promotion := `{"id":"promo-test","name":"Test","status":"active","conditions":[],"actions":[]}`
|
||||
var out strings.Builder
|
||||
if err := runCommercePromotions(context.Background(), client, []string{"upsert", "--input", "-"}, strings.NewReader(promotion), &out); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(methods) != 3 {
|
||||
t.Fatalf("MCP request count = %d, want 3", len(methods))
|
||||
}
|
||||
if !strings.Contains(methods[0], `"method":"initialize"`) || !strings.Contains(methods[1], `"method":"notifications/initialized"`) || !strings.Contains(methods[2], `"method":"tools/call"`) || !strings.Contains(methods[2], `"name":"upsert_promotion"`) {
|
||||
t.Fatalf("unexpected MCP requests: %v", methods)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user