Skip to content

Commit ef85ee3

Browse files
brayschJoshBothell
authored andcommitted
Classic quiz with assignment. When creating or updating a quiz question, live event fires. Verified with manual testing using fake kinesis server. Created spec tests for automated testing.
1 parent 65b1059 commit ef85ee3

3 files changed

Lines changed: 70 additions & 0 deletions

File tree

app/observers/live_events_observer.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class LiveEventsObserver < ActiveRecord::Observer
5454
:user,
5555
:wiki_page,
5656
"Quizzes::Quiz",
57+
"Quizzes::QuizQuestion",
5758
"MasterCourses::MasterTemplate",
5859
"MasterCourses::MasterMigration",
5960
"MasterCourses::ChildSubscription",

lib/canvas/live_events_callbacks.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,15 @@ def self.after_create(obj)
4646
Canvas::LiveEvents.group_membership_created(obj)
4747
when WikiPage
4848
Canvas::LiveEvents.wiki_page_created(obj)
49+
when Quizzes::QuizQuestion
50+
quiz = obj.quiz
51+
if quiz
52+
if quiz.assignment
53+
Canvas::LiveEvents.assignment_updated(quiz.assignment)
54+
else
55+
Canvas::LiveEvents.quiz_updated(quiz)
56+
end
57+
end
4958
when Assignment
5059
Canvas::LiveEvents.assignment_created(obj)
5160
when Quizzes::Quiz
@@ -137,6 +146,15 @@ def self.after_update(obj, changes)
137146
changes["title"]&.first,
138147
changes["body"]&.first)
139148
end
149+
when Quizzes::QuizQuestion
150+
quiz = obj.quiz
151+
if quiz
152+
if quiz.assignment
153+
Canvas::LiveEvents.assignment_updated(quiz.assignment)
154+
else
155+
Canvas::LiveEvents.quiz_updated(quiz)
156+
end
157+
end
140158
when Assignment
141159
Canvas::LiveEvents.assignment_updated(obj)
142160
when Quizzes::Quiz

spec/observers/live_events_observer_spec.rb

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,57 @@ def enable_quizzes_next(course)
485485
end
486486
end
487487

488+
describe "quiz_question" do
489+
context "quiz with assignment" do
490+
it "posts assignment_updated when a question is created" do
491+
allow(Canvas::LiveEvents).to receive(:assignment_updated)
492+
quiz_model(quiz_type: "assignment")
493+
assignment = @quiz.reload.assignment
494+
expect(Canvas::LiveEvents).to receive(:assignment_updated).with(assignment)
495+
@quiz.quiz_questions.create!(question_data: { name: "Q1", question_type: "true_false_question", points_possible: 1 })
496+
end
497+
498+
it "posts assignment_updated when a question is updated" do
499+
allow(Canvas::LiveEvents).to receive(:assignment_updated)
500+
quiz_model(quiz_type: "assignment")
501+
question = @quiz.quiz_questions.create!(question_data: { name: "Q1", question_type: "true_false_question", points_possible: 1 })
502+
assignment = @quiz.reload.assignment
503+
expect(Canvas::LiveEvents).to receive(:assignment_updated).with(assignment)
504+
question.update!(question_data: { name: "Q1 updated", question_type: "true_false_question", points_possible: 1 })
505+
end
506+
end
507+
508+
context "quiz without assignment (practice_quiz)" do
509+
before { course_factory }
510+
511+
it "posts quiz_updated when a question is created" do
512+
allow(Canvas::LiveEvents).to receive(:quiz_updated)
513+
quiz = @course.quizzes.create!(title: "Practice Quiz", quiz_type: "practice_quiz")
514+
expect(Canvas::LiveEvents).to receive(:quiz_updated).with(quiz)
515+
quiz.quiz_questions.create!(question_data: { name: "Q1", question_type: "true_false_question", points_possible: 1 })
516+
end
517+
518+
it "posts quiz_updated when a question is updated" do
519+
allow(Canvas::LiveEvents).to receive(:quiz_updated)
520+
quiz = @course.quizzes.create!(title: "Practice Quiz", quiz_type: "practice_quiz")
521+
question = quiz.quiz_questions.create!(question_data: { name: "Q1", question_type: "true_false_question", points_possible: 1 })
522+
expect(Canvas::LiveEvents).to receive(:quiz_updated).with(quiz)
523+
question.update!(question_data: { name: "Q1 updated", question_type: "true_false_question", points_possible: 1 })
524+
end
525+
end
526+
527+
context "quiz without assignment (survey)" do
528+
before { course_factory }
529+
530+
it "posts quiz_updated when a question is created" do
531+
allow(Canvas::LiveEvents).to receive(:quiz_updated)
532+
quiz = @course.quizzes.create!(title: "Survey", quiz_type: "survey")
533+
expect(Canvas::LiveEvents).to receive(:quiz_updated).with(quiz)
534+
quiz.quiz_questions.create!(question_data: { name: "Q1", question_type: "true_false_question", points_possible: 1 })
535+
end
536+
end
537+
end
538+
488539
describe "content_migration_completed" do
489540
it "posts update events" do
490541
expect(Canvas::LiveEvents).to receive(:content_migration_completed).once

0 commit comments

Comments
 (0)