DatabaseMetaData datafication tests
This commit is contained in:
parent
db95d370d8
commit
0952503860
1 changed files with 60 additions and 15 deletions
|
|
@ -9,7 +9,7 @@
|
||||||
[next.jdbc.datafy]
|
[next.jdbc.datafy]
|
||||||
[next.jdbc.specs :as specs]
|
[next.jdbc.specs :as specs]
|
||||||
[next.jdbc.test-fixtures :refer [with-test-db db ds
|
[next.jdbc.test-fixtures :refer [with-test-db db ds
|
||||||
derby?]])
|
derby? postgres? sqlite?]])
|
||||||
(:import (java.sql DatabaseMetaData)))
|
(:import (java.sql DatabaseMetaData)))
|
||||||
|
|
||||||
(set! *warn-on-reflection* true)
|
(set! *warn-on-reflection* true)
|
||||||
|
|
@ -28,22 +28,67 @@
|
||||||
:class})
|
:class})
|
||||||
|
|
||||||
(deftest connection-datafy-tests
|
(deftest connection-datafy-tests
|
||||||
(testing "basic datafication"
|
(testing "connection datafication"
|
||||||
(if (derby?)
|
(with-open [con (jdbc/get-connection (ds))]
|
||||||
(is (= #{:exception :cause} ; at least one property not supported
|
(if (derby?)
|
||||||
(set (keys (d/datafy (jdbc/get-connection (ds)))))))
|
(is (= #{:exception :cause} ; at least one property not supported
|
||||||
(let [data (set (keys (d/datafy (jdbc/get-connection (ds)))))]
|
(set (keys (d/datafy con)))))
|
||||||
(when-let [diff (seq (set/difference data basic-connection-keys))]
|
(let [data (set (keys (d/datafy con)))]
|
||||||
(println (:dbtype (db)) (sort diff)))
|
(when-let [diff (seq (set/difference data basic-connection-keys))]
|
||||||
(is (= basic-connection-keys
|
(println (:dbtype (db)) :connection (sort diff)))
|
||||||
(set/intersection basic-connection-keys data))))))
|
(is (= basic-connection-keys
|
||||||
|
(set/intersection basic-connection-keys data)))))))
|
||||||
(testing "nav to metadata yields object"
|
(testing "nav to metadata yields object"
|
||||||
(when-not (derby?)
|
(when-not (derby?)
|
||||||
(is (instance? DatabaseMetaData
|
(with-open [con (jdbc/get-connection (ds))]
|
||||||
(d/nav (d/datafy (jdbc/get-connection (ds)))
|
(is (instance? DatabaseMetaData
|
||||||
:metaData
|
(d/nav (d/datafy con) :metaData nil)))))))
|
||||||
nil))))))
|
|
||||||
|
|
||||||
(deftest database-metadata-datafy-tests)
|
(def ^:private basic-database-metadata-keys
|
||||||
|
"Generic JDBC Connection fields."
|
||||||
|
#{:JDBCMajorVersion :JDBCMinorVersion :SQLKeywords :SQLStateType :URL
|
||||||
|
:catalogSeparator :catalogTerm :catalogs
|
||||||
|
:clientInfoProperties :connection
|
||||||
|
:databaseMajorVersion :databaseMinorVersion
|
||||||
|
:databaseProductName :databaseProductVersion
|
||||||
|
:defaultTransactionIsolation
|
||||||
|
:driverMajorVersion :driverMinorVersion :driverName :driverVersion
|
||||||
|
:extraNameCharacters :identifierQuoteString
|
||||||
|
:maxBinaryLiteralLength :maxCatalogNameLength :maxCharLiteralLength
|
||||||
|
:maxColumnNameLength :maxColumnsInGroupBy :maxColumnsInIndex
|
||||||
|
:maxColumnsInOrderBy :maxColumnsInSelect :maxColumnsInTable
|
||||||
|
:maxConnections
|
||||||
|
:maxCursorNameLength :maxIndexLength
|
||||||
|
:maxProcedureNameLength :maxRowSize :maxSchemaNameLength
|
||||||
|
:maxStatementLength :maxStatements :maxTableNameLength
|
||||||
|
:maxTablesInSelect :maxUserNameLength :numericFunctions
|
||||||
|
:procedureTerm :resultSetHoldability :rowIdLifetime
|
||||||
|
:schemaTerm :schemas :searchStringEscape :stringFunctions
|
||||||
|
:systemFunctions :tableTypes :timeDateFunctions
|
||||||
|
:typeInfo :userName
|
||||||
|
;; boolean properties
|
||||||
|
:catalogAtStart :readOnly
|
||||||
|
;; added by bean itself
|
||||||
|
:class})
|
||||||
|
|
||||||
|
(deftest database-metadata-datafy-tests
|
||||||
|
(testing "database metadata datafication"
|
||||||
|
(with-open [con (jdbc/get-connection (ds))]
|
||||||
|
(if (or (postgres?) (sqlite?))
|
||||||
|
(is (= #{:exception :cause} ; at least one property not supported
|
||||||
|
(set (keys (d/datafy (.getMetaData con))))))
|
||||||
|
(let [data (set (keys (d/datafy (.getMetaData con))))]
|
||||||
|
(when-let [diff (seq (set/difference data basic-database-metadata-keys))]
|
||||||
|
(println (:dbtype (db)) :db-meta (sort diff)))
|
||||||
|
(is (= basic-database-metadata-keys
|
||||||
|
(set/intersection basic-database-metadata-keys data)))))))
|
||||||
|
(testing "nav to catalogs yields object"
|
||||||
|
(when-not (or (postgres?) (sqlite?))
|
||||||
|
(with-open [con (jdbc/get-connection (ds))]
|
||||||
|
(let [data (d/datafy (.getMetaData con))]
|
||||||
|
(doseq [k [:catalogs :clientInfoProperties :schemas :tableTypes :typeInfo]]
|
||||||
|
(let [rs (d/nav data k nil)]
|
||||||
|
(is (vector? rs))
|
||||||
|
(is (every? map? rs)))))))))
|
||||||
|
|
||||||
(deftest result-set-metadata-datafy-tests)
|
(deftest result-set-metadata-datafy-tests)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue