fix nil context in NewQuizzesFeaturesHelper placements check
There are instances where @context is undefined in the feature helper. This updates the method to take a passed context and default to the class define context. fixes QUIZ-8516 flag=new_quizzes_account_course_level_item_banks Test Plan: 1. specs pass 2. open up the broswer dev console for your local canvas 3. Run `fetch('http://canvas.docker/api/v1/courses?include[]=tabs'}` 4. You should not get an error. Change-Id: I331e921f626651244738ca6bc7d7007f06d30d9a Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/267422 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Stephen Kacsmark <skacsmark@instructure.com> QA-Review: Mark McDermott <mmcdermott@instructure.com> Product-Review: Stephen Kacsmark <skacsmark@instructure.com>
This commit is contained in:
parent
03562453a0
commit
87bfd63341
|
@ -347,7 +347,7 @@ module ApplicationHelper
|
|||
if (tab[:id] == @context.class::TAB_COLLABORATIONS rescue false)
|
||||
Collaboration.any_collaborations_configured?(@context) && !@context.feature_enabled?(:new_collaborations)
|
||||
elsif (quiz_lti_tab?(tab) rescue false)
|
||||
new_quizzes_navigation_placements_enabled?
|
||||
new_quizzes_navigation_placements_enabled?(@context)
|
||||
elsif (tab[:id] == @context.class::TAB_COLLABORATIONS_NEW rescue false)
|
||||
@context.feature_enabled?(:new_collaborations)
|
||||
elsif (tab[:id] == @context.class::TAB_CONFERENCES rescue false)
|
||||
|
|
|
@ -35,14 +35,14 @@ module NewQuizzesFeaturesHelper
|
|||
@context.root_account.feature_enabled?(:migrate_to_new_quizzes_by_default) || new_quizzes_require_migration?
|
||||
end
|
||||
|
||||
def new_quizzes_navigation_placements_enabled?
|
||||
Account.site_admin.feature_enabled?(:new_quizzes_account_course_level_item_banks) && @context.feature_enabled?(:quizzes_next)
|
||||
def new_quizzes_navigation_placements_enabled?(context = @context)
|
||||
Account.site_admin.feature_enabled?(:new_quizzes_account_course_level_item_banks) && context.feature_enabled?(:quizzes_next)
|
||||
end
|
||||
|
||||
module_function
|
||||
|
||||
def new_quizzes_enabled?(context = @context)
|
||||
context.feature_enabled?(:quizzes_next) && context.quiz_lti_tool.present? && !new_quizzes_require_migration?(context)
|
||||
context.feature_enabled?(:quizzes_next) && context.quiz_lti_tool.present? && !new_quizzes_require_migration?(context)
|
||||
end
|
||||
|
||||
def new_quizzes_require_migration?(context = @context)
|
||||
|
|
|
@ -112,7 +112,7 @@ module SectionTabHelper
|
|||
elsif tab_is?(tab, 'TAB_CONFERENCES')
|
||||
!WebConference.config(context: @context)
|
||||
elsif quiz_lti_tab?(tab)
|
||||
!new_quizzes_navigation_placements_enabled?
|
||||
!new_quizzes_navigation_placements_enabled?(context)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -118,7 +118,7 @@ module Api::V1::Tab
|
|||
elsif (tab[:id] == context.class::TAB_CONFERENCES rescue false)
|
||||
tab[:href] && tab[:label] && feature_enabled?(:web_conferences)
|
||||
elsif (quiz_lti_tab?(tab) rescue false)
|
||||
tab[:href] && tab[:label] && new_quizzes_navigation_placements_enabled?
|
||||
tab[:href] && tab[:label] && new_quizzes_navigation_placements_enabled?(context)
|
||||
else
|
||||
tab[:href] && tab[:label]
|
||||
end
|
||||
|
|
|
@ -126,4 +126,31 @@ describe NewQuizzesFeaturesHelper do
|
|||
expect(new_quizzes_require_migration?).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
describe "#new_quizzes_navigation_placements_enabled" do
|
||||
before(:each) do
|
||||
allow(@context).to receive(:feature_enabled?).with(:quizzes_next).and_return(true)
|
||||
Account.site_admin.enable_feature!(:new_quizzes_account_course_level_item_banks)
|
||||
end
|
||||
|
||||
it 'should be true when new_quizzes_account_course_level_item_banks and quizzes_next are true' do
|
||||
expect(new_quizzes_navigation_placements_enabled?).to eq true
|
||||
end
|
||||
|
||||
it 'should be false when new_quizzes_account_course_level_item_banks is disabled' do
|
||||
Account.site_admin.disable_feature!(:new_quizzes_account_course_level_item_banks)
|
||||
expect(new_quizzes_navigation_placements_enabled?).to eq false
|
||||
end
|
||||
|
||||
it 'should be false when quizzes_next is disabled' do
|
||||
allow(@context).to receive(:feature_enabled?).with(:quizzes_next).and_return(false)
|
||||
expect(new_quizzes_navigation_placements_enabled?).to eq false
|
||||
end
|
||||
|
||||
it 'should accept a context' do
|
||||
fake_context = Course.create(name: 'fake context')
|
||||
fake_context.disable_feature!(:quizzes_next)
|
||||
expect(new_quizzes_navigation_placements_enabled?(fake_context)).to eq false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue