diff options
| -rw-r--r-- | src/weepinbell/webserver/retriever.clj | 5 | ||||
| -rw-r--r-- | test/weepinbell/retriever_test.clj | 8 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/weepinbell/webserver/retriever.clj b/src/weepinbell/webserver/retriever.clj index 5be9e0c..e8b4485 100644 --- a/src/weepinbell/webserver/retriever.clj +++ b/src/weepinbell/webserver/retriever.clj @@ -41,7 +41,7 @@ (mftype= mftype)))) (map last)))) -(defn- paging [page page-size data] +(defn- paging [^Long page ^Long page-size data] (if (nil? page) data (let [pages (vec (partition-all (or page-size default-page-size) @@ -67,6 +67,9 @@ {:pre [(s/keys :req-un [::domain ::path ::page ::page-size ::storage ::mftype])]} [opts] (let [{:keys [domain path page page-size storage mftype]} opts + ;; parse to number if possible, use original if not + page (try (Long/parseLong page) (catch Exception _ page)) + ;; data trasformations data ((:get-by-domain storage path) domain) data (filter-by-mftype mftype data) data (paging page page-size data) diff --git a/test/weepinbell/retriever_test.clj b/test/weepinbell/retriever_test.clj index c4044ed..98102ef 100644 --- a/test/weepinbell/retriever_test.clj +++ b/test/weepinbell/retriever_test.clj @@ -13,6 +13,14 @@ resp1 (ret/by-domain "" 1 mock-store {})]
(is (= page-size (count (:body resp0))))
(is (= page-size (count (:body resp1)))))))
+ (testing "by-domain: if page is a string that can be parsed to number, it should work"
+ (with-redefs [weepinbell.webserver.retriever/default-page-size page-size]
+ (let [mock-data [{:webmention {:source "1" :target "1"}}
+ {:webmention {:source "2" :target "2"}}]
+ mock-store {:get-by-domain (fn [& _] mock-data)}
+ resp0 (ret/by-domain "" "0" mock-store {})
+ resp1 (ret/by-domain "" 0 mock-store {})]
+ (is (= resp0 resp1)))))
(testing "by-domain: if page is not number, return the last page frame"
(with-redefs [weepinbell.webserver.retriever/default-page-size page-size]
(let [mock-data [{:webmention {:source "1" :target "1"}}
|
