From e6a63b56935b2f026aa6054b7d6f46879710e853 Mon Sep 17 00:00:00 2001 From: Agha Awais Date: Tue, 31 Jul 2018 11:20:38 +0000 Subject: [PATCH] Grading bokchoy tests II --- .../contentstore/features/grading.feature | 26 ------------- .../pages/studio/settings_graders.py | 19 ++++++++++ .../tests/studio/test_studio_grading.py | 37 +++++++++++++++++++ 3 files changed, 56 insertions(+), 26 deletions(-) diff --git a/cms/djangoapps/contentstore/features/grading.feature b/cms/djangoapps/contentstore/features/grading.feature index caafca9b6e..0def9df05c 100644 --- a/cms/djangoapps/contentstore/features/grading.feature +++ b/cms/djangoapps/contentstore/features/grading.feature @@ -2,32 +2,6 @@ Feature: CMS.Course Grading As a course author, I want to be able to configure how my course is graded - # Cannot reliably make the delete button appear so using javascript instead - Scenario: Users can delete grading ranges - Given I have opened a new course in Studio - And I am viewing the grading settings - When I add "1" new grade - And I delete a grade - Then I see I now have "2" grades - - # IE and Safari cannot reliably drag and drop through selenium - @skip_internetexplorer - @skip_safari - Scenario: Users can move grading ranges - Given I have opened a new course in Studio - And I am viewing the grading settings - When I move a grading section - Then I see that the grade range has changed - - Scenario: Users can modify Assignment types - Given I have populated a new course in Studio - And I am viewing the grading settings - When I change assignment type "Homework" to "New Type" - And I press the "Save" notification button - And I go back to the main course page - Then I do see the assignment name "New Type" - And I do not see the assignment name "Homework" - Scenario: Users can delete Assignment types Given I have populated a new course in Studio And I am viewing the grading settings diff --git a/common/test/acceptance/pages/studio/settings_graders.py b/common/test/acceptance/pages/studio/settings_graders.py index a6d8bd363b..5b44bba6b2 100644 --- a/common/test/acceptance/pages/studio/settings_graders.py +++ b/common/test/acceptance/pages/studio/settings_graders.py @@ -5,6 +5,7 @@ Course Grading Settings page. from common.test.acceptance.pages.studio.settings import SettingsPage from common.test.acceptance.pages.studio.utils import press_the_notification_button from common.test.acceptance.pages.common.utils import click_css +from selenium.webdriver import ActionChains from bok_choy.promise import BrokenPromise @@ -67,6 +68,15 @@ class GradingPage(SettingsPage): while len(self.q(css='.remove-button')) > 0: self.remove_grade() + def drag_and_drop_grade(self): + """ + Drag and drop grade range. + """ + self.wait_for_element_visibility(self.grade_ranges, "Grades ranges are visible") + action = ActionChains(self.browser) + moveable_css = self.q(css='.ui-resizable-e').results[0] + action.drag_and_drop_by_offset(moveable_css, 100, 0).perform() + @property def grade_letters(self): """ @@ -104,6 +114,15 @@ class GradingPage(SettingsPage): self.q(css='.add-grading-data').click() self.save_changes() + @property + def grades_range(self): + """ + Get ranges of all the grades. + Returns: A list containing ranges of all the grades + """ + self.wait_for_element_visibility('.range', 'Ranges are visible') + return self.q(css='.range').text + def fill_assignment_type_fields( self, name, diff --git a/common/test/acceptance/tests/studio/test_studio_grading.py b/common/test/acceptance/tests/studio/test_studio_grading.py index b3ac487259..b981ca34f2 100644 --- a/common/test/acceptance/tests/studio/test_studio_grading.py +++ b/common/test/acceptance/tests/studio/test_studio_grading.py @@ -93,3 +93,40 @@ class GradingPageTest(StudioCourseTest): self.grading_page.save() grades_alphabets = self.grading_page.grade_letters self.assertEqual(grades_alphabets, ['A', 'B', 'F']) + + def test_staff_can_delete_grade_range(self): + """ + Scenario: Users can delete grading ranges + Given I have opened a new course in Studio + And I am viewing the grading settings + When I add "1" new grade + And I delete a grade + Then I see I now have "2" grades + """ + length = self.grading_page.total_number_of_grades + self.grading_page.click_add_grade() + self.assertTrue(self.grading_page.is_grade_added(length)) + self.grading_page.save() + total_number_of_grades = self.grading_page.total_number_of_grades + self.assertEqual(total_number_of_grades, 3) + self.grading_page.remove_grades(1) + total_number_of_grades = self.grading_page.total_number_of_grades + self.assertEqual(total_number_of_grades, 2) + + def test_staff_can_move_grading_ranges(self): + """ + Scenario: Users can move grading ranges + Given I have opened a new course in Studio + And I am viewing the grading settings + When I move a grading section + Then I see that the grade range has changed + """ + grade_ranges = self.grading_page.grades_range + self.assertIn('0-50', grade_ranges) + self.grading_page.drag_and_drop_grade() + grade_ranges = self.grading_page.grades_range + self.assertIn( + '0-3', + grade_ranges, + 'expected range: 0-3, not found in grade ranges:{}'.format(grade_ranges) + )