examples icon indicating copy to clipboard operation
examples copied to clipboard

No such var: jdbc/with-transaction

Open alexanderursu99 opened this issue 4 years ago • 2 comments

After following this step of the guestbook guide, I get the following when running lein test.

$ lein test
2020-07-14 20:42:51,454 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider 
Syntax error compiling at (guestbook/test/db/core.clj:20:3).
No such var: jdbc/with-transaction

Full report at:
/tmp/clojure-16884464781834444921.edn
Tests failed.

Sample code in the guide has the namespace set like so:

(ns guestbook.test.db.core
  (:require
   [guestbook.db.core :refer [*db*] :as db]
   [luminus-migrations.core :as migrations]
   [clojure.test :refer :all]
   [clojure.java.jdbc :as jdbc]
   [guestbook.config :refer [env]]
   [mount.core :as mount]))

when initially after creating the project with lein new luminus guestbook +h2 +immutant it was originally:

(ns guestbook.test.db.core
  (:require
   [guestbook.db.core :refer [*db*] :as db]
   [java-time.pre-java8]
   [luminus-migrations.core :as migrations]
   [clojure.test :refer :all]
   [next.jdbc :as jdbc]
   [guestbook.config :refer [env]]
   [mount.core :as mount]))

Found that swapping out [clojure.java.jdbc :as jdbc] for [next.jdbc :as jdbc] and leaving out [java-time.pre-java8] seemed to work.

Only issue after that is lein test seems to use guestbook_dev.db instead of guestbook_test.db, where entries to the db during the test are persisted and can be seen afterwards on the webpage when doing a lein run.

Also curious why the db files are not included in the .gitignore.

generated using Luminus version "3.78"

alexanderursu99 avatar Jul 15 '20 00:07 alexanderursu99

Not sure if this issue is better created here or in the luminus-framework/luminus repo.

alexanderursu99 avatar Jul 15 '20 01:07 alexanderursu99

Thanks for the heads up. The guide needs to be updated to use jdbc.next. I'll take a look at doing that. Not sure why lein test ends up using guestbook_dev.db for you. This should be controlled by the db specified in the config. When running lein test then test profile should be used:

:project/test {:jvm-opts ["-Dconf=test-config.edn"]
                  :resource-paths ["env/test/resources"]}

and test-config.edn should have:

{:port 3000
 :database-url "jdbc:h2:./guestbook_test.db"}

I just tried a fresh project locally, and it appears to be working as expected for me.

And adding db files to .gitignore wouldn't hurt.

yogthos avatar Jul 15 '20 01:07 yogthos