diff --git a/src/metabase/events/view_log.clj b/src/metabase/events/view_log.clj index 693ee8a4f8114d07bc22795f262c9e6a349b227d..0bf3ab1348979206e7c9731362248ca329d2bf41 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 8cdd71c9b00786aa2a4c5121e2d65ea86e5a8850..0370083b216189e06fda6abee726d852e7e3609c 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 cabd2500e2c3e8070b9853692ef59bf679d5ab76..d9d029de78607c13a0ebf1d258c9d98d0b68356a 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 0000000000000000000000000000000000000000..a73564b3a53dac627853694f48333de8da90248e --- /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]))))