Account for differentiated modules in modules_cache_key
flag = differentiated_modules closes LF-1482 Test plan: - Start canvas with `ACTION_CONTROLLER_CACHING=true rails s` - Create 2 modules and add a different page to each of the modules - Visit the modules page as a student - As a teacher, add an override that does not target the student to 1 of the modules and to the page in the other module - Visit modules again as a student - Expect the differentiated objects to not appear Change-Id: I3097e04ec31301afd9b7ab6fc9fba57897f8ea1f Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/346578 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Robin Kuss <rkuss@instructure.com> QA-Review: Robin Kuss <rkuss@instructure.com> Product-Review: Jackson Howe <jackson.howe@instructure.com>
This commit is contained in:
parent
e6e44bfea2
commit
a27bad0f74
|
@ -47,7 +47,7 @@ class ContextModulesController < ApplicationController
|
|||
|
||||
def modules_cache_key
|
||||
@modules_cache_key ||= begin
|
||||
visible_assignments = @current_user.try(:assignment_and_quiz_visibilities, @context)
|
||||
visible_assignments = @current_user.try(:learning_object_visibilities, @context)
|
||||
cache_key_items = [@context.cache_key,
|
||||
@can_view,
|
||||
@can_add,
|
||||
|
|
|
@ -24,7 +24,7 @@ module ContextModulesHelper
|
|||
|
||||
def cache_if_module(context_module, viewable, can_add, can_edit, can_delete, is_student, can_view_unpublished, user, context, &)
|
||||
if context_module
|
||||
visible_assignments = user ? user.assignment_and_quiz_visibilities(context) : []
|
||||
visible_assignments = user ? user.learning_object_visibilities(context) : []
|
||||
cache_key_items = ["context_module_render_22_",
|
||||
context_module.cache_key,
|
||||
viewable,
|
||||
|
|
|
@ -380,11 +380,17 @@ class User < ActiveRecord::Base
|
|||
super
|
||||
end
|
||||
|
||||
def assignment_and_quiz_visibilities(context)
|
||||
RequestCache.cache("assignment_and_quiz_visibilities", self, context) do
|
||||
def learning_object_visibilities(context)
|
||||
RequestCache.cache("learning_object_visibilities", self, context) do
|
||||
GuardRail.activate(:secondary) do
|
||||
{ assignment_ids: DifferentiableAssignment.scope_filter(context.assignments, self, context).pluck(:id),
|
||||
quiz_ids: DifferentiableAssignment.scope_filter(context.quizzes, self, context).pluck(:id) }
|
||||
visibilities = { assignment_ids: DifferentiableAssignment.scope_filter(context.assignments, self, context).pluck(:id),
|
||||
quiz_ids: DifferentiableAssignment.scope_filter(context.quizzes, self, context).pluck(:id) }
|
||||
if Account.site_admin.feature_enabled?(:differentiated_modules)
|
||||
visibilities[:context_module_ids] = DifferentiableAssignment.scope_filter(context.context_modules, self, context).pluck(:id)
|
||||
visibilities[:discussion_topic_ids] = DifferentiableAssignment.scope_filter(context.discussion_topics, self, context).pluck(:id)
|
||||
visibilities[:wiki_page_ids] = DifferentiableAssignment.scope_filter(context.wiki_pages, self, context).pluck(:id)
|
||||
end
|
||||
visibilities
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1561,10 +1561,10 @@ describe ContextModule do
|
|||
expect(@module.content_tags_visible_to(@student_2).map(&:content).include?(@assignment)).to be_falsey
|
||||
end
|
||||
|
||||
it "alsoes have the right assignment_and_quiz_visibilities" do
|
||||
expect(@teacher.assignment_and_quiz_visibilities(@course)[:assignment_ids].include?(@assignment.id)).to be_truthy
|
||||
expect(@student_1.assignment_and_quiz_visibilities(@course)[:assignment_ids].include?(@assignment.id)).to be_truthy
|
||||
expect(@student_2.assignment_and_quiz_visibilities(@course)[:assignment_ids].include?(@assignment.id)).to be_falsey
|
||||
it "has the right learning_object_visibilities" do
|
||||
expect(@teacher.learning_object_visibilities(@course)[:assignment_ids].include?(@assignment.id)).to be_truthy
|
||||
expect(@student_1.learning_object_visibilities(@course)[:assignment_ids].include?(@assignment.id)).to be_truthy
|
||||
expect(@student_2.learning_object_visibilities(@course)[:assignment_ids].include?(@assignment.id)).to be_falsey
|
||||
end
|
||||
|
||||
it "properly returns differentiated assignments for teacher even without update rights" do
|
||||
|
|
|
@ -4578,4 +4578,19 @@ describe User do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "learning_object_visibilities" do
|
||||
before :once do
|
||||
student_in_course(active_all: true)
|
||||
end
|
||||
|
||||
it "includes assignment and quiz ids with the differentiated_modules flag disabled" do
|
||||
expect(@user.learning_object_visibilities(@course).keys).to contain_exactly(:assignment_ids, :quiz_ids)
|
||||
end
|
||||
|
||||
it "includes all learning object ids with the differentiated_modules flag enabled" do
|
||||
Account.site_admin.enable_feature!(:differentiated_modules)
|
||||
expect(@user.learning_object_visibilities(@course).keys).to contain_exactly(:assignment_ids, :quiz_ids, :context_module_ids, :discussion_topic_ids, :wiki_page_ids)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue