Commit 568f557d by Will Daly

Pep8 fixes

Changed constant to uppercase
parent 5fd1e742
...@@ -6,7 +6,7 @@ import time ...@@ -6,7 +6,7 @@ import time
# Let the LMS and CMS do their one-time setup # Let the LMS and CMS do their one-time setup
# For example, setting up mongo caches # For example, setting up mongo caches
from lms import one_time_startup from lms import one_time_startup
from cms import one_time_startup from cms import one_time_startup
logger = getLogger(__name__) logger = getLogger(__name__)
logger.info("Loading the lettuce acceptance testing terrain file...") logger.info("Loading the lettuce acceptance testing terrain file...")
...@@ -21,6 +21,7 @@ def initial_setup(server): ...@@ -21,6 +21,7 @@ def initial_setup(server):
# world.browser = Browser('phantomjs') # world.browser = Browser('phantomjs')
# world.browser = Browser('firefox') # world.browser = Browser('firefox')
@before.each_scenario @before.each_scenario
def reset_data(scenario): def reset_data(scenario):
# Clean out the django test database defined in the # Clean out the django test database defined in the
......
...@@ -154,7 +154,7 @@ class XModuleItemFactory(Factory): ...@@ -154,7 +154,7 @@ class XModuleItemFactory(Factory):
# If a display name is set, use that # If a display name is set, use that
dest_name = display_name.replace(" ", "_") if display_name is not None else uuid4().hex dest_name = display_name.replace(" ", "_") if display_name is not None else uuid4().hex
dest_location = parent_location._replace(category=template.category, dest_location = parent_location._replace(category=template.category,
name=dest_name) name=dest_name)
new_item = store.clone_item(template, dest_location) new_item = store.clone_item(template, dest_location)
......
...@@ -101,6 +101,7 @@ def i_am_an_edx_user(step): ...@@ -101,6 +101,7 @@ def i_am_an_edx_user(step):
#### helper functions #### helper functions
@world.absorb @world.absorb
def scroll_to_bottom(): def scroll_to_bottom():
# Maximize the browser # Maximize the browser
......
...@@ -89,6 +89,7 @@ TEST_COURSE_ORG = 'edx' ...@@ -89,6 +89,7 @@ TEST_COURSE_ORG = 'edx'
TEST_COURSE_NAME = 'Test Course' TEST_COURSE_NAME = 'Test Course'
TEST_SECTION_NAME = "Problem" TEST_SECTION_NAME = "Problem"
@step(u'The course "([^"]*)" exists$') @step(u'The course "([^"]*)" exists$')
def create_course(step, course): def create_course(step, course):
...@@ -100,7 +101,7 @@ def create_course(step, course): ...@@ -100,7 +101,7 @@ def create_course(step, course):
# Create the course # Create the course
# We always use the same org and display name, # We always use the same org and display name,
# but vary the course identifier (e.g. 600x or 191x) # but vary the course identifier (e.g. 600x or 191x)
course = CourseFactory.create(org=TEST_COURSE_ORG, course = CourseFactory.create(org=TEST_COURSE_ORG,
number=course, number=course,
display_name=TEST_COURSE_NAME) display_name=TEST_COURSE_NAME)
...@@ -112,6 +113,7 @@ def create_course(step, course): ...@@ -112,6 +113,7 @@ def create_course(step, course):
template='i4x://edx/templates/sequential/Empty', template='i4x://edx/templates/sequential/Empty',
display_name=TEST_SECTION_NAME) display_name=TEST_SECTION_NAME)
@step(u'I am registered for the course "([^"]*)"$') @step(u'I am registered for the course "([^"]*)"$')
def i_am_registered_for_the_course(step, course): def i_am_registered_for_the_course(step, course):
# Create the course # Create the course
...@@ -126,6 +128,7 @@ def i_am_registered_for_the_course(step, course): ...@@ -126,6 +128,7 @@ def i_am_registered_for_the_course(step, course):
world.log_in('robot@edx.org', 'test') world.log_in('robot@edx.org', 'test')
@step(u'The course "([^"]*)" has extra tab "([^"]*)"$') @step(u'The course "([^"]*)" has extra tab "([^"]*)"$')
def add_tab_to_course(step, course, extra_tab_name): def add_tab_to_course(step, course, extra_tab_name):
section_item = ItemFactory.create(parent_location=course_location(course), section_item = ItemFactory.create(parent_location=course_location(course),
...@@ -155,10 +158,12 @@ def flush_xmodule_store(): ...@@ -155,10 +158,12 @@ def flush_xmodule_store():
modulestore().collection.drop() modulestore().collection.drop()
update_templates() update_templates()
def course_id(course_num): def course_id(course_num):
return "%s/%s/%s" % (TEST_COURSE_ORG, course_num, return "%s/%s/%s" % (TEST_COURSE_ORG, course_num,
TEST_COURSE_NAME.replace(" ", "_")) TEST_COURSE_NAME.replace(" ", "_"))
def course_location(course_num): def course_location(course_num):
return Location(loc_or_tag="i4x", return Location(loc_or_tag="i4x",
org=TEST_COURSE_ORG, org=TEST_COURSE_ORG,
...@@ -166,6 +171,7 @@ def course_location(course_num): ...@@ -166,6 +171,7 @@ def course_location(course_num):
category='course', category='course',
name=TEST_COURSE_NAME.replace(" ", "_")) name=TEST_COURSE_NAME.replace(" ", "_"))
def section_location(course_num): def section_location(course_num):
return Location(loc_or_tag="i4x", return Location(loc_or_tag="i4x",
org=TEST_COURSE_ORG, org=TEST_COURSE_ORG,
......
...@@ -9,6 +9,7 @@ logger = getLogger(__name__) ...@@ -9,6 +9,7 @@ logger = getLogger(__name__)
## support functions ## support functions
def get_courses(): def get_courses():
''' '''
Returns dict of lists of courses available, keyed by course.org (ie university). Returns dict of lists of courses available, keyed by course.org (ie university).
......
...@@ -3,7 +3,7 @@ Feature: All the high level tabs should work ...@@ -3,7 +3,7 @@ Feature: All the high level tabs should work
As a student As a student
I want to navigate through the high level tabs I want to navigate through the high level tabs
Scenario: I can navigate to all high-level tabs in a course Scenario: I can navigate to all high -level tabs in a course
Given: I am registered for the course "6.002x" Given: I am registered for the course "6.002x"
And The course "6.002x" has extra tab "Custom Tab" And The course "6.002x" has extra tab "Custom Tab"
And I log in And I log in
......
...@@ -39,9 +39,9 @@ Feature: Homepage for web users ...@@ -39,9 +39,9 @@ Feature: Homepage for web users
| MITx | | MITx |
| HarvardX | | HarvardX |
| BerkeleyX | | BerkeleyX |
| UTx | | UTx |
| WellesleyX | | WellesleyX |
| GeorgetownX | | GeorgetownX |
# # TODO: Add scenario that tests the courses available # # TODO: Add scenario that tests the courses available
# # using a policy or a configuration file # # using a policy or a configuration file
...@@ -34,6 +34,7 @@ def click_the_dropdown(step): ...@@ -34,6 +34,7 @@ def click_the_dropdown(step):
#### helper functions #### helper functions
def user_is_an_unactivated_user(uname): def user_is_an_unactivated_user(uname):
u = User.objects.get(username=uname) u = User.objects.get(username=uname)
u.is_active = False u.is_active = False
......
...@@ -3,10 +3,10 @@ Feature: Open ended grading ...@@ -3,10 +3,10 @@ Feature: Open ended grading
In order to complete the courseware questions In order to complete the courseware questions
I want the machine learning grading to be functional I want the machine learning grading to be functional
# Commenting these all out right now until we can # Commenting these all out right now until we can
# make a reference implementation for a course with # make a reference implementation for a course with
# an open ended grading problem that is always available # an open ended grading problem that is always available
# #
# Scenario: An answer that is too short is rejected # Scenario: An answer that is too short is rejected
# Given I navigate to an openended question # Given I navigate to an openended question
# And I enter the answer "z" # And I enter the answer "z"
......
...@@ -35,7 +35,7 @@ Feature: Answer choice problems ...@@ -35,7 +35,7 @@ Feature: Answer choice problems
Scenario: I can submit a blank answer Scenario: I can submit a blank answer
Given I am viewing a "<ProblemType>" problem Given I am viewing a "<ProblemType>" problem
When I check a problem When I check a problem
Then My "<ProblemType>" answer is marked "incorrect" Then My "<ProblemType>" answer is marked "incorrect"
Examples: Examples:
......
...@@ -13,7 +13,7 @@ from capa.tests.response_xml_factory import OptionResponseXMLFactory, \ ...@@ -13,7 +13,7 @@ from capa.tests.response_xml_factory import OptionResponseXMLFactory, \
# Factories from capa.tests.response_xml_factory that we will use # Factories from capa.tests.response_xml_factory that we will use
# to generate the problem XML, with the keyword args used to configure # to generate the problem XML, with the keyword args used to configure
# the output. # the output.
problem_factory_dict = { PROBLEM_FACTORY_DICT = {
'drop down': { 'drop down': {
'factory': OptionResponseXMLFactory(), 'factory': OptionResponseXMLFactory(),
'kwargs': { 'kwargs': {
...@@ -32,8 +32,8 @@ problem_factory_dict = { ...@@ -32,8 +32,8 @@ problem_factory_dict = {
'factory': ChoiceResponseXMLFactory(), 'factory': ChoiceResponseXMLFactory(),
'kwargs': { 'kwargs': {
'question_text': 'The correct answer is Choices 1 and 3', 'question_text': 'The correct answer is Choices 1 and 3',
'choice_type':'checkbox', 'choice_type': 'checkbox',
'choices':[True, False, True, False, False], 'choices': [True, False, True, False, False],
'choice_names': ['Choice 1', 'Choice 2', 'Choice 3', 'Choice 4']}}, 'choice_names': ['Choice 1', 'Choice 2', 'Choice 3', 'Choice 4']}},
'string': { 'string': {
...@@ -41,7 +41,7 @@ problem_factory_dict = { ...@@ -41,7 +41,7 @@ problem_factory_dict = {
'kwargs': { 'kwargs': {
'question_text': 'The answer is "correct string"', 'question_text': 'The answer is "correct string"',
'case_sensitive': False, 'case_sensitive': False,
'answer': 'correct string' }}, 'answer': 'correct string'}},
'numerical': { 'numerical': {
'factory': NumericalResponseXMLFactory(), 'factory': NumericalResponseXMLFactory(),
...@@ -49,13 +49,13 @@ problem_factory_dict = { ...@@ -49,13 +49,13 @@ problem_factory_dict = {
'question_text': 'The answer is pi + 1', 'question_text': 'The answer is pi + 1',
'answer': '4.14159', 'answer': '4.14159',
'tolerance': '0.00001', 'tolerance': '0.00001',
'math_display': True }}, 'math_display': True}},
'formula': { 'formula': {
'factory': FormulaResponseXMLFactory(), 'factory': FormulaResponseXMLFactory(),
'kwargs': { 'kwargs': {
'question_text': 'The solution is [mathjax]x^2+2x+y[/mathjax]', 'question_text': 'The solution is [mathjax]x^2+2x+y[/mathjax]',
'sample_dict': {'x': (-100, 100), 'y': (-100, 100) }, 'sample_dict': {'x': (-100, 100), 'y': (-100, 100)},
'num_samples': 10, 'num_samples': 10,
'tolerance': 0.00001, 'tolerance': 0.00001,
'math_display': True, 'math_display': True,
...@@ -77,15 +77,16 @@ problem_factory_dict = { ...@@ -77,15 +77,16 @@ problem_factory_dict = {
a1=0 a1=0
a2=0 a2=0
return (a1+a2)==int(expect) return (a1+a2)==int(expect)
""") }}, """)}},
} }
def add_problem_to_course(course, problem_type): def add_problem_to_course(course, problem_type):
assert(problem_type in problem_factory_dict) assert(problem_type in PROBLEM_FACTORY_DICT)
# Generate the problem XML using capa.tests.response_xml_factory # Generate the problem XML using capa.tests.response_xml_factory
factory_dict = problem_factory_dict[problem_type] factory_dict = PROBLEM_FACTORY_DICT[problem_type]
problem_xml = factory_dict['factory'].build_xml(**factory_dict['kwargs']) problem_xml = factory_dict['factory'].build_xml(**factory_dict['kwargs'])
# Create a problem item using our generated XML # Create a problem item using our generated XML
...@@ -95,7 +96,8 @@ def add_problem_to_course(course, problem_type): ...@@ -95,7 +96,8 @@ def add_problem_to_course(course, problem_type):
template="i4x://edx/templates/problem/Blank_Common_Problem", template="i4x://edx/templates/problem/Blank_Common_Problem",
display_name=str(problem_type), display_name=str(problem_type),
data=problem_xml, data=problem_xml,
metadata={'rerandomize':'always'}) metadata={'rerandomize': 'always'})
@step(u'I am viewing a "([^"]*)" problem') @step(u'I am viewing a "([^"]*)" problem')
def view_problem(step, problem_type): def view_problem(step, problem_type):
...@@ -108,9 +110,9 @@ def view_problem(step, problem_type): ...@@ -108,9 +110,9 @@ def view_problem(step, problem_type):
# which should be loaded with the correct problem # which should be loaded with the correct problem
chapter_name = TEST_SECTION_NAME.replace(" ", "_") chapter_name = TEST_SECTION_NAME.replace(" ", "_")
section_name = chapter_name section_name = chapter_name
url = django_url('/courses/edx/model_course/Test_Course/courseware/%s/%s' % url = django_url('/courses/edx/model_course/Test_Course/courseware/%s/%s' %
(chapter_name, section_name)) (chapter_name, section_name))
world.browser.visit(url) world.browser.visit(url)
...@@ -147,7 +149,7 @@ def answer_problem(step, problem_type, correctness): ...@@ -147,7 +149,7 @@ def answer_problem(step, problem_type, correctness):
inputfield('string').fill(textvalue) inputfield('string').fill(textvalue)
elif problem_type == 'numerical': elif problem_type == 'numerical':
textvalue = "pi + 1" if correctness == 'correct' else str(random.randint(-2,2)) textvalue = "pi + 1" if correctness == 'correct' else str(random.randint(-2, 2))
inputfield('numerical').fill(textvalue) inputfield('numerical').fill(textvalue)
elif problem_type == 'formula': elif problem_type == 'formula':
...@@ -170,14 +172,17 @@ def answer_problem(step, problem_type, correctness): ...@@ -170,14 +172,17 @@ def answer_problem(step, problem_type, correctness):
# Submit the problem # Submit the problem
check_problem(step) check_problem(step)
@step(u'I check a problem') @step(u'I check a problem')
def check_problem(step): def check_problem(step):
world.browser.find_by_css("input.check").click() world.browser.find_by_css("input.check").click()
@step(u'I reset the problem') @step(u'I reset the problem')
def reset_problem(step): def reset_problem(step):
world.browser.find_by_css('input.reset').click() world.browser.find_by_css('input.reset').click()
@step(u'My "([^"]*)" answer is marked "([^"]*)"') @step(u'My "([^"]*)" answer is marked "([^"]*)"')
def assert_answer_mark(step, problem_type, correctness): def assert_answer_mark(step, problem_type, correctness):
""" Assert that the expected answer mark is visible for a given problem type. """ Assert that the expected answer mark is visible for a given problem type.
...@@ -190,28 +195,28 @@ def assert_answer_mark(step, problem_type, correctness): ...@@ -190,28 +195,28 @@ def assert_answer_mark(step, problem_type, correctness):
This can occur, for example, if the user has reset the problem. """ This can occur, for example, if the user has reset the problem. """
# Dictionaries that map problem types to the css selectors # Dictionaries that map problem types to the css selectors
# for correct/incorrect marks. # for correct/incorrect marks.
# The elements are lists of selectors because a particular problem type # The elements are lists of selectors because a particular problem type
# might be marked in multiple ways. # might be marked in multiple ways.
# For example, multiple choice is marked incorrect differently # For example, multiple choice is marked incorrect differently
# depending on whether the user selects an incorrect # depending on whether the user selects an incorrect
# item or submits without selecting any item) # item or submits without selecting any item)
correct_selectors = { 'drop down': ['span.correct'], correct_selectors = {'drop down': ['span.correct'],
'multiple choice': ['label.choicegroup_correct'], 'multiple choice': ['label.choicegroup_correct'],
'checkbox': ['span.correct'], 'checkbox': ['span.correct'],
'string': ['div.correct'], 'string': ['div.correct'],
'numerical': ['div.correct'], 'numerical': ['div.correct'],
'formula': ['div.correct'], 'formula': ['div.correct'],
'script': ['div.correct'], } 'script': ['div.correct'], }
incorrect_selectors = { 'drop down': ['span.incorrect'], incorrect_selectors = {'drop down': ['span.incorrect'],
'multiple choice': ['label.choicegroup_incorrect', 'multiple choice': ['label.choicegroup_incorrect',
'span.incorrect'], 'span.incorrect'],
'checkbox': ['span.incorrect'], 'checkbox': ['span.incorrect'],
'string': ['div.incorrect'], 'string': ['div.incorrect'],
'numerical': ['div.incorrect'], 'numerical': ['div.incorrect'],
'formula': ['div.incorrect'], 'formula': ['div.incorrect'],
'script': ['div.incorrect'] } 'script': ['div.incorrect']}
assert(correctness in ['correct', 'incorrect', 'unanswered']) assert(correctness in ['correct', 'incorrect', 'unanswered'])
assert(problem_type in correct_selectors and problem_type in incorrect_selectors) assert(problem_type in correct_selectors and problem_type in incorrect_selectors)
...@@ -252,7 +257,7 @@ def inputfield(problem_type, choice=None, input_num=1): ...@@ -252,7 +257,7 @@ def inputfield(problem_type, choice=None, input_num=1):
*choice* is the name of the checkbox input in a group *choice* is the name of the checkbox input in a group
of checkboxes. """ of checkboxes. """
sel = ("input#input_i4x-edx-model_course-problem-%s_2_%s" % sel = ("input#input_i4x-edx-model_course-problem-%s_2_%s" %
(problem_type.replace(" ", "_"), str(input_num))) (problem_type.replace(" ", "_"), str(input_num)))
if choice is not None: if choice is not None:
......
...@@ -2,6 +2,7 @@ from lettuce import world, step ...@@ -2,6 +2,7 @@ from lettuce import world, step
from lettuce.django import django_url from lettuce.django import django_url
from common import TEST_COURSE_ORG, TEST_COURSE_NAME from common import TEST_COURSE_ORG, TEST_COURSE_NAME
@step('I register for the course "([^"]*)"$') @step('I register for the course "([^"]*)"$')
def i_register_for_the_course(step, course): def i_register_for_the_course(step, course):
cleaned_name = TEST_COURSE_NAME.replace(' ', '_') cleaned_name = TEST_COURSE_NAME.replace(' ', '_')
......
...@@ -60,4 +60,4 @@ Feature: There are courses on the homepage ...@@ -60,4 +60,4 @@ Feature: There are courses on the homepage
# Scenario: Navigate through course BerkeleyX/CS184.1x/2012_Fall # Scenario: Navigate through course BerkeleyX/CS184.1x/2012_Fall
# Given I am registered for course "BerkeleyX/CS184.1x/2012_Fall" # Given I am registered for course "BerkeleyX/CS184.1x/2012_Fall"
# And I log in # And I log in
# Then I verify all the content of each course # Then I verify all the content of each course
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment