|
@@ -1,22 +1,14 @@
|
|
|
(ns frontend.components.query.result-test
|
|
|
(:require [clojure.test :refer [deftest are testing is]]
|
|
|
- [rum.core :as rum]
|
|
|
- [frontend.db.query-custom :as query-custom]
|
|
|
[frontend.db.model :as model]
|
|
|
[frontend.components.query.result :as query-result]))
|
|
|
|
|
|
-(defn- mock-get-query-result
|
|
|
- "Mocks get-query-result assuming custom queries are being tested. Db calls are
|
|
|
- mocked to minimize setup"
|
|
|
- [result query-m {:keys [table? current-block-uuid config] :or {config {}}}]
|
|
|
- (with-redefs [query-custom/custom-query (constantly (atom result))
|
|
|
- model/with-pages identity]
|
|
|
- (binding [rum/*reactions* (volatile! #{})]
|
|
|
- (#'query-result/get-query-result (assoc config :table? table? :current-block-uuid current-block-uuid
|
|
|
- :*query-error (atom nil))
|
|
|
- query-m))))
|
|
|
+(defn- transform-query-result
|
|
|
+ [config query-m result]
|
|
|
+ (with-redefs [model/with-pages identity]
|
|
|
+ (query-result/transform-query-result config query-m result)))
|
|
|
|
|
|
-(deftest ^:fix-me get-query-result-with-transforms-and-grouping
|
|
|
+(deftest transform-query-result-with-transforms-and-grouping
|
|
|
(let [result (mapv
|
|
|
#(assoc % :block/page {:db/id 1} :block/parent {:db/id 2})
|
|
|
[{:block/uuid (random-uuid) :block/scheduled 20230418}
|
|
@@ -25,63 +17,63 @@
|
|
|
sorted-result (sort-by :block/scheduled result)]
|
|
|
(testing "For list view"
|
|
|
(are [query-m expected]
|
|
|
- (= expected (mock-get-query-result result query-m {:table? false}))
|
|
|
+ (= expected (transform-query-result {:table? false} query-m result))
|
|
|
|
|
|
- ;; Default list behavior is to group result
|
|
|
+ ;; Default list behavior is to group result
|
|
|
{}
|
|
|
{{:db/id 1} result}
|
|
|
|
|
|
- ;; User overrides default behavior to return result
|
|
|
+ ;; User overrides default behavior to return result
|
|
|
{:group-by-page? false}
|
|
|
result
|
|
|
|
|
|
- ;; Return transformed result for list view
|
|
|
+ ;; Return transformed result for list view
|
|
|
{:result-transform '(partial sort-by :block/scheduled)}
|
|
|
sorted-result
|
|
|
|
|
|
- ; User overrides transform to return grouped result
|
|
|
+ ; User overrides transform to return grouped result
|
|
|
{:result-transform '(partial sort-by :block/scheduled) :group-by-page? true}
|
|
|
{{:db/id 1} sorted-result})
|
|
|
|
|
|
(testing "For table view"
|
|
|
(are [query expected]
|
|
|
- (= expected (mock-get-query-result result query {:table? true}))
|
|
|
+ (= expected (transform-query-result {:table? true} query result))
|
|
|
|
|
|
- ;; Default table behavior is to return result
|
|
|
+ ;; Default table behavior is to return result
|
|
|
{}
|
|
|
result
|
|
|
|
|
|
- ;; Return transformed result
|
|
|
+ ;; Return transformed result
|
|
|
{:result-transform '(partial sort-by :block/scheduled)}
|
|
|
sorted-result
|
|
|
|
|
|
- ;; Ignore override and return normal result
|
|
|
+ ;; Ignore override and return normal result
|
|
|
{:group-by-page? true}
|
|
|
result))
|
|
|
|
|
|
(testing "current block in results"
|
|
|
(is (= result
|
|
|
(let [current-block {:block/uuid (random-uuid) :block/scheduled 20230420 :block/page {:db/id 1}}]
|
|
|
- (mock-get-query-result (conj result current-block)
|
|
|
- {:group-by-page? false}
|
|
|
- {:table? false
|
|
|
- :current-block-uuid (:block/uuid current-block)})))
|
|
|
+ (transform-query-result {:table? false
|
|
|
+ :current-block-uuid (:block/uuid current-block)}
|
|
|
+ {:group-by-page? false}
|
|
|
+ (conj result current-block))))
|
|
|
"Current block is not included in results")))))
|
|
|
|
|
|
-(deftest ^:fix-me get-query-result-with-remove-block-children-option
|
|
|
+(deftest transform-query-result-with-remove-block-children-option
|
|
|
(let [result [{:db/id 1 :block/title "parent" :block/uuid 1}
|
|
|
{:db/id 2 :block/title "child" :block/uuid 2 :block/parent {:db/id 1}}]]
|
|
|
(is (= [{:db/id 1 :block/title "parent" :block/uuid 1}]
|
|
|
- (mock-get-query-result result {:remove-block-children? true} {:table? true}))
|
|
|
+ (transform-query-result {:table? true} {:remove-block-children? true} result))
|
|
|
"Removes children when :remove-block-children? is true")
|
|
|
(is (= result
|
|
|
- (mock-get-query-result result {:remove-block-children? false} {:table? true}))
|
|
|
+ (transform-query-result {:table? true} {:remove-block-children? false} result))
|
|
|
"Doesn't remove children when :remove-block-children? is false")))
|
|
|
|
|
|
-(deftest ^:fix-me get-query-result-sets-result-in-config
|
|
|
+(deftest transform-query-result-sets-result-in-config
|
|
|
(let [result [{:db/id 1 :block/title "parent" :block/uuid 1}]
|
|
|
- config {:query-result (atom nil)}]
|
|
|
+ config {:query-result (atom nil) :table? true}]
|
|
|
(is (= result
|
|
|
- (mock-get-query-result result {} {:table? true :config config})))
|
|
|
+ (transform-query-result config {} result)))
|
|
|
(is (= result @(:query-result config))
|
|
|
"Result is set in config for downstream use e.g. query table fn")))
|