Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
9b478ff3
Commit
9b478ff3
authored
Jun 20, 2013
by
Jonah Stanley
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #115 from edx/jonahstanley/add-gradingsettings-tests
Added testing for grading settings
parents
ef06932d
85e30622
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
161 additions
and
0 deletions
+161
-0
cms/djangoapps/contentstore/features/grading.feature
+53
-0
cms/djangoapps/contentstore/features/grading.py
+108
-0
No files found.
cms/djangoapps/contentstore/features/grading.feature
0 → 100644
View file @
9b478ff3
Feature
:
Course Grading
As a course author, I want to be able to configure how my course is graded
Scenario
:
Users can add grading ranges
Given
I have opened a new course in Studio
And
I am viewing the grading settings
When
I add
"1"
new grade
Then
I see I now have
"3"
grades
Scenario
:
Users can only have up to 5 grading ranges
Given
I have opened a new course in Studio
And
I am viewing the grading settings
When
I add
"6"
new grades
Then
I see I now have
"5"
grades
#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
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 opened a new course in Studio
And
I have populated the course
And
I am viewing the grading settings
When
I change assignment type
"Homework"
to
"New Type"
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 opened a new course in Studio
And
I have populated the course
And
I am viewing the grading settings
When
I delete the assignment type
"Homework"
And
I go back to the main course page
Then
I do not see the assignment name
"Homework"
Scenario
:
Users can add Assignment types
Given
I have opened a new course in Studio
And
I have populated the course
And
I am viewing the grading settings
When
I add a new assignment type
"New Type"
And
I go back to the main course page
Then
I do see the assignment name
"New Type"
cms/djangoapps/contentstore/features/grading.py
0 → 100644
View file @
9b478ff3
#pylint: disable=C0111
#pylint: disable=W0621
from
lettuce
import
world
,
step
from
common
import
*
@step
(
u'I am viewing the grading settings'
)
def
view_grading_settings
(
step
):
world
.
click_course_settings
()
link_css
=
'li.nav-course-settings-grading a'
world
.
css_click
(
link_css
)
@step
(
u'I add "([^"]*)" new grade'
)
def
add_grade
(
step
,
many
):
grade_css
=
'.new-grade-button'
for
i
in
range
(
int
(
many
)):
world
.
css_click
(
grade_css
)
@step
(
u'I delete a grade'
)
def
delete_grade
(
step
):
#grade_css = 'li.grade-specific-bar > a.remove-button'
#range_css = '.grade-specific-bar'
#world.css_find(range_css)[1].mouseover()
#world.css_click(grade_css)
world
.
browser
.
execute_script
(
'document.getElementsByClassName("remove-button")[0].click()'
)
@step
(
u'I see I now have "([^"]*)" grades$'
)
def
view_grade_slider
(
step
,
how_many
):
grade_slider_css
=
'.grade-specific-bar'
all_grades
=
world
.
css_find
(
grade_slider_css
)
assert
len
(
all_grades
)
==
int
(
how_many
)
@step
(
u'I move a grading section'
)
def
move_grade_slider
(
step
):
moveable_css
=
'.ui-resizable-e'
f
=
world
.
css_find
(
moveable_css
)
.
first
f
.
action_chains
.
drag_and_drop_by_offset
(
f
.
_element
,
100
,
0
)
.
perform
()
@step
(
u'I see that the grade range has changed'
)
def
confirm_change
(
step
):
range_css
=
'.range'
all_ranges
=
world
.
css_find
(
range_css
)
for
i
in
range
(
len
(
all_ranges
)):
assert
all_ranges
[
i
]
.
html
!=
'0-50'
@step
(
u'I change assignment type "([^"]*)" to "([^"]*)"$'
)
def
change_assignment_name
(
step
,
old_name
,
new_name
):
name_id
=
'#course-grading-assignment-name'
index
=
get_type_index
(
old_name
)
f
=
world
.
css_find
(
name_id
)[
index
]
assert
index
!=
-
1
for
count
in
range
(
len
(
old_name
)):
f
.
_element
.
send_keys
(
Keys
.
END
,
Keys
.
BACK_SPACE
)
f
.
_element
.
send_keys
(
new_name
)
@step
(
u'I go back to the main course page'
)
def
main_course_page
(
step
):
main_page_link_css
=
'a[href="/MITx/999/course/Robot_Super_Course"]'
world
.
css_click
(
main_page_link_css
)
@step
(
u'I do( not)? see the assignment name "([^"]*)"$'
)
def
see_assignment_name
(
step
,
do_not
,
name
):
assignment_menu_css
=
'ul.menu > li > a'
assignment_menu
=
world
.
css_find
(
assignment_menu_css
)
allnames
=
[
item
.
html
for
item
in
assignment_menu
]
if
do_not
:
assert
not
name
in
allnames
else
:
assert
name
in
allnames
@step
(
u'I delete the assignment type "([^"]*)"$'
)
def
delete_assignment_type
(
step
,
to_delete
):
delete_css
=
'.remove-grading-data'
world
.
css_click
(
delete_css
,
index
=
get_type_index
(
to_delete
))
@step
(
u'I add a new assignment type "([^"]*)"$'
)
def
add_assignment_type
(
step
,
new_name
):
add_button_css
=
'.add-grading-data'
world
.
css_click
(
add_button_css
)
name_id
=
'#course-grading-assignment-name'
f
=
world
.
css_find
(
name_id
)[
4
]
f
.
_element
.
send_keys
(
new_name
)
@step
(
u'I have populated the course'
)
def
populate_course
(
step
):
step
.
given
(
'I have added a new section'
)
step
.
given
(
'I have added a new subsection'
)
def
get_type_index
(
name
):
name_id
=
'#course-grading-assignment-name'
f
=
world
.
css_find
(
name_id
)
for
i
in
range
(
len
(
f
)):
if
f
[
i
]
.
value
==
name
:
return
i
return
-
1
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment