Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions lib/canvas/live_events.rb
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,10 @@ def self.discussion_entry_created(entry)
post_event_stringified("discussion_entry_created", get_discussion_entry_data(entry))
end

def self.discussion_entry_updated(entry)
post_event_stringified("discussion_entry_updated", get_discussion_entry_data(entry))
end

def self.discussion_entry_submitted(entry, assignment_id, submission_id)
payload = get_discussion_entry_data(entry)
payload[:assignment_id] = assignment_id unless assignment_id.nil?
Expand Down
2 changes: 2 additions & 0 deletions lib/canvas/live_events_callbacks.rb
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ def self.after_update(obj, changes)
Canvas::LiveEvents.course_syllabus_updated(obj, changes["syllabus_body"].first)
end
Canvas::LiveEvents.course_updated(obj)
when DiscussionEntry
Canvas::LiveEvents.discussion_entry_updated(obj)
when DiscussionTopic
Canvas::LiveEvents.discussion_topic_updated(obj)
when Enrollment
Expand Down
32 changes: 32 additions & 0 deletions spec/lib/canvas/live_events_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1888,6 +1888,38 @@ def settings
end
end

describe ".discussion_entry_updated" do
it "triggers a discussion entry updated live event" do
course_with_student
topic = @course.discussion_topics.create!(title: "test title", message: "test body")
entry = topic.discussion_entries.create!(message: "<p>original</p>", user_id: @student.id)

expect_event("discussion_entry_updated", {
user_id: entry.user_id.to_s,
created_at: entry.created_at,
discussion_entry_id: entry.id.to_s,
discussion_topic_id: entry.discussion_topic_id.to_s,
text: entry.message
}).once

Canvas::LiveEvents.discussion_entry_updated(entry)
end

it "includes parent_discussion_entry_id for nested replies" do
course_with_student
topic = @course.discussion_topics.create!(title: "test title", message: "test body")
parent = topic.discussion_entries.create!(message: "parent", user_id: @student.id)
reply = topic.discussion_entries.create!(message: "reply", user_id: @student.id, parent_id: parent.id)

expect_event("discussion_entry_updated", hash_including(
discussion_entry_id: reply.id.to_s,
parent_discussion_entry_id: parent.id.to_s
)).once

Canvas::LiveEvents.discussion_entry_updated(reply)
end
end

describe ".discussion_entry_submitted" do
context "with non graded discussion" do
it "creates a discussion entry created live event" do
Expand Down
17 changes: 17 additions & 0 deletions spec/observers/live_events_observer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,23 @@
discussion_topic_model(context: @course)
@topic.discussion_entries.create!(message: "entry")
end

it "posts update events" do
course_model
discussion_topic_model(context: @course)
entry = @topic.discussion_entries.create!(message: "entry")
expect(Canvas::LiveEvents).to receive(:discussion_entry_updated).once
entry.message = "edited"
entry.save
end

it "posts update events when soft deleted" do
course_model
discussion_topic_model(context: @course)
entry = @topic.discussion_entries.create!(message: "entry")
expect(Canvas::LiveEvents).to receive(:discussion_entry_updated).once
entry.destroy
end
end

describe "group" do
Expand Down