diff --git a/lib/canvas/live_events.rb b/lib/canvas/live_events.rb index b3c4c6592bdca..e94c5a946c032 100644 --- a/lib/canvas/live_events.rb +++ b/lib/canvas/live_events.rb @@ -605,11 +605,12 @@ def self.wiki_page_created(page) }) end - def self.wiki_page_updated(page, old_title, old_body) + def self.wiki_page_updated(page, old_title, old_body, old_workflow_state) payload = { wiki_page_id: page.global_id, title: LiveEvents.truncate(page.title), - body: LiveEvents.truncate(page.body) + body: LiveEvents.truncate(page.body), + workflow_state: page.workflow_state, } if old_title @@ -620,6 +621,10 @@ def self.wiki_page_updated(page, old_title, old_body) payload[:old_body] = LiveEvents.truncate(old_body) end + if old_workflow_state + payload[:old_workflow_state] = old_workflow_state + end + post_event_stringified("wiki_page_updated", payload) end diff --git a/lib/canvas/live_events_callbacks.rb b/lib/canvas/live_events_callbacks.rb index e531b773edbbc..f9765b64d6e80 100644 --- a/lib/canvas/live_events_callbacks.rb +++ b/lib/canvas/live_events_callbacks.rb @@ -130,10 +130,11 @@ def self.after_update(obj, changes) when GroupMembership Canvas::LiveEvents.group_membership_updated(obj) when WikiPage - if changes["title"] || changes["body"] + if changes["title"] || changes["body"] || changes["workflow_state"] Canvas::LiveEvents.wiki_page_updated(obj, changes["title"]&.first, - changes["body"]&.first) + changes["body"]&.first, + changes["workflow_state"]&.first) end when Assignment Canvas::LiveEvents.assignment_updated(obj) diff --git a/spec/lib/canvas/live_events_spec.rb b/spec/lib/canvas/live_events_spec.rb index be5205990fa9b..fe0e19c5df1d2 100644 --- a/spec/lib/canvas/live_events_spec.rb +++ b/spec/lib/canvas/live_events_spec.rb @@ -290,15 +290,21 @@ def body @page = @course.wiki_pages.create(title: "old title", body: "old body") end - def wiki_page_updated - Canvas::LiveEvents.wiki_page_updated(@page, @page.title_changed? ? @page.title_was : nil, @page.body_changed? ? @page.body_was : nil) + def wiki_page_updated(old_workflow_state: nil) + Canvas::LiveEvents.wiki_page_updated( + @page, + @page.title_changed? ? @page.title_was : nil, + @page.body_changed? ? @page.body_was : nil, + old_workflow_state + ) end - it "does not set old_title or old_body if they don't change" do + it "does not set old_title, old_body, or old_workflow_state if they don't change" do expect_event("wiki_page_updated", { wiki_page_id: @page.global_id.to_s, title: "old title", - body: "old body" + body: "old body", + workflow_state: @page.workflow_state }) wiki_page_updated @@ -311,7 +317,8 @@ def wiki_page_updated wiki_page_id: @page.global_id.to_s, title: "new title", old_title: "old title", - body: "old body" + body: "old body", + workflow_state: @page.workflow_state }) wiki_page_updated @@ -324,11 +331,24 @@ def wiki_page_updated wiki_page_id: @page.global_id.to_s, title: "old title", body: "new body", - old_body: "old body" + old_body: "old body", + workflow_state: @page.workflow_state }) wiki_page_updated end + + it "sets old_workflow_state if the workflow_state changed" do + expect_event("wiki_page_updated", { + wiki_page_id: @page.global_id.to_s, + title: "old title", + body: "old body", + workflow_state: @page.workflow_state, + old_workflow_state: "unpublished" + }) + + wiki_page_updated(old_workflow_state: "unpublished") + end end describe ".conversation_forwarded" do diff --git a/spec/observers/live_events_observer_spec.rb b/spec/observers/live_events_observer_spec.rb index e69696ba42858..fc24651496421 100644 --- a/spec/observers/live_events_observer_spec.rb +++ b/spec/observers/live_events_observer_spec.rb @@ -77,14 +77,14 @@ it "posts update events for title" do wiki_page_model(title: "old title") - expect(Canvas::LiveEvents).to receive(:wiki_page_updated).with(@page, "old title", nil) + expect(Canvas::LiveEvents).to receive(:wiki_page_updated).with(@page, "old title", nil, nil) @page.title = "new title" @page.save end it "posts update events for body" do wiki_page_model(body: "old body") - expect(Canvas::LiveEvents).to receive(:wiki_page_updated).with(@page, nil, "old body") + expect(Canvas::LiveEvents).to receive(:wiki_page_updated).with(@page, nil, "old body", nil) @page.body = "new body" @page.save end @@ -106,6 +106,18 @@ expect(Canvas::LiveEvents).to receive(:wiki_page_deleted).once @page.destroy_permanently! end + + it "posts update event when page is published" do + wiki_page_model(workflow_state: "unpublished") + expect(Canvas::LiveEvents).to receive(:wiki_page_updated).with(@page, nil, nil, "unpublished").once + @page.publish! + end + + it "posts update event when page is unpublished" do + wiki_page_model + expect(Canvas::LiveEvents).to receive(:wiki_page_updated).with(@page, nil, nil, "active").once + @page.unpublish! + end end describe "attachment" do