Bladeren bron

Organize testing helpers and namespaces

Start a helper ns and put test specific namespaces under frontend.test.
Gabriel Horner 3 jaren geleden
bovenliggende
commit
a7b230d71d

+ 1 - 1
shadow-cljs.edn

@@ -67,7 +67,7 @@
          :devtools        {:enabled false}
          ;; disable :static-fns to allow for with-redefs and repl development
          :compiler-options {:static-fns false}
-         :main            frontend.node-test-runner/main}
+         :main            frontend.test.node-test-runner/main}
 
   :publishing {:target        :browser
                :module-loader true

+ 0 - 10
src/test/frontend/db/config.cljs

@@ -3,16 +3,6 @@
             [frontend.state :as state]
             [frontend.db.persist :as db-persist]))
 
-(defonce test-db "test-db")
-
-(defn start-test-db!
-  []
-  (conn/start! nil test-db))
-
-(defn destroy-test-db!
-  []
-  (conn/destroy-all!))
-
 (defn destroy-db! [] (conn/destroy-all!))
 
 (defn clear-current-repo []

+ 4 - 9
src/test/frontend/db/model_test.cljs

@@ -1,11 +1,10 @@
 (ns frontend.db.model-test
   (:require [cljs.test :refer [use-fixtures deftest is]]
             [frontend.db.model :as model]
-            [frontend.db.config :as config]
-            [frontend.handler.repo :as repo-handler]))
+            [frontend.test.helper :as test-helper :refer [load-test-files]]))
 
-(defn- load-test-files [files]
-  (repo-handler/parse-files-and-load-to-db! config/test-db files {:re-render? false}))
+(use-fixtures :each {:before test-helper/start-test-db!
+                     :after test-helper/destroy-test-db!})
 
 (deftest get-page-namespace-routes
   (load-test-files [{:file/path "pages/a.b.c.md"
@@ -16,7 +15,7 @@
                      :file/content "baz"}])
 
   (is (= '()
-         (map :block/name (model/get-page-namespace-routes config/test-db "b/c")))
+         (map :block/name (model/get-page-namespace-routes test-helper/test-db "b/c")))
       "Empty if page exists"))
 
 ;; (deftest test-page-alias-with-multiple-alias
@@ -83,8 +82,4 @@
 ;;       1 (count a-ref-blocks)
 ;;       (set ["b" "c"]) (set alias-names))))
 
-(use-fixtures :each
-  {:before config/start-test-db!
-   :after config/destroy-test-db!})
-
 #_(cljs.test/test-ns 'frontend.db.model-test)

+ 1 - 1
src/test/frontend/db/outliner_test.cljs

@@ -3,7 +3,7 @@
             [datascript.core :as d]
             [frontend.core-test :as core-test]
             [frontend.db.outliner :as outliner]
-            [frontend.fixtures :as fixtures]))
+            [frontend.test.fixtures :as fixtures]))
 
 (use-fixtures :each fixtures/reset-db)
 

+ 8 - 13
src/test/frontend/db/query_dsl_test.cljs

@@ -2,30 +2,29 @@
   (:require [cljs.test :refer [are deftest testing use-fixtures is]]
             [clojure.string :as str]
             [frontend.db :as db]
-            [frontend.db.config :refer [test-db] :as config]
             [frontend.db.query-dsl :as query-dsl]
-            [frontend.handler.repo :as repo-handler]))
+            [frontend.test.helper :as test-helper :refer [load-test-files]]))
 
 ;; TODO: quickcheck
 ;; 1. generate query filters
 ;; 2. find illegal queries which can't be executed by datascript
 ;; 3. find filters combinations which might break the current query implementation
 
+(use-fixtures :each {:before test-helper/start-test-db!
+                     :after test-helper/destroy-test-db!})
+
 ;; Test helpers
 ;; ============
