Add course pacing item to the course navigation menu

closes LS-3546
flag = course_paces

Test plan:
 - Open a course with course pacing enabled as a teacher
 - Expect a 'Course Pacing' item in the course navigation
 - Expect no 'Course Pacing' button on the modules page
 - Disable course pacing or login as a student and expect to not
   see the Course pacing nav item

Change-Id: Iac8423a6a565c1761cfc1f0211822938bf61a6ea
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/303986
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Eric Saupe <eric.saupe@instructure.com>
QA-Review: Eric Saupe <eric.saupe@instructure.com>
Product-Review: Luis Oliveira <luis.oliveira@instructure.com>
This commit is contained in:
Luis Oliveira 2022-10-24 21:06:43 -03:00
parent 109abd3f99
commit ec026f1de1
5 changed files with 48 additions and 11 deletions

View File

@ -3012,6 +3012,7 @@ class Course < ActiveRecord::Base
TAB_COLLABORATIONS_NEW = 17
TAB_RUBRICS = 18
TAB_SCHEDULE = 19
TAB_COURSE_PACES = 20
CANVAS_K6_TAB_IDS = [TAB_HOME, TAB_ANNOUNCEMENTS, TAB_GRADES, TAB_MODULES].freeze
COURSE_SUBJECT_TAB_IDS = [TAB_HOME, TAB_SCHEDULE, TAB_MODULES, TAB_GRADES, TAB_GROUPS].freeze
@ -3179,6 +3180,16 @@ class Course < ActiveRecord::Base
else
Course.default_tabs
end
if account.feature_enabled?(:course_paces) && enable_course_paces && grants_any_right?(user, :manage_content, *RoleOverride::GRANULAR_MANAGE_COURSE_CONTENT_PERMISSIONS)
default_tabs.insert(default_tabs.index { |t| t[:id] == TAB_MODULES } + 1, {
id: TAB_COURSE_PACES,
label: t("#tabs.course_paces", "Course Pacing"),
css_class: "course_paces",
href: :course_course_pacing_path
})
end
opts[:include_external] = false if elementary_homeroom_course?
GuardRail.activate(:secondary) do

View File

@ -56,9 +56,6 @@
</button>
<% end %>
<% end %>
<% if @context.account.feature_enabled?(:course_paces) && @context.enable_course_paces && @context.grants_any_right?(@current_user, session, :manage_content, *RoleOverride::GRANULAR_MANAGE_COURSE_CONTENT_PERMISSIONS) %>
<a class="btn" id="course_paces_link" href="<%= course_course_pacing_path(@context) %>"><%= t("Course Pacing") %></a>
<% end %>
<% if @can_add %>
<button class="btn btn-primary add_module_link">
<i class="icon-plus" role="presentation"></i>

View File

@ -2792,6 +2792,32 @@ describe Course do
end
end
describe "TAB_COURSE_PACES" do
it "is included when course paces is enabled" do
@course.account.enable_feature!(:course_paces)
@course.enable_course_paces = true
@course.save!
tabs = @course.tabs_available(@user).pluck(:id)
expect(tabs).to include(Course::TAB_COURSE_PACES)
end
it "is not included if the flag is off" do
@course.account.disable_feature!(:course_paces)
@course.enable_course_paces = true
@course.save!
tabs = @course.tabs_available(@user).pluck(:id)
expect(tabs).not_to include(Course::TAB_COURSE_PACES)
end
it "is not included if the course has it disabled" do
@course.account.enable_feature!(:course_paces)
@course.enable_course_paces = false
@course.save!
tabs = @course.tabs_available(@user).pluck(:id)
expect(tabs).not_to include(Course::TAB_COURSE_PACES)
end
end
it "returns the defaults if nothing specified" do
tab_ids = @course.tabs_available(@user).pluck(:id)
expect(tab_ids).to eql(default_tab_ids)
@ -3164,6 +3190,16 @@ describe Course do
course_with_student(active_all: true)
end
describe "TAB_COURSE_PACES" do
it "is not included" do
@course.account.enable_feature!(:course_paces)
@course.enable_course_paces = true
@course.save!
tabs = @course.tabs_available(@user).pluck(:id)
expect(tabs).not_to include(Course::TAB_COURSE_PACES)
end
end
it "returns K-6 tabs if feature flag is enabled for students" do
@course.enable_feature!(:canvas_k6_theme)
tab_ids = @course.tabs_available(@user).pluck(:id)

View File

@ -50,13 +50,6 @@ describe "course pace page" do
expect(driver.current_url).to include("/courses/#{@course.id}/course_pacing")
end
it "is not shown when disabled" do
disable_course_paces_in_course
get "/courses/#{@course.id}/modules"
expect(course_paces_nav_exists?).to be_falsey
end
end
context "course paces modules" do

View File

@ -48,7 +48,7 @@ module CoursesHomePage
end
def course_course_pace_selector
"#course_paces_link"
".course_paces"
end
def course_menu_toggle_selector