Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
api.sx — session facade {:ctx :cart}: commerce-add/remove/set-qty/total/
count/lines, commerce-can-add? catalog validation, commerce-explain per-line
audit breakdown, commerce-checkout Phase-3 stub. Completes Phase 1 (catalog +
cart + deterministic totals). Total 66/66 across 4 suites.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
74 lines
1.9 KiB
Plaintext
74 lines
1.9 KiB
Plaintext
;; lib/commerce/tests/api.sx — public commerce session surface.
|
|
;; Uses (commerce-test name got expected) provided by conformance.sh.
|
|
|
|
(define
|
|
acat
|
|
(make-catalog
|
|
(list
|
|
(list "widget" 1000 :standard)
|
|
(list "book" 800 :zero-rated))
|
|
(list (list "widget" :small -200))
|
|
(list)))
|
|
|
|
(define
|
|
arules
|
|
(list
|
|
(list :uk :standard :guest 2000)
|
|
(list :uk :zero-rated :guest 0)))
|
|
|
|
(define actx (make-pricing-context acat arules :uk :guest))
|
|
(define sess0 (commerce-session actx))
|
|
|
|
;; --- empty session ---
|
|
|
|
(commerce-test "new-session-empty" (commerce-cart sess0) empty-cart)
|
|
(commerce-test "new-count" (commerce-count sess0) 0)
|
|
(commerce-test "new-total" (commerce-total sess0) {:subtotal 0 :discounts 0 :total 0 :tax 0})
|
|
|
|
;; --- add + total ---
|
|
|
|
(define
|
|
sess1
|
|
(commerce-add
|
|
(commerce-add sess0 "widget" :small 2)
|
|
"book"
|
|
:none 1))
|
|
|
|
(commerce-test "add-count" (commerce-count sess1) 3)
|
|
(commerce-test
|
|
"add-lines"
|
|
(commerce-lines sess1)
|
|
(list (list "widget" :small 2) (list "book" :none 1)))
|
|
(commerce-test "add-total" (commerce-total sess1) {:subtotal 2400 :discounts 0 :total 2720 :tax 320})
|
|
|
|
;; --- mutate ---
|
|
|
|
(commerce-test
|
|
"set-qty"
|
|
(commerce-lines (commerce-set-qty sess1 "widget" :small 1))
|
|
(list (list "widget" :small 1) (list "book" :none 1)))
|
|
|
|
(commerce-test
|
|
"remove"
|
|
(commerce-lines (commerce-remove sess1 "book" :none))
|
|
(list (list "widget" :small 2)))
|
|
|
|
;; --- validation ---
|
|
|
|
(commerce-test "can-add-yes" (commerce-can-add? sess0 "widget") true)
|
|
(commerce-test "can-add-no" (commerce-can-add? sess0 "ghost") false)
|
|
|
|
;; --- audit breakdown ---
|
|
|
|
(commerce-test
|
|
"explain"
|
|
(commerce-explain sess1)
|
|
(list {:sku "widget" :unit 800 :qty 2 :variant :small :extended 1600 :tax 320} {:sku "book" :unit 800 :qty 1 :variant :none :extended 800 :tax 0}))
|
|
|
|
;; --- checkout stub ---
|
|
|
|
(commerce-test
|
|
"checkout-stub"
|
|
(get (commerce-checkout sess1) :status)
|
|
:not-implemented)
|