class ImageProblemTypeTest(ProblemTypeTestBase, ProblemTypeTestMixin): """ TestCase Class for Image Problem Type """ problem_name = 'IMAGE TEST PROBLEM' problem_type = 'image' factory = ImageResponseXMLFactory() can_submit_blank = True factory_kwargs = { 'src': '/static/images/placeholder-image.png', 'rectangle': '(0,0)-(50,50)', } def answer_problem(self, correct): """ Answer image problem. """ offset = 25 if correct else -25 input_selector = ".imageinput [id^='imageinput_'] img" input_element = self.problem_page.q(css=input_selector)[0] chain = ActionChains(self.browser) chain.move_to_element(input_element) chain.move_by_offset(offset, offset) chain.click() chain.perform()
class ImageProblemTypeBase(ProblemTypeTestBase): """ ProblemTypeTestBase specialization for Image Problem Type """ problem_name = 'IMAGE TEST PROBLEM' problem_type = 'image' partially_correct = False factory = ImageResponseXMLFactory() can_submit_blank = True can_update_save_notification = False factory_kwargs = { 'src': '/static/images/placeholder-image.png', 'rectangle': '(0,0)-(50,50)', } def answer_problem(self, correctness): """ Answer image problem. """ offset = 25 if correctness == 'correct' else -25 input_selector = ".imageinput [id^='imageinput_'] img" input_element = self.problem_page.q(css=input_selector)[0] chain = ActionChains(self.browser) chain.move_to_element(input_element) chain.move_by_offset(offset, offset) chain.click() chain.perform()
'type': 'checkboxtextgroup', 'choices': [("true", { "answer": "8", "tolerance": "1" }), ("false", { "answer": "8", "tolerance": "1" })] }, 'correct': ['span.correct'], 'incorrect': ['span.incorrect'], 'unanswered': ['span.unanswered'] }, 'image': { 'factory': ImageResponseXMLFactory(), 'kwargs': { 'src': '/static/images/placeholder-image.png', 'rectangle': '(50,50)-(100,100)' }, 'correct': ['span.correct'], 'incorrect': ['span.incorrect'], 'unanswered': ['span.unanswered'] } } def answer_problem(course, problem_type, correctness): # Make sure that the problem has been completely rendered before # starting to input an answer. world.wait_for_ajax_complete()