diff --git a/web/tests/test-swap-integration.sx b/web/tests/test-swap-integration.sx index 7d780df7..ae83dffb 100644 --- a/web/tests/test-swap-integration.sx +++ b/web/tests/test-swap-integration.sx @@ -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