Add infinite-scroll swap integration test

Three tests covering the beforeend pagination pattern: page 1 appends
items with sentinel trigger, page 2 appends more, last page shows
"All items loaded" without sentinel.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-01 18:04:17 +00:00
parent b9d30749f7
commit 601ee7d8ab

View File

@@ -189,6 +189,48 @@
(assert-true (contains? result "first"))
(assert-true (contains? result "second")))))))
(defsuite
"swap:infinite-scroll"
(deftest
"page 1 appends items to container"
(reset-mocks!)
(set! _mock-args {:page "1"})
(let
((page "(div :id \"scroll-items\" (div \"Item 0 — seed\"))")
(response (run-handler handler:ex-scroll)))
(let
((result (sx-swap page "beforeend" "scroll-items" response)))
(do
(assert-true (contains? result "Item 0"))
(assert-true (contains? result "Item 1"))
(assert-true (contains? result "page 1"))
(assert-true (contains? result "scroll-sentinel"))))))
(deftest
"page 2 appends more items"
(reset-mocks!)
(set! _mock-args {:page "2"})
(let
((page "(div :id \"scroll-items\" (div \"page 1 items\"))")
(response (run-handler handler:ex-scroll)))
(let
((result (sx-swap page "beforeend" "scroll-items" response)))
(do
(assert-true (contains? result "page 1 items"))
(assert-true (contains? result "Item 6"))
(assert-true (contains? result "page 2"))))))
(deftest
"last page has no sentinel"
(reset-mocks!)
(set! _mock-args {:page "6"})
(let
((page "(div :id \"scroll-items\")")
(response (run-handler handler:ex-scroll)))
(let
((result (sx-swap page "beforeend" "scroll-items" response)))
(do
(assert-true (contains? result "All items loaded"))
(assert-false (contains? result "scroll-sentinel")))))))
(defsuite
"swap:state-across-calls"
(deftest