Files
ps_shop/internal/http/handlers/cart_test.go
T
2026-05-14 01:56:02 +02:00

83 lines
2.3 KiB
Go

package handlers
import (
"net/http"
"net/http/httptest"
"net/url"
"strings"
"testing"
"github.com/labstack/echo/v4"
pscookie "git.ma-al.com/goc_marek/ps_shop/internal/prestashop/cookie"
)
func TestCartActionFromRequestDefaultsToAdd(t *testing.T) {
e := echo.New()
req := httptest.NewRequest(http.MethodPost, "/cart", strings.NewReader(url.Values{
"id_product": []string{"42"},
}.Encode()))
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationForm)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
if got := cartActionFromRequest(c); got != cartActionAdd {
t.Fatalf("cartActionFromRequest() = %q, want %q", got, cartActionAdd)
}
}
func TestCartActionFromRequestHonorsDeleteFlag(t *testing.T) {
e := echo.New()
req := httptest.NewRequest(http.MethodPost, "/cart", strings.NewReader(url.Values{
"delete": []string{"1"},
"id_product": []string{"42"},
}.Encode()))
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationForm)
rec := httptest.NewRecorder()
c := e.NewContext(req, rec)
if got := cartActionFromRequest(c); got != cartActionDelete {
t.Fatalf("cartActionFromRequest() = %q, want %q", got, cartActionDelete)
}
}
func TestSyncSessionCartIDPreservesChecksumOrder(t *testing.T) {
session := &pscookie.SessionContext{
Values: map[string]string{
"id_lang": "5",
"checksum": "123",
"id_guest": "11",
"id_cart": "",
"id_shop": "1",
"id_guest2": "ignored",
},
OrderedKeys: []string{"id_lang", "id_guest", "checksum"},
RawCookie: "raw",
Plaintext: "plaintext",
}
syncSessionCartID(session, 99)
if session.CartID == nil || *session.CartID != 99 {
t.Fatalf("CartID = %v, want 99", session.CartID)
}
if got := session.Values["id_cart"]; got != "99" {
t.Fatalf("Values[id_cart] = %q, want %q", got, "99")
}
wantOrder := []string{"id_lang", "id_guest", "id_cart", "checksum"}
if len(session.OrderedKeys) != len(wantOrder) {
t.Fatalf("OrderedKeys length = %d, want %d", len(session.OrderedKeys), len(wantOrder))
}
for i, want := range wantOrder {
if got := session.OrderedKeys[i]; got != want {
t.Fatalf("OrderedKeys[%d] = %q, want %q", i, got, want)
}
}
if session.RawCookie != "" {
t.Fatalf("RawCookie = %q, want empty", session.RawCookie)
}
if session.Plaintext != "" {
t.Fatalf("Plaintext = %q, want empty", session.Plaintext)
}
}