Browse Source

Add unit tests for query table sorting

Serves as example for #6892
Gabriel Horner 3 years ago
parent
commit
5914c5ebe5
1 changed files with 52 additions and 0 deletions
  1. 52 0
      src/test/frontend/components/query_table_test.cljs

+ 52 - 0
src/test/frontend/components/query_table_test.cljs

@@ -0,0 +1,52 @@
+(ns frontend.components.query-table-test
+  (:require [clojure.test :refer [deftest testing are]]
+            [frontend.components.query-table :as query-table]))
+
+(deftest sort-result
+  (testing "sort by block content"
+    (are [sort-state result sorted-result]
+         (= (mapv #(hash-map :block/content %) sorted-result)
+            (#'query-table/sort-result (mapv #(hash-map :block/content %) result) sort-state))
+         {:sort-desc? true :sort-by-column :block}
+         ["abc" "cde"]
+         ["cde" "abc"]
+
+         {:sort-desc? false :sort-by-column :block}
+         ["abc" "cde"]
+         ["abc" "cde"]))
+
+  (testing "sort by integer block property"
+    (are [sort-state result sorted-result]
+         (= (mapv #(hash-map :block/properties %) sorted-result)
+            (#'query-table/sort-result (mapv #(hash-map :block/properties %) result) sort-state))
+         {:sort-desc? true :sort-by-column :rating}
+         [{:rating 8} {:rating 7}]
+         [{:rating 8} {:rating 7}]
+
+         {:sort-desc? false :sort-by-column :rating}
+         [{:rating 8} {:rating 7}]
+         [{:rating 7} {:rating 8}]))
+
+  (testing "sort by boolean block property"
+    (are [sort-state result sorted-result]
+         (= (mapv #(hash-map :block/properties %) sorted-result)
+            (#'query-table/sort-result (mapv #(hash-map :block/properties %) result) sort-state))
+         {:sort-desc? true :sort-by-column :funny?}
+         [{:funny? true} {:funny? false}]
+         [{:funny? true} {:funny? false}]
+
+         {:sort-desc? false :sort-by-column :funny?}
+         [{:funny? true} {:funny? false}]
+         [{:funny? false} {:funny? true}]))
+
+  (testing "sort by string block property"
+    (are [sort-state result sorted-result]
+         (= (mapv #(hash-map :block/properties %) sorted-result)
+            (#'query-table/sort-result (mapv #(hash-map :block/properties %) result) sort-state))
+         {:sort-desc? true :sort-by-column :title}
+         [{:title "abc"} {:title "cde"}]
+         [{:title "cde"} {:title "abc"}]
+
+         {:sort-desc? false :sort-by-column :title}
+         [{:title "abc"} {:title "cde"}]
+         [{:title "abc"} {:title "cde"}])))