-(defn- load-test-files [files]
-  (repo-handler/parse-files-and-load-to-db! test-db files {:re-render? false}))
-
 (defn- dsl-query
   [s]
   (db/clear-query-state!)
-  (when-let [result (query-dsl/query test-db s)]
+  (when-let [result (query-dsl/query test-helper/test-db s)]
     (map first (deref result))))
 
 (defn- custom-query
   [query]
   (db/clear-query-state!)
-  (when-let [result (query-dsl/custom-query test-db query {})]
+  (when-let [result (query-dsl/custom-query test-helper/test-db query {})]
     (map first (deref result))))
 
 (defn- q
@@ -34,7 +33,7 @@
   (let [parse-result (query-dsl/parse s)
         query (:query parse-result)]
     {:query (if (seq query) (vec query) query)
-     :result (query-dsl/query test-db s)}))
+     :result (query-dsl/query test-helper/test-db s)}))
 
 ;; Tests
 ;; =====
@@ -519,15 +518,11 @@ last-modified-at:: 1609084800002"}]]
     ;;            '(1608968448113 1608968448115 1608968448120 1609052958714 1609052974285)))))
     )
 
-(use-fixtures :each
-              {:before config/start-test-db!
-               :after config/destroy-test-db!})
-
 #_(cljs.test/run-tests)
 
 (comment
  (require '[clojure.pprint :as pprint])
- (config/start-test-db!)
+ (test-helper/start-test-db!)
  (load-test-files-with-timestamps)
 
  (query-dsl/query test-db "(task done)")

+ 1 - 1
src/test/frontend/modules/outliner/core_test.cljs

@@ -1,6 +1,6 @@
 (ns frontend.modules.outliner.core-test
   (:require [cljs.test :refer [deftest is use-fixtures testing] :as test]
-            [frontend.fixtures :as fixtures]
+            [frontend.test.fixtures :as fixtures]
             [frontend.modules.outliner.core :as outliner-core]
             [frontend.modules.outliner.datascript :as outliner-ds]
             [frontend.modules.outliner.tree :as tree]

+ 1 - 1
src/test/frontend/modules/outliner/ds_test.cljs

@@ -1,6 +1,6 @@
 (ns frontend.modules.outliner.ds-test
   (:require [cljs.test :refer [deftest is use-fixtures] :as test]
-            [frontend.fixtures :as fixtures]
+            [frontend.test.fixtures :as fixtures]
             [frontend.modules.outliner.datascript :as ds]))
 
 (use-fixtures :each

+ 1 - 1
src/test/frontend/react_test.cljs

@@ -3,7 +3,7 @@
   {:clj-kondo/config {:linters {:inline-def {:level :off}}}}
   (:require [frontend.react :as r]
             [cljs.test :refer [deftest is use-fixtures]]
-            [frontend.fixtures :as fixtures]))
+            [frontend.test.fixtures :as fixtures]))
 
 (use-fixtures :each
   fixtures/react-components)

+ 1 - 1
src/test/frontend/fixtures.cljs → src/test/frontend/test/fixtures.cljs

@@ -1,4 +1,4 @@
-(ns frontend.fixtures
+(ns frontend.test.fixtures
   (:require [datascript.core :as d]
             [frontend.config :as config]
             [frontend.db-schema :as db-schema]

+ 17 - 0
src/test/frontend/test/helper.cljs

@@ -0,0 +1,17 @@
+(ns frontend.test.helper
+  "Common helper fns for tests"
+  (:require [frontend.handler.repo :as repo-handler]
+            [frontend.db.conn :as conn]))
+
+(defonce test-db "test-db")
+
+(defn start-test-db!
+  []
+  (conn/start! nil test-db))
+
+(defn destroy-test-db!
+  []
+  (conn/destroy-all!))
+
+(defn load-test-files [files]
+  (repo-handler/parse-files-and-load-to-db! test-db files {:re-render? false}))

+ 1 - 1
src/test/frontend/node_test_runner.cljs → src/test/frontend/test/node_test_runner.cljs

@@ -1,4 +1,4 @@
-(ns frontend.node-test-runner
+(ns frontend.test.node-test-runner
   "shadow-cljs test runner for :node-test that provides the same test selection
   options as
   https://github.com/cognitect-labs/test-runner#invoke-with-clojure--m-clojuremain.