From 8e808c247202654febfccda215f8cf70626f31a2 Mon Sep 17 00:00:00 2001 From: Allen Gilliland <agilliland@gmail.com> Date: Thu, 10 Sep 2015 17:43:22 -0700 Subject: [PATCH] more unit testing. this time for the view_log event processing code. --- src/metabase/events/view_log.clj | 2 +- src/metabase/models/user.clj | 2 + test/metabase/events/activity_feed_test.clj | 3 -- test/metabase/events/view_log_test.clj | 59 +++++++++++++++++++++ 4 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 test/metabase/events/view_log_test.clj diff --git a/src/metabase/events/view_log.clj b/src/metabase/events/view_log.clj index 693ee8a4f81..0bf3ab13489 100644 --- a/src/metabase/events/view_log.clj +++ b/src/metabase/events/view_log.clj @@ -49,7 +49,7 @@ [object] (or (:actor_id object) (:user_id object) (:creator_id object))) -(defn- process-view-count-event +(defn process-view-count-event "Handle processing for a single event notification received on the view-counts-channel" [event] ;; try/catch here to prevent individual topic processing exceptions from bubbling up. better to handle them here. diff --git a/src/metabase/models/user.clj b/src/metabase/models/user.clj index 8cdd71c9b00..0370083b216 100644 --- a/src/metabase/models/user.clj +++ b/src/metabase/models/user.clj @@ -47,6 +47,8 @@ (pre-cascade-delete [_ {:keys [id]}] (cascade-delete 'Session :user_id id) + (cascade-delete 'Dashboard :creator_id id) + (cascade-delete 'Card :creator_id id) (cascade-delete 'Activity :user_id id))) diff --git a/test/metabase/events/activity_feed_test.clj b/test/metabase/events/activity_feed_test.clj index cabd2500e2c..d9d029de786 100644 --- a/test/metabase/events/activity_feed_test.clj +++ b/test/metabase/events/activity_feed_test.clj @@ -14,8 +14,6 @@ [metabase.test.util :refer [expect-eval-actual-first with-temp random-name]] [metabase.test-setup :refer :all])) -(test-startup) - ;; TODO - we can simplify the cleanup work we do by using the :in-context :expectations-options ;; the only downside is that it then runs the annotated function on ALL tests :/ @@ -240,7 +238,6 @@ :model_id user-id :details {}} (do - (println "vals" user-id session-id session) (k/delete Activity) (process-activity-event {:topic :user-login :item {:user_id user-id diff --git a/test/metabase/events/view_log_test.clj b/test/metabase/events/view_log_test.clj new file mode 100644 index 00000000000..a73564b3a53 --- /dev/null +++ b/test/metabase/events/view_log_test.clj @@ -0,0 +1,59 @@ +(ns metabase.events.view-log-test + (:require [expectations :refer :all] + [korma.core :as k] + [metabase.db :as db] + [metabase.events.view-log :refer :all] + (metabase.models [user :refer [User]] + [view-log :refer [ViewLog]]) + [metabase.test.data :refer :all] + [metabase.test.util :refer [expect-eval-actual-first with-temp random-name]] + [metabase.test-setup :refer :all])) + + +(defn- create-test-user [] + (let [rand-name (random-name)] + (db/ins User + :email (str rand-name "@metabase.com") + :first_name rand-name + :last_name rand-name + :password rand-name))) + + +;; `:card-create` event +(expect-let [{user-id :id} (create-test-user) + card {:id 1234 + :creator_id user-id}] + {:user_id user-id + :model "card" + :model_id (:id card)} + (do + (process-view-count-event {:topic :card-create + :item card}) + (-> (db/sel :one ViewLog :user_id user-id) + (select-keys [:user_id :model :model_id])))) + +;; `:card-read` event +(expect-let [{user-id :id} (create-test-user) + card {:id 1234 + :actor_id user-id}] + {:user_id user-id + :model "card" + :model_id (:id card)} + (do + (process-view-count-event {:topic :card-read + :item card}) + (-> (db/sel :one ViewLog :user_id user-id) + (select-keys [:user_id :model :model_id])))) + +;; `:dashboard-read` event +(expect-let [{user-id :id} (create-test-user) + dashboard {:id 1234 + :actor_id user-id}] + {:user_id user-id + :model "dashboard" + :model_id (:id dashboard)} + (do + (process-view-count-event {:topic :dashboard-read + :item dashboard}) + (-> (db/sel :one ViewLog :user_id user-id) + (select-keys [:user_id :model :model_id])))) -- GitLab