diff --git a/dev/cljs/user.cljs b/dev/cljs/user.cljs deleted file mode 100644 index 1211f3c..0000000 --- a/dev/cljs/user.cljs +++ /dev/null @@ -1,8 +0,0 @@ -(ns cljs.user - (:require [clojurians-log.core] - [clojurians-log.system :as system])) - -(def go system/go) -(def reset system/reset) -(def stop system/stop) -(def start system/start) diff --git a/dev/user.clj b/dev/user.clj index 061cd12..65bae0e 100644 --- a/dev/user.clj +++ b/dev/user.clj @@ -2,8 +2,6 @@ (:require [clojurians-log.application :as app] [clojurians-log.config :as config :refer [config]] [clojurians-log.repl :as repl] - [figwheel-sidecar.config :as fw-config] - [figwheel-sidecar.system :as fw-sys] [garden-watcher.core :refer [new-garden-watcher]] [lambdaisland.repl-tools.browse-url :as browse-url] [lambdaisland.repl-tools.ring-history :as ring-history] @@ -19,17 +17,12 @@ (alter-var-root #'app/config (constantly config)) (-> (app/prod-system config) (ring-history/inject-ring-history) - (assoc :middleware (new-middleware {:middleware (clojurians-log.config/middleware-stack :dev)}) - :figwheel-system (fw-sys/figwheel-system (fw-config/fetch-config)) - :css-watcher (fw-sys/css-watcher {:watch-paths ["resources/public/css"]}) - :garden-watcher (new-garden-watcher ['clojurians-log.styles]) - #_#_:browse-url (browse-url/new-browse-url-component (str "http://localhost:" (get-in config [:http :port]))))))) + (assoc :garden-watcher (new-garden-watcher ['clojurians-log.styles]) + ;;:browse-url (browse-url/new-browse-url-component (str "http://localhost:" (get-in config [:http :port]))) + )))) (reloaded.repl/set-init! #(dev-system)) -(defn cljs-repl [] - (fw-sys/cljs-repl (:figwheel-system system))) - ;; Set up aliases so they don't accidentally ;; get scrubbed from the namespace declaration (def start reloaded.repl/start) diff --git a/project.clj b/project.clj index a634b90..8638ea3 100644 --- a/project.clj +++ b/project.clj @@ -4,51 +4,46 @@ :license {:name "Mozilla Public License 2.0" :url "https://www.mozilla.org/en-US/MPL/2.0/"} - :dependencies [[org.clojure/clojure "1.9.0"] + :dependencies [[org.clojure/clojure "1.10.1"] [org.clojure/clojurescript "1.9.946" :scope "provided"] - [com.cognitect/transit-clj "0.8.300"] - [ring "1.6.3"] - [ring/ring-defaults "0.3.1"] - [bk/ring-gzip "0.2.1"] + [com.cognitect/transit-clj "0.8.313"] + [ring "1.7.1"] + [ring/ring-defaults "0.3.2"] + [bk/ring-gzip "0.3.0"] [radicalzephyr/ring.middleware.logger "0.6.0"] [clj-logging-config "1.9.12"] - [compojure "1.6.0"] + [compojure "1.6.1"] [environ "1.1.0"] - [com.stuartsierra/component "0.3.2"] - [org.danielsz/system "0.4.2-SNAPSHOT"] - [org.clojure/tools.namespace "0.3.0-alpha4"] - [http-kit "2.3.0-alpha4"] - [re-frame "0.10.3-SNAPSHOT"] - [lambdaisland/garden-watcher "0.3.2"] + [com.stuartsierra/component "0.4.0"] + [org.danielsz/system "0.4.3"] + [org.clojure/tools.namespace "0.3.0"] + [http-kit "2.3.0"] + [lambdaisland/garden-watcher "0.3.3"] [hiccup "2.0.0-alpha1"] [org.clojure/data.json "0.2.6"] - [clojure.java-time "0.3.1"] - [prone "1.1.4"] + [clojure.java-time "0.3.2"] + [prone "1.6.4"] [com.google.guava/guava "23.5-jre"] - [aero "1.1.2"] + [aero "1.1.3"] [lambdaisland/repl-tools "0.1.0"] - [clj-http "3.7.0"] - [org.julienxx/clj-slack "0.5.5"] + [clj-http "3.10.0"] + [org.julienxx/clj-slack "0.6.3"] [reloaded.repl "0.2.4"] - [instaparse "1.4.8"] + [instaparse "1.4.10"] [com.cemerick/url "0.1.1"] [enlive "1.1.6"] - [bidi "2.1.3"]] + [bidi "2.1.6"]] - :plugins [[lein-cljsbuild "1.1.7"] - [lein-environ "1.1.0"]] + :plugins [[lein-environ "1.1.0"]] :min-lein-version "2.6.1" - :source-paths ["src/clj" "src/cljs" "src/cljc"] + :source-paths ["src"] - :test-paths ["test/clj" "test/cljc"] - - :clean-targets ^{:protect false} [:target-path :compile-path "resources/public/js" "dev-target"] + :test-paths ["test"] :uberjar-name "clojurians-log.jar" - ;; Use `lein run` if you just want to start a HTTP server, without figwheel :main clojurians-log.application ;; nREPL by default starts in the :main namespace, we want to start in `user` @@ -56,104 +51,31 @@ ;; (browser-repl) live. :repl-options {:init-ns user} - :cljsbuild {:builds - [{:id "app" - :source-paths ["src/cljs" "src/cljc" "dev"] - - :figwheel {:on-jsload "clojurians-log.system/reset"} - - :compiler {:main cljs.user - :asset-path "js/compiled/out" - :output-to "dev-target/public/js/compiled/clojurians_log.js" - :output-dir "dev-target/public/js/compiled/out" - :source-map-timestamp true}} - - {:id "test" - :source-paths ["src/cljs" "test/cljs" "src/cljc" "test/cljc"] - :compiler {:output-to "dev-target/public/js/compiled/testable.js" - :main clojurians-log.test-runner - :optimizations :none}} - - {:id "min" - :source-paths ["src/cljs" "src/cljc"] - :jar true - :compiler {:main clojurians-log.system - :output-to "resources/public/js/compiled/clojurians_log.js" - :output-dir "target" - :source-map-timestamp true - :optimizations :advanced - :closure-defines {goog.DEBUG false} - :pretty-print false}}]} - - ;; When running figwheel from nREPL, figwheel will read this configuration - ;; stanza, but it will read it without passing through leiningen's profile - ;; merging. So don't put a :figwheel section under the :dev profile, it will - ;; not be picked up, instead configure figwheel here on the top level. - - :figwheel {;; :http-server-root "public" ;; serve static assets from resources/public/ - :server-port 3459 ;; default - ;; :server-ip "127.0.0.1" ;; default - :css-dirs ["resources/public/css"] ;; watch and update CSS - - ;; Start an nREPL server into the running figwheel process. We - ;; don't do this, instead we do the opposite, running figwheel from - ;; an nREPL process, see - ;; https://github.com/bhauman/lein-figwheel/wiki/Using-the-Figwheel-REPL-within-NRepl - ;; :nrepl-port 7888 - - ;; To be able to open files in your editor from the heads up display - ;; you will need to put a script on your path. - ;; that script will have to take a file path and a line number - ;; ie. in ~/bin/myfile-opener - ;; #! /bin/sh - ;; emacsclient -n +$2 $1 - ;; - ;; :open-file-command "myfile-opener" - - :server-logfile "log/figwheel.log"} - - :doo {:build "test"} - - :aliases {"prep" ["do" - #_"compile" - #_["cljsbuild" "once" "min"] - ["run" "-m" "garden-watcher.main" "clojurians-log.styles"]]} + :aliases {"garden" ["run" "-m" "garden-watcher.main" "clojurians-log.styles"] + "test" ["run" "-m" "kaocha.runner"]} :profiles {:dev - {:dependencies [[figwheel "0.5.15-SNAPSHOT"] - [figwheel-sidecar "0.5.15-SNAPSHOT"] - [com.cemerick/piggieback "0.2.2"] - [org.clojure/tools.nrepl "0.2.13"] - [lein-doo "0.1.8"] - [com.datomic/datomic-free "0.9.5656"] - [com.cemerick/pomegranate "1.0.0"] - [vvvvalvalval/scope-capture "0.1.4"] + {:dependencies [[com.datomic/datomic-free "0.9.5697" :exclusions [org.clojure/tools.cli]] + [com.cemerick/pomegranate "1.1.0"] + [vvvvalvalval/scope-capture "0.3.2"] [alembic "0.3.2"] - [cheshire "5.8.0"] - [ring/ring-mock "0.3.2"] - [hickory "0.7.1"]] - - :plugins [[lein-figwheel "0.5.15-SNAPSHOT"] - [lein-doo "0.1.8"] - [com.jakemccrary/lein-test-refresh "0.22.0"]] + [cheshire "5.8.1"] + [ring/ring-mock "0.4.0"] + [hickory "0.7.1"] + [lambdaisland/kaocha "RELEASE"]] - :source-paths ["dev"] - :repl-options {:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}} + :source-paths ["dev"]} :production {:aot :all - :source-paths ^:replace ["src/clj" "src/cljc"] :dependencies [;; Set through .lein/profiles.clj, see ansible scripts ;; [com.datomic/datomic-pro ""] ;; JDBC driver for Datomic+PostgreSQL - [org.postgresql/postgresql "9.3-1102-jdbc41"]]} + [org.postgresql/postgresql "42.2.6"]]} :uberjar - {:source-paths ^:replace ["src/clj" "src/cljc"] - :prep-tasks ["compile" - ["cljsbuild" "once" "min"] - ["run" "-m" "garden-watcher.main" "clojurians-log.styles"]] + {:prep-tasks ["compile" ["run" "-m" "garden-watcher.main" "clojurians-log.styles"]] :hooks [] :omit-source true :aot :all}}) diff --git a/src/clj/clojurians_log/slack_api.clj b/src/clj/clojurians_log/slack_api.clj deleted file mode 100644 index 03eccd8..0000000 --- a/src/clj/clojurians_log/slack_api.clj +++ /dev/null @@ -1,29 +0,0 @@ -(ns clojurians-log.slack-api - (:require [clj-slack.users :as slack-users] - [clj-slack.channels :as slack-channels] - [datomic.api :as d] - [clojurians-log.db.import :as import] - [clojurians-log.application :as cl-app])) - -(defn conn [] - {:api-url "https://slack.com/api" - :token (get-in cl-app/config [:slack :api-token])}) - -(defn users [] - (:members (slack-users/list (conn)))) - -(defn channels [] - (:channels (slack-channels/list (conn)))) - -(defn import-users! - ([conn] - (import-users! conn (users))) - ([conn users] - (doseq [users (partition-all 1000 users)] - @(d/transact conn (mapv import/user->tx users))))) - -(defn import-channels! - ([conn] - (import-channels! conn (channels))) - ([conn channels] - @(d/transact conn (mapv import/channel->tx channels)))) diff --git a/src/cljc/.gitkeep b/src/cljc/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/cljs/.gitkeep b/src/cljs/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/clj/clojurians_log/application.clj b/src/clojurians_log/application.clj similarity index 95% rename from src/clj/clojurians_log/application.clj rename to src/clojurians_log/application.clj index c7b7e8b..93696b0 100644 --- a/src/clj/clojurians_log/application.clj +++ b/src/clojurians_log/application.clj @@ -30,7 +30,7 @@ (fn [request] ((home-routes endpoint) request)))) (component/using [:datomic :config])) - :middleware (new-middleware {:middleware (clojurians-log.config/middleware-stack :prod)}) + :middleware (new-middleware {:middleware clojurians-log.config/middleware-stack}) :handler (-> (new-handler) (component/using [:routes :middleware])) :http (-> (new-web-server (:port http)) diff --git a/src/clj/clojurians_log/components/datomic_schema.clj b/src/clojurians_log/components/datomic_schema.clj similarity index 100% rename from src/clj/clojurians_log/components/datomic_schema.clj rename to src/clojurians_log/components/datomic_schema.clj diff --git a/src/clj/clojurians_log/components/server_info.clj b/src/clojurians_log/components/server_info.clj similarity index 100% rename from src/clj/clojurians_log/components/server_info.clj rename to src/clojurians_log/components/server_info.clj diff --git a/src/clj/clojurians_log/config.clj b/src/clojurians_log/config.clj similarity index 80% rename from src/clj/clojurians_log/config.clj rename to src/clojurians_log/config.clj index bb242f1..fa86a9b 100644 --- a/src/clj/clojurians_log/config.clj +++ b/src/clojurians_log/config.clj @@ -28,15 +28,10 @@ :default-charset "utf-8"}}) (def middleware-stack - {:prod [[wrap-defaults site-defaults] - wrap-with-logger - wrap-gzip - prone/wrap-exceptions] - :dev [[wrap-file "dev-target/public"] - [wrap-defaults site-defaults] - wrap-with-logger - wrap-gzip - prone/wrap-exceptions]}) + [[wrap-defaults site-defaults] + wrap-with-logger + wrap-gzip + prone/wrap-exceptions]) (defn config ([file profile] diff --git a/src/clj/clojurians_log/data.clj b/src/clojurians_log/data.clj similarity index 100% rename from src/clj/clojurians_log/data.clj rename to src/clojurians_log/data.clj diff --git a/src/clj/clojurians_log/db/import.clj b/src/clojurians_log/db/import.clj similarity index 77% rename from src/clj/clojurians_log/db/import.clj rename to src/clojurians_log/db/import.clj index 1a58f6d..d0f7814 100644 --- a/src/clj/clojurians_log/db/import.clj +++ b/src/clojurians_log/db/import.clj @@ -25,18 +25,22 @@ (defmethod event->tx nil [{:keys [ts text channel user thread_ts] :as message}] (when-not (= \D (first channel)) ;; ignore direct messages - (let [inst (time-util/ts->inst ts)] - (cond-> #:message {:key (message-key message) - :ts ts - #_#_:inst (jt/to-java-date inst) - :day (time-util/format-inst-day inst) - :text text - :channel [:channel/slack-id channel] - :user [:user/slack-id user]} + (let [inst (time-util/ts->inst ts) + message #:message {:key (message-key message) + :ts ts + #_#_:inst (jt/to-java-date inst) + :day (time-util/format-inst-day inst) + :text text + :channel [:channel/slack-id channel] + :user [:user/slack-id user]}] - (not (nil? thread_ts)) - (merge #:message {:thread-ts thread_ts - :thread-inst (jt/to-java-date (time-util/ts->inst thread_ts))}))))) + (if (nil? thread_ts) + message + (let [thread-inst (time-util/ts->inst thread_ts)] + (merge message + #:message{:thread-ts thread_ts + :thread-inst (jt/to-java-date thread-inst) + :day (time-util/format-inst-day thread-inst)})))))) (defmethod event->tx "message_deleted" [{:keys [deleted_ts channel] :as message}] [:db.fn/retractEntity [:message/key (message-key {:channel channel :ts deleted_ts})]]) diff --git a/src/clj/clojurians_log/db/queries.clj b/src/clojurians_log/db/queries.clj similarity index 99% rename from src/clj/clojurians_log/db/queries.clj rename to src/clojurians_log/db/queries.clj index 4331670..7a46187 100644 --- a/src/clj/clojurians_log/db/queries.clj +++ b/src/clojurians_log/db/queries.clj @@ -131,6 +131,7 @@ [?chan :channel/slack-id ?slack-id]] db))) +#_ (doseq [v [#'clojurians-log.db.queries/user-names #'clojurians-log.db.queries/channel-thread-messages-of-day #'clojurians-log.db.queries/channel diff --git a/src/clj/clojurians_log/db/schema.clj b/src/clojurians_log/db/schema.clj similarity index 100% rename from src/clj/clojurians_log/db/schema.clj rename to src/clojurians_log/db/schema.clj diff --git a/src/clj/clojurians_log/handlers.clj b/src/clojurians_log/handlers.clj similarity index 100% rename from src/clj/clojurians_log/handlers.clj rename to src/clojurians_log/handlers.clj diff --git a/src/clj/clojurians_log/message_parser.clj b/src/clojurians_log/message_parser.clj similarity index 100% rename from src/clj/clojurians_log/message_parser.clj rename to src/clojurians_log/message_parser.clj diff --git a/src/clj/clojurians_log/repl.clj b/src/clojurians_log/repl.clj similarity index 77% rename from src/clj/clojurians_log/repl.clj rename to src/clojurians_log/repl.clj index 4595f41..7306181 100644 --- a/src/clj/clojurians_log/repl.clj +++ b/src/clojurians_log/repl.clj @@ -56,7 +56,11 @@ (remove #(.isDirectory %)) sort))) -(defn load-log-file! [file] +(defn load-log-file! + "Import a single log file. This assumes all channels and users referenced in the + log file already exist, either by importing directly from Slack (production) + or from EDN files (demo data)." + [file] (println (str file)) (let [msgs (filter #(= (:type %) "message") (data/event-seq file)) events (keep import/event->tx msgs)] @@ -78,40 +82,21 @@ (partition-all 1000))] @(d/transact (conn) users))) @(d/transact (conn) (edn/read-string (slurp (str directory "/channels.edn")))) - (run! load-log-file! (log-files directory))) + (run! load-log-file! (log-files (java.io.File. directory "logs")))) -(defn load-demo-data2! - "Load the demo data (users, channels, messages)." - [directory] - (if-not (conn) - (println "Can't find Datomic connection. Make sure the system is up and running with (user/go).") - (do - (println "Importing users.edn") - (doseq [users (->> "/users.edn" - (str directory) - read-edn - (partition-all 1000))] - (slack/import-users! (conn) users)) - - (println "Importing channels.edn") - (slack/import-channels! (conn) (->> "/channels.edn" - (str directory) - read-edn)) - - (println "Import messages") - (run! load-log-file! (log-files directory))))) - -(defn load-from [date] +(defn load-from + "Load log files starting from a certain date (a string like \"2019-05-20\")" + [date] (->> (log-files) - (drop-while #(not (str/starts-with? (.getName %) date))) + (drop-while #(not (clojure.string/starts-with? (.getName %) date))) (run! load-log-file!))) (comment ;; rlwrap nc localhost 50505 (use 'clojurians-log.repl) (load-slack-data!) - (load-from "2016-08-04") (run! load-log-file! (log-files)) + (load-from "2016-08-04") diff --git a/src/clj/clojurians_log/response.clj b/src/clojurians_log/response.clj similarity index 100% rename from src/clj/clojurians_log/response.clj rename to src/clojurians_log/response.clj diff --git a/src/clj/clojurians_log/routes.clj b/src/clojurians_log/routes.clj similarity index 100% rename from src/clj/clojurians_log/routes.clj rename to src/clojurians_log/routes.clj diff --git a/src/clj/clojurians_log/routes_def.clj b/src/clojurians_log/routes_def.clj similarity index 96% rename from src/clj/clojurians_log/routes_def.clj rename to src/clojurians_log/routes_def.clj index 0659081..54b45f8 100644 --- a/src/clj/clojurians_log/routes_def.clj +++ b/src/clojurians_log/routes_def.clj @@ -8,6 +8,7 @@ (def routes ["/" {"healthcheck" (-> (fn [endpoint req] {:headers {"Content-Type" "text/plain"} + :status 200 :body "OK"}) (bidi/tag :health-check)) diff --git a/src/clojurians_log/slack_api.clj b/src/clojurians_log/slack_api.clj new file mode 100644 index 0000000..5299c78 --- /dev/null +++ b/src/clojurians_log/slack_api.clj @@ -0,0 +1,34 @@ +(ns clojurians-log.slack-api + (:require [clj-slack.users :as slack-users] + [clj-slack.channels :as slack-channels] + [datomic.api :as d] + [clojurians-log.db.queries :as queries] + [clojurians-log.db.import :as import] + [clojurians-log.application :as cl-app])) + +(defn slack-conn [] + {:api-url "https://slack.com/api" + :token (get-in cl-app/config [:slack :api-token])}) + +(defn users [] + (:members (slack-users/list (slack-conn)))) + +(defn channels [] + (:channels (slack-channels/list (slack-conn)))) + +(defn import-users! + ([conn] + (import-users! conn (users))) + ([conn users] + (doseq [users (partition-all 1000 users)] + @(d/transact conn (mapv import/user->tx users))))) + +(defn import-channels! [conn] + (let [channel->db-id (queries/channel-id-map (d/db conn)) + channels (mapv import/channel->tx (channels))] + @(d/transact conn + (mapv (fn [{slack-id :channel/slack-id :as ch}] + (if-let [db-id (channel->db-id slack-id)] + (assoc ch :db/id db-id) + ch)) + channels)))) diff --git a/src/clj/clojurians_log/slack_messages.clj b/src/clojurians_log/slack_messages.clj similarity index 100% rename from src/clj/clojurians_log/slack_messages.clj rename to src/clojurians_log/slack_messages.clj diff --git a/src/clj/clojurians_log/styles.clj b/src/clojurians_log/styles.clj similarity index 100% rename from src/clj/clojurians_log/styles.clj rename to src/clojurians_log/styles.clj diff --git a/src/clj/clojurians_log/time_util.clj b/src/clojurians_log/time_util.clj similarity index 100% rename from src/clj/clojurians_log/time_util.clj rename to src/clojurians_log/time_util.clj diff --git a/src/clj/clojurians_log/views.clj b/src/clojurians_log/views.clj similarity index 100% rename from src/clj/clojurians_log/views.clj rename to src/clojurians_log/views.clj diff --git a/src/cljc/clojurians_log/xml2hiccup.cljc b/src/clojurians_log/xml2hiccup.cljc similarity index 100% rename from src/cljc/clojurians_log/xml2hiccup.cljc rename to src/clojurians_log/xml2hiccup.cljc diff --git a/test/clj/clojurians_log/repl_test.clj b/test/clj/clojurians_log/repl_test.clj deleted file mode 100644 index 96a89b1..0000000 --- a/test/clj/clojurians_log/repl_test.clj +++ /dev/null @@ -1,17 +0,0 @@ -(ns clojurians-log.repl-test - (:require [clojurians-log.repl :as repl] - [clojurians-log.slack-api :as slack] - [clojure.test :refer :all])) - - -(deftest load-slack-data!-test - (testing "it handles renames" - (with-redefs [slack/users (constantly []) - slack/channels (constantly {:id "C03RZGPG1" - :name "announcements" - :creator "U03RZGPFT" - :created 1425231209})] - (repl/load-slack-data!) - ) - - )) diff --git a/test/cljc/.gitkeep b/test/cljc/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/test/cljc/clojurians_log/xml2hiccup_test.cljc b/test/cljc/clojurians_log/xml2hiccup_test.cljc deleted file mode 100644 index 8fe02b6..0000000 --- a/test/cljc/clojurians_log/xml2hiccup_test.cljc +++ /dev/null @@ -1,35 +0,0 @@ -(ns clojurians-log.xml2hiccup-test - (:require [clojure.test :refer [deftest is are testing run-tests run-all-tests]] - [clojurians-log.xml2hiccup :refer [build-tag xml2hiccup]])) - -(deftest build-tag-test - (are [tag attrs tag' attrs'] (= [tag' attrs'] (build-tag tag attrs)) - :div {} :div {} - :div {:id "the-id"} :div#the-id {} - :div {:class "error"} :div.error {} - :div {:class "c1 c2 c3"} :div.c1.c2.c3 {} - :div {:id "id" :class "ccc"} :div#id.ccc {} - :div {:id "id" :class "c" :other-attr "a"} :div#id.c {:other-attr "a"})) - - -(deftest xml2hiccup-test - (are [in out] (= out (xml2hiccup in)) - {:tag :title, :attrs {}, :content '("Hello world")} - [:title "Hello world"] - - "Some string" - "Some string" - - {:tag :div, - :attrs {:class "listings_channels"}, - :content '({:tag :h2, - :attrs {:class "listings_header listings_header_date" - :style "color: red;"}, - :content ("2017-01-02")} - {:tag :h2, :attrs {:class "listings_header"}, :content ("Channels")} - {:tag :ul, :attrs {:class "channel_list"}, :content ()})} - - [:div.listings_channels - [:h2.listings_header.listings_header_date {:style "color: red;"} "2017-01-02"] - [:h2.listings_header "Channels"] - [:ul.channel_list]])) diff --git a/test/cljs/clojurians_log/core_test.cljs b/test/cljs/clojurians_log/core_test.cljs deleted file mode 100644 index 9f7be7d..0000000 --- a/test/cljs/clojurians_log/core_test.cljs +++ /dev/null @@ -1,6 +0,0 @@ -(ns clojurians-log.core-test - (:require-macros [cljs.test :refer (is deftest testing)]) - (:require [cljs.test])) - -(deftest example-passing-test - (is (= 1 1))) diff --git a/test/cljs/clojurians_log/test_runner.cljs b/test/cljs/clojurians_log/test_runner.cljs deleted file mode 100644 index 3cfee40..0000000 --- a/test/cljs/clojurians_log/test_runner.cljs +++ /dev/null @@ -1,10 +0,0 @@ -(ns clojurians-log.test-runner - (:require - [doo.runner :refer-macros [doo-tests]] - [clojurians-log.core-test] - [clojurians-log.common-test])) - -(enable-console-print!) - -(doo-tests 'clojurians-log.core-test - 'clojurians-log.common-test) diff --git a/test/clj/clojurians_log/db/import_test.clj b/test/clojurians_log/db/import_test.clj similarity index 100% rename from test/clj/clojurians_log/db/import_test.clj rename to test/clojurians_log/db/import_test.clj diff --git a/test/clj/clojurians_log/db/queries_test.clj b/test/clojurians_log/db/queries_test.clj similarity index 100% rename from test/clj/clojurians_log/db/queries_test.clj rename to test/clojurians_log/db/queries_test.clj diff --git a/test/clj/clojurians_log/message_parser_test.clj b/test/clojurians_log/message_parser_test.clj similarity index 100% rename from test/clj/clojurians_log/message_parser_test.clj rename to test/clojurians_log/message_parser_test.clj diff --git a/test/clj/clojurians_log/slack_api_test.clj b/test/clojurians_log/slack_api_test.clj similarity index 66% rename from test/clj/clojurians_log/slack_api_test.clj rename to test/clojurians_log/slack_api_test.clj index c438d3c..5a8b627 100644 --- a/test/clj/clojurians_log/slack_api_test.clj +++ b/test/clojurians_log/slack_api_test.clj @@ -1,13 +1,13 @@ (ns clojurians-log.slack-api-test (:require [clojurians-log.slack-api :as slack] [clojurians-log.db.queries :as queries] - [clojurians-log.test-helper :refer [test-conn]] + [clojurians-log.test-helper :as test-helper] [clojure.test :refer :all] [datomic.api :as d])) (deftest import-channels!-test (testing "it handles renames" - (let [conn (test-conn)] + (let [conn (test-helper/test-conn)] (with-redefs [slack/users (constantly [{:id "U03RZGPFT"}]) slack/channels (constantly [{:id "C03RZGPG1" :name "announcements" @@ -16,10 +16,10 @@ (slack/import-users! conn) (slack/import-channels! conn) - (is (= (select-keys (queries/channel (d/db conn) "announcements") - [:channel/slack-id :channel/name]) - {:channel/slack-id "C03RZGPG1" - :channel/name "announcements"}))) + (is (= {:channel/slack-id "C03RZGPG1" + :channel/name "announcements"} + (select-keys (queries/channel (d/db conn) "announcements") + [:channel/slack-id :channel/name])))) (with-redefs [slack/users (constantly [{:id "U03RZGPFT"}]) slack/channels (constantly [{:id "C03RZGPG1" @@ -28,7 +28,7 @@ :created 1425231209}])] (slack/import-channels! conn) - (is (= (select-keys (queries/channel (d/db conn) "admin-announcements") - [:channel/slack-id :channel/name]) - {:channel/slack-id "C03RZGPG1" - :channel/name "admin-announcements"})))))) + (is (= {:channel/slack-id "C03RZGPG1" + :channel/name "admin-announcements"} + (select-keys (queries/channel (d/db conn) "admin-announcements") + [:channel/slack-id :channel/name]))))))) diff --git a/test/clj/clojurians_log/slack_messages_test.clj b/test/clojurians_log/slack_messages_test.clj similarity index 100% rename from test/clj/clojurians_log/slack_messages_test.clj rename to test/clojurians_log/slack_messages_test.clj diff --git a/test/clj/clojurians_log/test_helper.clj b/test/clojurians_log/test_helper.clj similarity index 91% rename from test/clj/clojurians_log/test_helper.clj rename to test/clojurians_log/test_helper.clj index 897795c..b0ad00d 100644 --- a/test/clj/clojurians_log/test_helper.clj +++ b/test/clojurians_log/test_helper.clj @@ -23,14 +23,17 @@ (doseq [tx txs] @(d/transact conn tx))) +(defn test-conn [] + (let [url (str "datomic:mem:" (gensym "test_db"))] + (d/create-database url) + (doto (d/connect url) + transact-schema))) + (defn test-db ([] (test-db "two-channels-two-days")) ([fixture-name] - (let [url (str "datomic:mem:" (gensym "test_db")) - _ (d/create-database url) - conn (d/connect url)] - (transact-schema conn) + (let [conn (test-conn)] (transact-txs conn (slurp-fixture fixture-name)) [conn (d/db conn)]))) diff --git a/test/clj/clojurians_log/views_test.clj b/test/clojurians_log/views_test.clj similarity index 98% rename from test/clj/clojurians_log/views_test.clj rename to test/clojurians_log/views_test.clj index 8eb8eb6..70bbd9a 100644 --- a/test/clj/clojurians_log/views_test.clj +++ b/test/clojurians_log/views_test.clj @@ -37,7 +37,7 @@ ;; TODO Some urls responds quite slowly (around 500ms) (doseq [url urls :let [response (ring-handler (mock/request :get url))]] - (= (:status response) 200))))) + (is (= (:status response) 200) url))))) (deftest log-page-test (let [log-page (-> {:data/date "2018-01-02" diff --git a/tests.edn b/tests.edn new file mode 100644 index 0000000..eb463cd --- /dev/null +++ b/tests.edn @@ -0,0 +1,4 @@ +#kaocha/v1 +{:plugins [:kaocha.plugin/notifier + :kaocha.plugin/print-invocations + :kaocha.plugin/profiling]}