2020-05-31 07:19:48 +00:00
|
|
|
;; copyright (c) 2020 Sean Corfield, all rights reserved
|
2020-05-31 06:44:18 +00:00
|
|
|
|
|
|
|
|
(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]
|
2020-05-31 06:44:18 +00:00
|
|
|
[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]
|
2020-05-31 06:44:18 +00:00
|
|
|
[next.jdbc.test-fixtures :refer [with-test-db db ds
|
2020-05-31 07:19:48 +00:00
|
|
|
derby?]])
|
|
|
|
|
(:import (java.sql DatabaseMetaData)))
|
2020-05-31 06:44:18 +00:00
|
|
|
|
|
|
|
|
(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)))))]
|
2020-05-31 06:44:18 +00:00
|
|
|
(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)
|