From b5f9082b5d6cddb46ff8f89996d60c0dd30b7d5c Mon Sep 17 00:00:00 2001 From: Michelle Truong Date: Mon, 30 Mar 2020 11:45:10 -0700 Subject: [PATCH] Add conversation message created live event refs PFS-15497 flag = none Test plan: 1. create a new conversation on canvas with another user 2. create a new message in the conversation by replying 3. verify live event for conversation_message_created has been triggered Change-Id: Idf929eb5398f6040d8a3e45c644481b207858042 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/232152 Tested-by: Service Cloud Jenkins Product-Review: Dan Dickson QA-Review: Aiona Rae Hernandez Reviewed-by: Sean Mikkelsen Reviewed-by: Weston Dransfield --- app/observers/live_events_observer.rb | 1 + lib/canvas/live_events.rb | 9 +++++++++ lib/canvas/live_events_callbacks.rb | 2 ++ spec/lib/canvas/live_events_spec.rb | 16 ++++++++++++++++ spec/observers/live_events_observer_spec.rb | 10 ++++++++++ 5 files changed, 38 insertions(+) diff --git a/app/observers/live_events_observer.rb b/app/observers/live_events_observer.rb index 2028253e55d..dfbbc72f7a8 100644 --- a/app/observers/live_events_observer.rb +++ b/app/observers/live_events_observer.rb @@ -19,6 +19,7 @@ class LiveEventsObserver < ActiveRecord::Observer observe :content_export, :content_migration, :conversation, + :conversation_message, :course, :discussion_entry, :discussion_topic, diff --git a/lib/canvas/live_events.rb b/lib/canvas/live_events.rb index e4bbf657bac..8e24201384e 100644 --- a/lib/canvas/live_events.rb +++ b/lib/canvas/live_events.rb @@ -88,6 +88,15 @@ module Canvas::LiveEvents }) end + def self.conversation_message_created(conversation_message) + post_event_stringified('conversation_message_created', { + author_id: conversation_message.author_id, + conversation_id: conversation_message.conversation_id, + created_at: conversation_message.created_at, + message_id: conversation_message.id + }) + end + def self.discussion_entry_created(entry) post_event_stringified('discussion_entry_created', get_discussion_entry_data(entry)) end diff --git a/lib/canvas/live_events_callbacks.rb b/lib/canvas/live_events_callbacks.rb index a1367e29f6b..0241c0c50a8 100644 --- a/lib/canvas/live_events_callbacks.rb +++ b/lib/canvas/live_events_callbacks.rb @@ -24,6 +24,8 @@ module Canvas::LiveEventsCallbacks Canvas::LiveEvents.course_created(obj) when Conversation Canvas::LiveEvents.conversation_created(obj) + when ConversationMessage + Canvas::LiveEvents.conversation_message_created(obj) when DiscussionEntry Canvas::LiveEvents.discussion_entry_created(obj) when DiscussionTopic diff --git a/spec/lib/canvas/live_events_spec.rb b/spec/lib/canvas/live_events_spec.rb index 51446d68aea..96b313cf44b 100644 --- a/spec/lib/canvas/live_events_spec.rb +++ b/spec/lib/canvas/live_events_spec.rb @@ -271,6 +271,22 @@ describe Canvas::LiveEvents do end end + describe ".conversation_message_created" do + it "should include the author id, conversation message id, and conversation id" do + user1 = user_model + user2 = user_model + convo = Conversation.initiate([user1, user2], false) + convo_message = convo.add_message(user1, 'Hi! You are doing great...') + expect_event('conversation_message_created', + hash_including( + author_id: convo_message.author_id.to_s, + conversation_id: convo_message.conversation_id.to_s, + message_id: convo_message.id.to_s + )).once + Canvas::LiveEvents.conversation_message_created(convo_message) + end + end + describe '.course_grade_change' do before(:once) do @user = User.create! diff --git a/spec/observers/live_events_observer_spec.rb b/spec/observers/live_events_observer_spec.rb index fdc0c0fa900..22984c87797 100644 --- a/spec/observers/live_events_observer_spec.rb +++ b/spec/observers/live_events_observer_spec.rb @@ -115,6 +115,16 @@ describe LiveEventsObserver do end + describe "conversation messsage" do + it "posts conversation message create events" do + expect(Canvas::LiveEvents).to receive(:conversation_message_created).once + user1 = user_model + user2 = user_model + convo = Conversation.initiate([user1, user2], false) + convo.add_message(user1, "create new conversation message") + end + end + describe "course" do it "posts create events" do expect(Canvas::LiveEvents).to receive(:course_created).once