diff --git a/cms/djangoapps/contentstore/features/grading.feature b/cms/djangoapps/contentstore/features/grading.feature index f3ce1823e6..6c357a171e 100644 --- a/cms/djangoapps/contentstore/features/grading.feature +++ b/cms/djangoapps/contentstore/features/grading.feature @@ -59,6 +59,17 @@ Feature: CMS.Course Grading And I go back to the main course page Then I do see the assignment name "New Type" + # Note that "7" is a special weight because it revealed rounding errors (STUD-826). + Scenario: Users can set weight to Assignment types + Given I have opened a new course in Studio + And I am viewing the grading settings + When I add a new assignment type "New Type" + And I set the assignment weight to "7" + And I press the "Save" notification button + Then the assignment weight is displayed as "7" + And I reload the page + Then the assignment weight is displayed as "7" + Scenario: Settings are only persisted when saved Given I have opened a new course in Studio And I have populated the course diff --git a/cms/djangoapps/contentstore/features/grading.py b/cms/djangoapps/contentstore/features/grading.py index 24beefcd6a..b0db396081 100644 --- a/cms/djangoapps/contentstore/features/grading.py +++ b/cms/djangoapps/contentstore/features/grading.py @@ -106,6 +106,22 @@ def add_assignment_type(step, new_name): new_assignment._element.send_keys(new_name) +@step(u'I set the assignment weight to "([^"]*)"$') +def set_weight(step, weight): + weight_id = '#course-grading-assignment-gradeweight' + weight_field = world.css_find(weight_id)[-1] + old_weight = world.css_value(weight_id, -1) + for count in range(len(old_weight)): + weight_field._element.send_keys(Keys.END, Keys.BACK_SPACE) + weight_field._element.send_keys(weight) + + +@step(u'the assignment weight is displayed as "([^"]*)"$') +def verify_weight(step, weight): + weight_id = '#course-grading-assignment-gradeweight' + assert_equal(world.css_value(weight_id, -1), weight) + + @step(u'I have populated the course') def populate_course(step): step.given('I have added a new section') diff --git a/cms/static/js/models/settings/course_grading_policy.js b/cms/static/js/models/settings/course_grading_policy.js index 3ae901920d..1e23a4ecf4 100644 --- a/cms/static/js/models/settings/course_grading_policy.js +++ b/cms/static/js/models/settings/course_grading_policy.js @@ -17,7 +17,7 @@ var CourseGradingPolicy = Backbone.Model.extend({ // interesting race condition: if {parse:true} when newing, then parse called before .attributes created if (this.attributes && this.has('graders')) { graderCollection = this.get('graders'); - graderCollection.reset(attributes.graders); + graderCollection.reset(attributes.graders, {parse:true}); } else { graderCollection = new CourseGraderCollection(attributes.graders, {parse:true});