spec: add new speedgrader filter specs

Change-Id: If73aa2326452c96a2802abe0d623a3253c6dec0c
Reviewed-on: https://gerrit.instructure.com/198437
Tested-by: Jenkins
Reviewed-by: KC Naegle <knaegle@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
This commit is contained in:
James Butters 2019-06-20 11:28:50 -06:00
parent 170d3f89b6
commit b3d4e32f0c
4 changed files with 141 additions and 0 deletions

View File

@ -46,5 +46,13 @@ class AssignmentPage
def title
f('.title')
end
def student_group_speedgrader_dropdown
# TODO: locator for new dropdown
end
def speedgrader_link
f('#assignment-speedgrader-link')
end
end
end

View File

@ -66,6 +66,10 @@ module Gradezilla
f("#final-grade-value").text
end
def group_message
# TODO: locator for the student group message text
end
def self.speedgrader_link
fj("a:contains('SpeedGrader')")
end

View File

@ -350,6 +350,10 @@ class Speedgrader
students_dropdown_button.click
end
def fetch_student_names
ff('li', student_dropdown_menu).map(&:text)
end
def click_next_or_prev_student(direction_string)
if direction_string.equal?(:next)
next_student.click

View File

@ -0,0 +1,125 @@
#
# Copyright (C) 2019 - present Instructure, Inc.
#
# This file is part of Canvas.
#
# Canvas is free software: you can redistribute it and/or modify it under
# the terms of the GNU Affero General Public License as published by the Free
# Software Foundation, version 3 of the License.
#
# Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
# details.
#
# You should have received a copy of the GNU Affero General Public License along
# with this program. If not, see <http://www.gnu.org/licenses/>.
require_relative '../../common'
require_relative '../pages/speedgrader_page'
require_relative '../pages/gradezilla_page'
require_relative '../pages/gradezilla_grade_detail_tray_page'
require_relative '../pages/gradezilla_cells_page'
require_relative '../../assignments/page_objects/assignment_page'
describe 'filter speed grader by student group' do
include_context "in-process server selenium tests"
before :once do
skip('unskip in first example to be implemented')
# course with student groups
course_with_teacher(
course_name: "Filter Speedgrader Course",
active_course: true,
active_enrollment: true,
name: "Teacher Boss1",
active_user: true
)
@course.enable_feature!(:new_gradebook)
@course.assignments.create!(
title: 'filtering assignment',
submission_types: 'online_text_entry',
grading_type: 'points',
points_possible: 10
)
@students = create_users_in_course(@course, 4, return_type: :record, name_prefix: "Blue", section: @section1)
@category = @course.group_categories.create!(name: "speedgrader filter groups")
@category.create_groups(2)
@category.groups.first.add_user(@students[0])
@category.groups.first.add_user(@students[1])
@category.groups.second.add_user(@students[2])
@category.groups.second.add_user(@students[3])
@group1_students = @students[0,2]
@group2_students = @students[2,2]
# TODO: enable filtering setting
end
context 'on assignments page' do
before :each do
user_session(@teacher)
AssignmentPage.visit(@course, @assignment)
end
it 'speedgrader link with correct href' do
skip('unskip in GRADE-2243')
# TODO: select group @category.groups.first from dropdown
# AssignmentPage.student_group_speedgrader_dropdown(@category.groups.first)
speedgrader_link_text = "/courses/#{@course.id}/gradebook/speed_grader?assignment_id=#{@assignment.id}"
expect(AssignmentPage.speedgrader_link.attribute("href")).to include(speedgrader_link_text)
end
it 'disables speedgrader when no group selected' do
skip('Unskip in GRADE-2244')
# verify speecgrader link is disabled
expect(AssignmentPage.speedgrader_link).to be_disabled
end
end
context 'on gradebook details tray' do
before :each do
user_session(@teacher)
end
it 'speedgrader link from tray has correct href' do
skip('unskip in GRADE-2238')
Gradezilla.visit(@course)
# select group from gradebook
Gradezilla.select_student_group(@category.groups.second)
# verify link is disabled and message
Gradezilla::Cells.open_tray(@group2_students.second, @assignment)
speedgrader_link_text = "/courses/#{@course.id}/gradebook/speed_grader?assignment_id=#{@assignment.id}"
expect(Gradezilla::GradeDetailTray.speedgrader_link.attribute("href")).to include(speedgrader_link_text)
end
it 'loads speedgrader when group selected' do
skip('unskip in GRADE-2238')
# select group from gradebook setting
@teacher.preferences[:gradebook_settings] = {
@course.id => {
filter_rows_by: {
student_group_id: @category.groups.second.id
}
}
}
Speedgrader.visit(@course.id, @assignment.id)
# verify
Speedgrader.click_students_dropdown
expect(Speedgrader.fetch_student_names).to contain_exaclty(@group2_students)
end
it 'disables speedgrader from tray' do
skip('unskip in GRADE-2239')
Gradezilla.visit(@course)
# verify link is disabled and message
Gradezilla::Cells.open_tray(@group2_students.first, @assignment)
# expect(Gradezilla::GradeDetailTray.group_message).to contain_text("you must select a student group")
expect(Gradezilla::GradeDetailTray.speedgrader_link).to be_disabled
end
end
end