babashka/test/babashka/postgresql_test.clj
2020-05-18 17:08:34 +02:00

41 lines
2 KiB
Clojure

(ns babashka.postgresql-test
(:require [babashka.test-utils :as tu]
[clojure.test :as t :refer [deftest is]])
(:import [com.opentable.db.postgres.embedded EmbeddedPostgres]))
(def db {:dbtype "embedded-postgres"
:port 54322})
(defmethod clojure.test/report :begin-test-var [m]
(println "===" (-> m :var meta :name))
(println))
(defn jdbc-feature-flag? []
(= (System/getenv "BABASHKA_FEATURE_JDBC") "true"))
(defn pg-feature-flag? []
(= (System/getenv "BABASHKA_FEATURE_POSTGRESQL") "true"))
(deftest postgresql-test
(when (= "embedded-postgres" (:dbtype db))
(if (and tu/jvm? (jdbc-feature-flag?) (pg-feature-flag?))
(let [pg-db-instance (-> (EmbeddedPostgres/builder)
(.setPort (:port db))
.start
.getPostgresDatabase
.getConnection)
bb-tests (tu/bb nil
"-e" "(require '[clojure.test :as t :refer [deftest is]])"
"-e" "(require '[next.jdbc :as jdbc])"
"-e" "(require '[next.jdbc.sql :as sql])"
"-e" "(load-file (io/file \"test-resources\" \"babashka\" \"embedded_pg_tests.clj\"))"
"-e" "(require '[embedded-pg-tests :as em-pg])"
"-e" "(def db {:dbtype \"postgres\" :port 54322 :user \"postgres\" :dbname \"postgres\"})"
"-e" "(def expected-query-res [{:foo/foo \"foo\"} {:foo/foo \"bar\"} {:foo/foo \"baz\"}])"
"-e" "(em-pg/wait-for-postgres db)"
"-e" "(em-pg/create-table-test db)"
"-e" "(em-pg/insert-test db)"
"-e" "(is (= expected-query-res (em-pg/query-test db)))")]
(is (= bb-tests "true\n"))
(.close pg-db-instance))
(println "Did not run the pg-tests. Turn on the feature flags to run these tests."))))