next-jdbc/test/next/jdbc/datafy_test.clj

50 lines
1.7 KiB
Clojure
Raw Normal View History

2020-05-31 07:19:48 +00:00
;; copyright (c) 2020 Sean Corfield, all rights reserved
(ns next.jdbc.datafy-test
"Tests for the datafy extensions over JDBC types."
2020-05-31 07:19:48 +00:00
(:require [clojure.datafy :as d]
[clojure.set :as set]
[clojure.test :refer [deftest is testing use-fixtures]]
[next.jdbc :as jdbc]
[next.jdbc.datafy]
2020-05-31 07:19:48 +00:00
[next.jdbc.specs :as specs]
[next.jdbc.test-fixtures :refer [with-test-db db ds
2020-05-31 07:19:48 +00:00
derby?]])
(:import (java.sql DatabaseMetaData)))
(set! *warn-on-reflection* true)
(use-fixtures :once with-test-db)
(specs/instrument)
(def ^:private basic-connection-keys
"Generic JDBC Connection fields."
#{:autoCommit :catalog :clientInfo :holdability :metaData
:networkTimeout :schema :transactionIsolation :typeMap :warnings
;; boolean properties
:closed :readOnly
;; added by bean itself
:class})
(deftest connection-datafy-tests
(testing "basic datafication"
(if (derby?)
(is (= #{:exception :cause} ; at least one property not supported
2020-05-31 07:19:48 +00:00
(set (keys (d/datafy (jdbc/get-connection (ds)))))))
(let [data (set (keys (d/datafy (jdbc/get-connection (ds)))))]
(when-let [diff (seq (set/difference data basic-connection-keys))]
(println (:dbtype (db)) (sort diff)))
(is (= basic-connection-keys
(set/intersection basic-connection-keys data))))))
(testing "nav to metadata yields object"
(when-not (derby?)
2020-05-31 07:19:48 +00:00
(is (instance? DatabaseMetaData
(d/nav (d/datafy (jdbc/get-connection (ds)))
:metaData
nil))))))
(deftest database-metadata-datafy-tests)
(deftest result-set-metadata-datafy-tests)