diff --git a/test/views/sql/test_fixtures.clj b/test/views/sql/test_fixtures.clj index 4f9d3b5..de446db 100644 --- a/test/views/sql/test_fixtures.clj +++ b/test/views/sql/test_fixtures.clj @@ -14,3 +14,20 @@ (defn reset-test-view-system-fixture [f] (reset! test-view-system {}) (f)) + +(def redefs-called (atom {})) + +(defn ->redef-fn + [name & [return-value]] + (fn [& args] + (swap! redefs-called assoc name (vec args)) + return-value)) + +(defn called-with-args? + [fn-name-kw & args] + (= (get @redefs-called fn-name-kw) + (vec args))) + +(defn not-called? + [fn-name-kw] + (not (contains? @redefs-called fn-name-kw))) diff --git a/test/views/sql/vexec_tests.clj b/test/views/sql/vexec_tests.clj index 1cffc1e..f1df75c 100644 --- a/test/views/sql/vexec_tests.clj +++ b/test/views/sql/vexec_tests.clj @@ -7,20 +7,12 @@ [clojure.java.jdbc :as jdbc] [views.core :as views])) -(def redefs-called (atom {})) - -(defn ->redef-fn - [name & [return-value]] - (fn [& args] - (swap! redefs-called assoc name (vec args)) - return-value)) - (defn vexec-redefs-fixture [f] (reset! redefs-called {}) (with-redefs - [jdbc/query (->redef-fn :jdbc/query :jdbc/query-return-value) - jdbc/execute! (->redef-fn :jdbc/execute! :jdbc/execute!-return-value) - views/put-hints! (->redef-fn :views/put-hints!)] + [jdbc/query (->redef-fn :jdbc/query :jdbc/query-return-value) + jdbc/execute! (->redef-fn :jdbc/execute! :jdbc/execute!-return-value) + views/put-hints! (->redef-fn :views/put-hints!)] (f))) @@ -31,32 +23,28 @@ result (vexec! test-view-system test-db sqlvec)] (is (= [test-db sqlvec] (:jdbc/execute! @redefs-called))) (is (= :jdbc/execute!-return-value result)) - (is (= [test-view-system [(views/hint nil #{:example} hint-type)]] - (:views/put-hints! @redefs-called))))) + (is (called-with-args? :views/put-hints! test-view-system [(views/hint nil #{:example} hint-type)])))) (deftest vexec-runs-query-with-returning-clause (let [sqlvec ["INSERT INTO example (field1, field2, field3) VALUES ('test', 'N', NULL) RETURNING *"] result (vexec! test-view-system test-db sqlvec)] (is (= [test-db sqlvec] (:jdbc/query @redefs-called))) (is (= :jdbc/query-return-value result)) - (is (= [test-view-system [(views/hint nil #{:example} hint-type)]] - (:views/put-hints! @redefs-called))))) + (is (called-with-args? :views/put-hints! test-view-system [(views/hint nil #{:example} hint-type)])))) (deftest namespace-is-passed-along-to-hints-via-vexec (let [sqlvec ["INSERT INTO example (field1, field2, field3) VALUES ('test', 'N', NULL)"] result (vexec! test-view-system test-db sqlvec {:namespace :foobar})] (is (= [test-db sqlvec] (:jdbc/execute! @redefs-called))) (is (= :jdbc/execute!-return-value result)) - (is (= [test-view-system [(views/hint :foobar #{:example} hint-type)]] - (:views/put-hints! @redefs-called))))) + (is (called-with-args? :views/put-hints! test-view-system [(views/hint :foobar #{:example} hint-type)])))) (deftest manually-provided-hints-to-vexec-are-passed-to-views-system (let [sqlvec ["INSERT INTO example (field1, field2, field3) VALUES ('test', 'N', NULL)"] result (vexec! test-view-system test-db sqlvec [:foo :bar])] (is (= [test-db sqlvec] (:jdbc/execute! @redefs-called))) (is (= :jdbc/execute!-return-value result)) - (is (= [test-view-system [(views/hint nil #{:foo :bar} hint-type)]] - (:views/put-hints! @redefs-called))))) + (is (called-with-args? :views/put-hints! test-view-system [(views/hint nil #{:foo :bar} hint-type)])))) (deftest manually-provided-hints-to-vexec-also-requires-specifying-returning-option (let [sqlvec ["INSERT INTO example (field1, field2, field3) VALUES ('test', 'N', NULL) RETURNING *"] @@ -65,8 +53,7 @@ ; if jdbc/execute! was really called it would throw an exception since the INSERT query used has a RETURNING clause (is (= [test-db sqlvec] (:jdbc/execute! @redefs-called))) (is (= :jdbc/execute!-return-value result)) - (is (= [test-view-system [(views/hint nil #{:foo :bar} hint-type)]] - (:views/put-hints! @redefs-called)))) + (is (called-with-args? :views/put-hints! test-view-system [(views/hint nil #{:foo :bar} hint-type)]))) ; manually reset some things (reset! redefs-called {}) (reset! query-info-cache {}) @@ -74,5 +61,4 @@ result (vexec! test-view-system test-db sqlvec [:foo :bar] {:returning? true})] (is (= [test-db sqlvec] (:jdbc/query @redefs-called))) (is (= :jdbc/query-return-value result)) - (is (= [test-view-system [(views/hint nil #{:foo :bar} hint-type)]] - (:views/put-hints! @redefs-called))))) + (is (called-with-args? :views/put-hints! test-view-system [(views/hint nil #{:foo :bar} hint-type)])))) diff --git a/test/views/sql/view_test.clj b/test/views/sql/view_test.clj index eb07dba..9970b8e 100644 --- a/test/views/sql/view_test.clj +++ b/test/views/sql/view_test.clj @@ -9,14 +9,6 @@ [clojure.java.jdbc :as jdbc] [views.core :as views])) -(def redefs-called (atom {})) - -(defn ->redef-fn - [name & [return-value]] - (fn [& args] - (swap! redefs-called assoc name (vec args)) - return-value)) - (defn view-redefs-fixture [f] (reset! redefs-called {}) (with-redefs @@ -36,8 +28,7 @@ (is (= true (relevant? sql-view nil [] [(views/hint nil #{:foobar} hint-type)]))) (is (= false (relevant? sql-view nil [] [(views/hint nil #{:baz} hint-type)]))) (is (= :jdbc/query-return-value (data sql-view nil []))) - (is (= [test-db sqlvec {}] - (:jdbc/query @redefs-called))))) + (is (called-with-args? :jdbc/query test-db sqlvec {})))) (deftest basic-sql-view-works-with-parameters (let [sqlvec ["SELECT * FROM foobar"] @@ -45,8 +36,7 @@ sql-view (view :test-view test-db sql-fn)] (is (= true (relevant? sql-view nil [1 2] [(views/hint nil #{:foobar} hint-type)]))) (is (= :jdbc/query-return-value (data sql-view nil [1 2]))) - (is (= [test-db (into sqlvec [1 2]) {}] - (:jdbc/query @redefs-called))))) + (is (called-with-args? :jdbc/query test-db (into sqlvec [1 2]) {})))) (deftest basic-sql-view-works-with-namespace (let [sqlvec ["SELECT * FROM foobar"] @@ -55,8 +45,7 @@ (is (= true (relevant? sql-view :abc [] [(views/hint :abc #{:foobar} hint-type)]))) (is (= false (relevant? sql-view :123 [] [(views/hint :abc #{:foobar} hint-type)]))) (is (= :jdbc/query-return-value (data sql-view nil []))) - (is (= [test-db sqlvec {}] - (:jdbc/query @redefs-called))))) + (is (called-with-args? :jdbc/query test-db sqlvec {})))) (deftest view-db-fn-is-used-when-provided (let [alt-test-db {:alternate-test-db-conn true} @@ -65,8 +54,7 @@ sql-fn (fn [] sqlvec) sql-view (view :test-view db-fn sql-fn)] (is (= :jdbc/query-return-value (data sql-view nil []))) - (is (= [alt-test-db sqlvec {}] - (:jdbc/query @redefs-called))))) + (is (called-with-args? :jdbc/query alt-test-db sqlvec {})))) (deftest view-db-fn-is-passed-namespace (let [test-namespace :test-namespace @@ -78,8 +66,7 @@ sql-fn (fn [] sqlvec) sql-view (view :test-view db-fn sql-fn)] (is (= :jdbc/query-return-value (data sql-view test-namespace []))) - (is (= [alt-test-db sqlvec {}] - (:jdbc/query @redefs-called))))) + (is (called-with-args? :jdbc/query alt-test-db sqlvec {})))) (deftest manually-specified-view-hints-are-used-correctly (with-redefs @@ -92,4 +79,4 @@ (is (= true (relevant? sql-view nil [] [(views/hint nil #{:bar} hint-type)]))) (is (= true (relevant? sql-view nil [] [(views/hint nil #{:bar} hint-type) (views/hint nil #{:foo} hint-type)]))) - (is (not (contains? @redefs-called :query-tables)))))) + (is (not-called? :query-tables)))))