48 lines
1.8 KiB
Clojure
48 lines
1.8 KiB
Clojure
|
|
;; copyright (c) 2019-2020 Sean Corfield, all rights reserved
|
||
|
|
|
||
|
|
(ns next.jdbc.datafy-test
|
||
|
|
"Tests for the datafy extensions over JDBC types."
|
||
|
|
(:require [clojure.core.protocols :as core-p]
|
||
|
|
[clojure.set :as set]
|
||
|
|
[clojure.string :as str]
|
||
|
|
[clojure.test :refer [deftest is testing use-fixtures]]
|
||
|
|
[next.jdbc :as jdbc]
|
||
|
|
[next.jdbc.datafy]
|
||
|
|
[next.jdbc.test-fixtures :refer [with-test-db db ds
|
||
|
|
derby?
|
||
|
|
mssql?]]
|
||
|
|
[next.jdbc.specs :as specs])
|
||
|
|
(:import (java.sql ResultSet)))
|
||
|
|
|
||
|
|
(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
|
||
|
|
(set (keys (core-p/datafy (jdbc/get-connection (ds)))))))
|
||
|
|
(let [data (set (keys (core-p/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?)
|
||
|
|
(is (instance? java.sql.DatabaseMetaData
|
||
|
|
(core-p/nav (core-p/datafy (jdbc/get-connection (ds)))
|
||
|
|
:metaData
|
||
|
|
nil))))))
|