Update PacePlanModuleItem to verify module_item assignment

fixes LS-2772
flag=pace_plans

test plan:
- Create a course with a module containing a variety of things. Make sure
some are graded assignments like a graded discussion and some are not
graded like a practice quiz or a wiki page.
- Go to the pace plans index and verify that the module items shown only
include assignments from the modules that can be graded.

Change-Id: I32d95c15489f15d68e132f7f012ba2e76d88d76a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/276429
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>
QA-Review: Jeremy Stanley <jeremy@instructure.com>
Product-Review: Eric Saupe <eric.saupe@instructure.com>
This commit is contained in:
Eric Saupe 2021-10-20 13:37:22 -07:00
parent 03ff06699f
commit c5b6a1fa4d
2 changed files with 6 additions and 2 deletions

View File

@ -36,7 +36,7 @@ class PacePlanModuleItem < ActiveRecord::Base
}
def assignable_module_item
unless module_item&.can_have_assignment?
unless module_item&.assignment
self.errors.add(:module_item, 'is not assignable')
end
end

View File

@ -74,10 +74,14 @@ describe PacePlanModuleItem do
end
context "validation" do
it "requires the module item to be assignable" do
it "requires the module item to have an assignment" do
quiz = @course.quizzes.create!
quiz_tag = @mod2.add_item id: quiz.id, type: 'quiz'
header_tag = @mod2.add_item type: 'context_module_sub_header', title: 'not an assignment'
expect(@pace_plan.pace_plan_module_items.build(module_item: quiz_tag)).not_to be_valid
expect(@pace_plan.pace_plan_module_items.build(module_item: header_tag)).not_to be_valid
quiz.save! # Save again to create associated assignment
quiz_tag.reload
expect(@pace_plan.pace_plan_module_items.build(module_item: quiz_tag)).to be_valid
expect(@pace_plan.pace_plan_module_items.build(module_item: header_tag)).not_to be_valid
end