class CheckboxTextProblemTypeBase(ChoiceTextProblemTypeTestBase): """ ProblemTypeTestBase specialization for Checkbox Text Problem Type """ problem_name = 'CHECKBOX TEXT TEST PROBLEM' problem_type = 'checkbox_text' choice_type = 'checkbox' factory = ChoiceTextResponseXMLFactory() partially_correct = False can_update_save_notification = False factory_kwargs = { 'question_text': 'The correct answer is Choice 0 and input 8', 'type': 'checkboxtextgroup', 'choices': [ ("true", {"answer": "8", "tolerance": "1"}), ("false", {"answer": "8", "tolerance": "1"}), ], } def setUp(self, *args, **kwargs): """ Additional setup for CheckboxTextProblemTypeBase """ super(CheckboxTextProblemTypeBase, self).setUp(*args, **kwargs) self.problem_page.a11y_audit.config.set_rules({ "ignore": [ 'checkboxgroup', # TODO: AC-491 'label', # TODO: AC-491 'section', # TODO: AC-491 ] })
class CheckboxTextProblemTypeTest(ChoiceTextProbelmTypeTestBase, ProblemTypeTestMixin): """ TestCase Class for Checkbox Text Problem Type """ problem_name = 'CHECKBOX TEXT TEST PROBLEM' problem_type = 'checkbox_text' choice_type = 'checkbox' factory = ChoiceTextResponseXMLFactory() factory_kwargs = { 'question_text': 'The correct answer is Choice 0 and input 8', 'type': 'checkboxtextgroup', 'choices': [ ("true", {"answer": "8", "tolerance": "1"}), ("false", {"answer": "8", "tolerance": "1"}), ], } def setUp(self, *args, **kwargs): """ Additional setup for CheckboxTextProblemTypeTest """ super(CheckboxTextProblemTypeTest, self).setUp(*args, **kwargs) self.problem_page.a11y_audit.config.set_rules({ 'ignore': [ 'label', # TODO: AC-284 'checkboxgroup', # TODO: AC-284 ] })
class RadioTextProblemTypeTest(ChoiceTextProbelmTypeTestBase, ProblemTypeTestMixin): """ TestCase Class for Radio Text Problem Type """ problem_name = 'RADIO TEXT TEST PROBLEM' problem_type = 'radio_text' choice_type = 'radio' factory = ChoiceTextResponseXMLFactory() factory_kwargs = { 'question_text': 'The correct answer is Choice 0 and input 8', 'type': 'radiotextgroup', 'choices': [ ("true", {"answer": "8", "tolerance": "1"}), ("false", {"answer": "8", "tolerance": "1"}), ], } status_indicators = { 'correct': ['section.choicetextgroup_correct'], 'incorrect': ['section.choicetextgroup_incorrect', 'span.incorrect'], 'unanswered': ['span.unanswered'], } def setUp(self, *args, **kwargs): """ Additional setup for RadioTextProblemTypeTest """ super(RadioTextProblemTypeTest, self).setUp(*args, **kwargs)
class RadioTextProblemTypeBase(ChoiceTextProblemTypeTestBase): """ ProblemTypeTestBase specialization for Radio Text Problem Type """ problem_name = 'RADIO TEXT TEST PROBLEM' problem_type = 'radio_text' choice_type = 'radio' partially_correct = False can_update_save_notification = False factory = ChoiceTextResponseXMLFactory() factory_kwargs = { 'question_text': 'The correct answer is Choice 0 and input 8', 'type': 'radiotextgroup', 'choices': [ ("true", { "answer": "8", "tolerance": "1" }), ("false", { "answer": "8", "tolerance": "1" }), ], } status_indicators = { 'correct': ['section.choicetextgroup_correct'], 'incorrect': ['section.choicetextgroup_incorrect', 'span.incorrect'], 'unanswered': ['span.unanswered'], 'submitted': ['section.choicetextgroup_submitted', 'span.submitted'], } def setUp(self, *args, **kwargs): """ Additional setup for RadioTextProblemTypeBase """ super(RadioTextProblemTypeBase, self).setUp(*args, **kwargs) self.problem_page.a11y_audit.config.set_rules({ "ignore": [ 'radiogroup', # TODO: AC-491 'label', # TODO: AC-491 'section', # TODO: AC-491 ] })
'incorrect': ['div.incorrect'], 'unanswered': ['div.unanswered'] }, 'code': { 'factory': CodeResponseXMLFactory(), 'kwargs': { 'question_text': 'Submit code to an external grader', 'initial_display': 'print "Hello world!"', 'grader_payload': '{"grader": "ps1/Spring2013/test_grader.py"}', }, 'correct': ['span.correct'], 'incorrect': ['span.incorrect'], 'unanswered': ['span.unanswered'] }, 'radio_text': { 'factory': ChoiceTextResponseXMLFactory(), 'kwargs': { 'question_text': 'The correct answer is Choice 0 and input 8', 'type': 'radiotextgroup', 'choices': [("true", { "answer": "8", "tolerance": "1" }), ("false", { "answer": "8", "tolerance": "1" })] }, 'correct': ['section.choicetextgroup_correct'], 'incorrect': ['section.choicetextgroup_incorrect', 'span.incorrect'],
class RadioTextProblemTypeBase(ChoiceTextProblemTypeTestBase): """ ProblemTypeTestBase specialization for Radio Text Problem Type """ problem_name = 'RADIO TEXT TEST PROBLEM' problem_type = 'radio_text' choice_type = 'radio' partially_correct = False can_update_save_notification = False factory = ChoiceTextResponseXMLFactory() factory_kwargs = { 'question_text': 'The correct answer is Choice 0 and input 8', 'type': 'radiotextgroup', 'choices': [ ("true", { "answer": "8", "tolerance": "1" }), ("false", { "answer": "8", "tolerance": "1" }), ], } status_indicators = { 'correct': ['section.choicetextgroup_correct'], 'incorrect': ['section.choicetextgroup_incorrect', 'span.incorrect'], 'unanswered': ['span.unanswered'], 'submitted': ['section.choicetextgroup_submitted', 'span.submitted'], } def problem_status(self, status): """ Returns the status of problem Args: status(string): status of the problem which is to be checked Returns: True: If provided status is present on the page False: If provided status is not present on the page """ selector = ', '.join(self.status_indicators[status]) try: self.problem_page.wait_for_element_visibility(selector, 'Status not present', timeout=10) return True except BrokenPromise: return False def setUp(self, *args, **kwargs): """ Additional setup for RadioTextProblemTypeBase """ super(RadioTextProblemTypeBase, self).setUp(*args, **kwargs) # lint-amnesty, pylint: disable=super-with-arguments self.problem_page.a11y_audit.config.set_rules({ "ignore": [ 'radiogroup', # TODO: AC-491 'label', # TODO: AC-491 'section', # TODO: AC-491 ] })