From 5e025dcc35165bc0ca65b261e91e4d577a7dee17 Mon Sep 17 00:00:00 2001 From: Yee Fay Lim Date: Wed, 30 Mar 2022 21:34:26 -0700 Subject: [PATCH 1/5] Incorporated integration test code from Datahike --- test/datahike_jdbc/core_test.cljc | 177 +++++++++++++----------------- 1 file changed, 75 insertions(+), 102 deletions(-) diff --git a/test/datahike_jdbc/core_test.cljc b/test/datahike_jdbc/core_test.cljc index bd02d98..68fb471 100644 --- a/test/datahike_jdbc/core_test.cljc +++ b/test/datahike_jdbc/core_test.cljc @@ -1,113 +1,86 @@ (ns datahike-jdbc.core-test (:require - #?(:cljs [cljs.test :as t :refer-macros [is are deftest testing]] - :clj [clojure.test :as t :refer [is are deftest testing]]) - [datahike.api :as d] - [datahike-jdbc.core])) + #?(:cljs [cljs.test :as t :refer-macros [is deftest]] + :clj [clojure.test :as t :refer [is deftest]]) + [datahike.api :as d])) -(deftest ^:integration test-postgresql - (let [config {:store {:backend :jdbc - :dbtype "postgresql" - :jdbcUrl "jdbc:postgresql://localhost/config-test?user=alice" - :password "foo"} - :schema-flexibility :read - :keep-history? false} - _ (d/delete-database config)] - (is (not (d/database-exists? config))) - (let [_ (d/create-database config) - conn (d/connect config)] +(defn delete-db [config] + (d/delete-database config) + (is (not (d/database-exists? config)))) - (d/transact conn [{:db/id 1, :name "Ivan", :age 15} - {:db/id 2, :name "Petr", :age 37} - {:db/id 3, :name "Ivan", :age 37} - {:db/id 4, :age 15}]) - (is (= (d/q '[:find ?e :where [?e :name]] @conn) - #{[3] [2] [1]})) +(defn setup [config] + (let [_ (delete-db config) + _ (d/create-database config) + conn (d/connect config)] + (d/transact conn [{:db/ident :name + :db/valueType :db.type/string + :db/cardinality :db.cardinality/one} + {:db/ident :age + :db/valueType :db.type/long + :db/cardinality :db.cardinality/one}]) + (d/transact conn [{:name "Alice", :age 20} + {:name "Bob", :age 30} + {:name "Charlie", :age 40} + {:age 15}]) + (d/release conn))) - (d/release conn) - (is (d/database-exists? config)) - (d/delete-database config) - (is (not (d/database-exists? config)))))) +(defn integration-test + [config] + (let [conn (d/connect config)] + (is (= #{[3 "Alice" 20] [4 "Bob" 30] [5 "Charlie" 40]} + (d/q '[:find ?e ?n ?a + :where + [?e :name ?n] + [?e :age ?a]] + @conn))) + (d/transact conn {:tx-data [{:db/id 3 :age 25}]}) + (is (= #{[5 "Charlie" 40] [4 "Bob" 30] [3 "Alice" 25]} + (d/q {:query '{:find [?e ?n ?a] + :where [[?e :name ?n] + [?e :age ?a]]} + :args [@conn]}))) + (is (= #{[20] [25]} + (d/q '[:find ?a + :where + [?e :name "Alice"] + [?e :age ?a]] + (d/history @conn)))) + (is (= nil (d/release conn))) + (is (d/database-exists? config)) + (delete-db config))) -(deftest ^:integration test-mysql - (let [config {:store {:backend :jdbc - :dbtype "mysql" - :user "alice" - :password "foo" - :dbname "config-test"} - :schema-flexibility :write - :keep-history? false} - _ (d/delete-database config)] - (is (not (d/database-exists? config))) - (let [_ (d/create-database config) - conn (d/connect config)] - (d/transact conn [{:db/ident :name - :db/valueType :db.type/string - :db/cardinality :db.cardinality/one} - {:db/ident :age - :db/valueType :db.type/long - :db/cardinality :db.cardinality/one}]) - (d/transact conn [{:db/id 1, :name "Ivan", :age 15} - {:db/id 2, :name "Petr", :age 37} - {:db/id 3, :name "Ivan", :age 37} - {:db/id 4, :age 15}]) - (is (= (d/q '[:find ?e :where [?e :name]] @conn) - #{[3] [2] [1]})) +(def jdbc-base-config {:store {:backend :jdbc} + :schema-flexibility :write}) - (d/release conn) - (is (d/database-exists? config)) - (d/delete-database config) - (is (not (d/database-exists? config)))))) +(deftest ^:integration test-postgresql [] + (let [config (merge jdbc-base-config + {:store {:dbtype "postgresql" + :jdbcUrl "jdbc:postgresql://localhost/config-test?user=alice" + :password "foo"}})] + (setup config) + (integration-test config))) -(deftest ^:integration test-h2 - (let [config {:store {:backend :jdbc - :dbtype "h2" - :dbname "./temp/db"} - :schema-flexibility :write - :keep-history? false} - _ (d/delete-database config)] - (is (not (d/database-exists? config))) - (let [_ (d/create-database config) - conn (d/connect config)] +(deftest ^:integration test-mysql [] + (let [config (merge jdbc-base-config + {:store {:dbtype "mysql" + :user "alice" + :password "foo" + :dbname "config-test"}})] + (setup config) + (integration-test config))) - (d/transact conn [{:db/ident :name - :db/valueType :db.type/string - :db/cardinality :db.cardinality/one} - {:db/ident :age - :db/valueType :db.type/long - :db/cardinality :db.cardinality/one}]) - (d/transact conn [{:db/id 1, :name "Ivan", :age 15} - {:db/id 2, :name "Petr", :age 37} - {:db/id 3, :name "Ivan", :age 37} - {:db/id 4, :age 15}]) - (is (= (d/q '[:find ?e :where [?e :name]] @conn) - #{[3] [2] [1]})) +(deftest ^:integration test-h2 [] + (let [config (merge jdbc-base-config + {:store {:dbtype "h2" + :dbname "./temp/db"}})] + (setup config) + (integration-test config))) - (d/release conn) - (is (d/database-exists? config)) - (d/delete-database config) - (is (not (d/database-exists? config)))))) +(deftest ^:integration test-env [] + (let [config {:name "test-env"}] + (setup config) + (integration-test config))) -(deftest ^:integration test-env - (let [_ (d/delete-database)] - (is (not (d/database-exists?))) - (let [_ (d/create-database) - conn (d/connect)] - - (d/transact conn [{:db/ident :name - :db/valueType :db.type/string - :db/cardinality :db.cardinality/one} - {:db/ident :age - :db/valueType :db.type/long - :db/cardinality :db.cardinality/one}]) - (d/transact conn [{:db/id 1, :name "Ivan", :age 15} - {:db/id 2, :name "Petr", :age 37} - {:db/id 3, :name "Ivan", :age 37} - {:db/id 4, :age 15}]) - (is (= (d/q '[:find ?e :where [?e :name]] @conn) - #{[3] [2] [1]})) - - (d/release conn) - (is (d/database-exists?)) - (d/delete-database) - (is (not (d/database-exists?)))))) +(comment + (require '[clojure.test :refer [run-tests test-vars]]) + (run-tests)) From c8110fa1c05f7552c3ac6cef849798cec1c6017b Mon Sep 17 00:00:00 2001 From: Yee Fay Lim Date: Sun, 24 Apr 2022 23:39:54 -0700 Subject: [PATCH 2/5] Bug fix: tests spuriously passed because backend value set to default of :mem instead of :jdbc --- test/datahike_jdbc/core_test.cljc | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/test/datahike_jdbc/core_test.cljc b/test/datahike_jdbc/core_test.cljc index 68fb471..10f154a 100644 --- a/test/datahike_jdbc/core_test.cljc +++ b/test/datahike_jdbc/core_test.cljc @@ -2,7 +2,8 @@ (:require #?(:cljs [cljs.test :as t :refer-macros [is deftest]] :clj [clojure.test :as t :refer [is deftest]]) - [datahike.api :as d])) + [datahike.api :as d] + [datahike-jdbc.core])) (defn delete-db [config] (d/delete-database config) @@ -53,26 +54,26 @@ :schema-flexibility :write}) (deftest ^:integration test-postgresql [] - (let [config (merge jdbc-base-config - {:store {:dbtype "postgresql" - :jdbcUrl "jdbc:postgresql://localhost/config-test?user=alice" - :password "foo"}})] + (let [config (update jdbc-base-config :store + merge {:dbtype "postgresql" + :jdbcUrl "jdbc:postgresql://localhost/config-test?user=alice" + :password "foo"})] (setup config) (integration-test config))) (deftest ^:integration test-mysql [] - (let [config (merge jdbc-base-config - {:store {:dbtype "mysql" - :user "alice" - :password "foo" - :dbname "config-test"}})] + (let [config (update jdbc-base-config :store + merge {:dbtype "mysql" + :user "alice" + :password "foo" + :dbname "config-test"})] (setup config) (integration-test config))) (deftest ^:integration test-h2 [] - (let [config (merge jdbc-base-config - {:store {:dbtype "h2" - :dbname "./temp/db"}})] + (let [config (update jdbc-base-config :store + merge {:dbtype "h2" + :dbname "./temp/db"})] (setup config) (integration-test config))) From 5366886094aa7c812eca9c8c951a35a990a68ce9 Mon Sep 17 00:00:00 2001 From: JMassa Date: Fri, 24 Mar 2023 21:10:57 +0100 Subject: [PATCH 3/5] Use datahike's own integration tests --- test/datahike_jdbc/core_test.cljc | 69 ++++--------------------------- 1 file changed, 8 insertions(+), 61 deletions(-) diff --git a/test/datahike_jdbc/core_test.cljc b/test/datahike_jdbc/core_test.cljc index 10f154a..dc76a8c 100644 --- a/test/datahike_jdbc/core_test.cljc +++ b/test/datahike_jdbc/core_test.cljc @@ -1,55 +1,10 @@ (ns datahike-jdbc.core-test (:require - #?(:cljs [cljs.test :as t :refer-macros [is deftest]] - :clj [clojure.test :as t :refer [is deftest]]) - [datahike.api :as d] + #?(:cljs [cljs.test :as t :refer-macros [deftest]] + :clj [clojure.test :as t :refer [deftest]]) + [datahike.integration-test :as dt] [datahike-jdbc.core])) -(defn delete-db [config] - (d/delete-database config) - (is (not (d/database-exists? config)))) - -(defn setup [config] - (let [_ (delete-db config) - _ (d/create-database config) - conn (d/connect config)] - (d/transact conn [{:db/ident :name - :db/valueType :db.type/string - :db/cardinality :db.cardinality/one} - {:db/ident :age - :db/valueType :db.type/long - :db/cardinality :db.cardinality/one}]) - (d/transact conn [{:name "Alice", :age 20} - {:name "Bob", :age 30} - {:name "Charlie", :age 40} - {:age 15}]) - (d/release conn))) - -(defn integration-test - [config] - (let [conn (d/connect config)] - (is (= #{[3 "Alice" 20] [4 "Bob" 30] [5 "Charlie" 40]} - (d/q '[:find ?e ?n ?a - :where - [?e :name ?n] - [?e :age ?a]] - @conn))) - (d/transact conn {:tx-data [{:db/id 3 :age 25}]}) - (is (= #{[5 "Charlie" 40] [4 "Bob" 30] [3 "Alice" 25]} - (d/q {:query '{:find [?e ?n ?a] - :where [[?e :name ?n] - [?e :age ?a]]} - :args [@conn]}))) - (is (= #{[20] [25]} - (d/q '[:find ?a - :where - [?e :name "Alice"] - [?e :age ?a]] - (d/history @conn)))) - (is (= nil (d/release conn))) - (is (d/database-exists? config)) - (delete-db config))) - (def jdbc-base-config {:store {:backend :jdbc} :schema-flexibility :write}) @@ -58,30 +13,22 @@ merge {:dbtype "postgresql" :jdbcUrl "jdbc:postgresql://localhost/config-test?user=alice" :password "foo"})] - (setup config) - (integration-test config))) + (dt/integration-test config))) (deftest ^:integration test-mysql [] (let [config (update jdbc-base-config :store merge {:dbtype "mysql" :user "alice" :password "foo" - :dbname "config-test"})] - (setup config) - (integration-test config))) + :dbname "config-test"})] + (dt/integration-test config))) (deftest ^:integration test-h2 [] (let [config (update jdbc-base-config :store merge {:dbtype "h2" :dbname "./temp/db"})] - (setup config) - (integration-test config))) + (dt/integration-test config))) (deftest ^:integration test-env [] (let [config {:name "test-env"}] - (setup config) - (integration-test config))) - -(comment - (require '[clojure.test :refer [run-tests test-vars]]) - (run-tests)) + (dt/integration-test config))) From dcb1fb32ff63c655fc88b6b960377258cf506102 Mon Sep 17 00:00:00 2001 From: JMassa Date: Fri, 7 Apr 2023 18:35:54 +0200 Subject: [PATCH 4/5] change .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c21b2df..2e9615a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ datahike.mv.db .idea/ datahike-jdbc.iml .clj-kondo/ +.lsp/ From 541c849cf9dcfdc3b3662ff96266a3165d5fb8f6 Mon Sep 17 00:00:00 2001 From: JMassa Date: Fri, 7 Apr 2023 19:02:44 +0200 Subject: [PATCH 5/5] cleanups --- test/datahike_jdbc/core_test.cljc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/datahike_jdbc/core_test.cljc b/test/datahike_jdbc/core_test.cljc index e0211f0..faeadd1 100644 --- a/test/datahike_jdbc/core_test.cljc +++ b/test/datahike_jdbc/core_test.cljc @@ -5,7 +5,7 @@ [datahike.integration-test :as dt] [datahike-jdbc.core])) -(deftest ^:integration test-postgresql [] +(deftest ^:integration test-postgresql (let [config {:store {:backend :jdbc :dbtype "postgresql" :host "localhost" @@ -16,7 +16,7 @@ :keep-history? false}] (dt/integration-test config))) -(deftest ^:integration test-mysql [] +(deftest ^:integration test-mysql (let [config {:store {:backend :jdbc :dbtype "mysql" :user "alice" @@ -26,7 +26,7 @@ :keep-history? false}] (dt/integration-test config))) -(deftest ^:integration test-mssql [] +(deftest ^:integration test-mssql (let [config {:store {:backend :jdbc :dbtype "sqlserver" :user "sa" @@ -36,7 +36,7 @@ :keep-history? false}] (dt/integration-test config))) -(deftest ^:integration test-h2 [] +(deftest ^:integration test-h2 (let [config {:store {:backend :jdbc :dbtype "h2" :dbname "./temp/db"} @@ -44,6 +44,6 @@ :keep-history? false}] (dt/integration-test config))) -(deftest ^:integration test-env [] +(deftest ^:integration test-env (let [config {:name "test-env"}] (dt/integration-test config)))