def make_oembed_block(cls): """ helper to construct a OEmbedBlock """ runtime = WorkbenchRuntime() key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) ids = generate_scope_ids(runtime, 'oembed') return OEmbedXBlock(runtime, db_model, scope_ids=ids)
def make_calendar_block(cls): """ helper to construct a GoogleCalendarBlock """ runtime = WorkbenchRuntime() key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) ids = generate_scope_ids(runtime, 'google_calendar') return GoogleCalendarBlock(runtime, db_model, scope_ids=ids)
def test_problem_submission(): runtime = WorkbenchRuntime() # WorkbenchRuntime has an id_generator, but most runtimes won't # (because the generator will be contextual), so we # pass it explicitly to parse_xml_string. problem_usage_id = runtime.parse_xml_string( """ <problem_demo> <textinput_demo name='vote_count' input_type='int'/> <script> numvotes = 4 </script> <equality_demo name='votes_named' left='./vote_count/@student_input' right='$numvotes'> Number of upvotes matches entered string </equality_demo> </problem_demo> """, runtime.id_generator) problem = runtime.get_block(problem_usage_id) json_data = json.dumps({"vote_count": [{"name": "input", "value": "4"}]}) resp = runtime.handle(problem, 'check', make_request(json_data)) resp_data = json.loads(text_of_response(resp).decode('utf-8')) assert resp_data['checkResults']['votes_named'] == True assert resp_data['checkResults']['votes_named'] == True
def load_root_xblock(self, student_id="student_1"): """ Load (in Python) the XBlock at the root of the current scenario. """ dom_node = self.browser.find_element_by_css_selector('.workbench .preview > div.xblock-v1:first-child') usage_id = dom_node.get_attribute('data-usage') runtime = WorkbenchRuntime(student_id) return runtime.get_block(usage_id)
def setUp(self): """ Create the runtime. """ super().setUp() self.runtime = WorkbenchRuntime() mock_publish = mock.MagicMock(side_effect=self.runtime.publish) self.runtime.publish = mock_publish
def setUp(self): """ Create the runtime. """ super(XBlockHandlerTestCaseMixin, self).setUp() self.runtime = WorkbenchRuntime() mock_publish = mock.MagicMock(side_effect=self.runtime.publish) self.runtime.publish = mock_publish
def pdf_xblock(): """PDF XBlock pytest fixture.""" runtime = WorkbenchRuntime() key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) ids = generate_scope_ids(runtime, 'pdf') pdf_xblock = PDFXBlock(runtime, db_model, scope_ids=ids) pdf_xblock.usage_id = Mock() return pdf_xblock
def feedback_xblock(): """Feedback XBlock pytest fixture.""" runtime = WorkbenchRuntime() key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) ids = generate_scope_ids(runtime, 'feedback') feedback_xblock = FeedbackXBlock(runtime, db_model, scope_ids=ids) feedback_xblock.usage_id = Mock() return feedback_xblock
def setUp(self): block_type = 'hastexo' key_store = DictKeyValueStore() field_data = KvsFieldData(key_store) runtime = WorkbenchRuntime() def_id = runtime.id_generator.create_definition(block_type) usage_id = runtime.id_generator.create_usage(def_id) scope_ids = ScopeIds('user', block_type, def_id, usage_id) self.block = HastexoXBlock(runtime, field_data, scope_ids=scope_ids)
def make_block(): """ Instantiate a DragAndDropBlock XBlock inside a WorkbenchRuntime """ block_type = 'drag_and_drop_v2' key_store = DictKeyValueStore() field_data = KvsFieldData(key_store) runtime = WorkbenchRuntime() def_id = runtime.id_generator.create_definition(block_type) usage_id = runtime.id_generator.create_usage(def_id) scope_ids = ScopeIds('user', block_type, def_id, usage_id) return drag_and_drop_v2.DragAndDropBlock(runtime, field_data, scope_ids=scope_ids)
def make_block(self): block_type = 'diagnostic_feedback' key_store = DictKeyValueStore() field_data = KvsFieldData(key_store) runtime = WorkbenchRuntime() def_id = runtime.id_generator.create_definition(block_type) usage_id = runtime.id_generator.create_usage(def_id) scope_ids = ScopeIds('user', block_type, def_id, usage_id) return diagnostic_feedback.QuizBlock(runtime, field_data, scope_ids=scope_ids)
def make_xblock(xblock_name, xblock_cls, attributes): """ Helper to construct XBlock objects """ runtime = WorkbenchRuntime() key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) ids = generate_scope_ids(runtime, xblock_name) xblock = xblock_cls(runtime, db_model, scope_ids=ids) xblock.category = Mock() xblock.location = Mock(html_id=Mock(return_value='sample_element_id'), ) xblock.runtime = Mock(hostname='localhost', ) xblock.course_id = 'course-v1:edX+DemoX+Demo_Course' for key, value in attributes.items(): setattr(xblock, key, value) return xblock
def test_child_isinstance_descendants(self): """ Check that child_isinstance() works on deeper descendants """ self.runtime = WorkbenchRuntime() self.root_id = self.runtime.parse_xml_string( '<block> <block><cat/><gr/></block> <cat/> <gr/> </block>') root = self.runtime.get_block(self.root_id) block = root.runtime.get_block(root.children[0]) self.assertIsInstance(block, BasicXBlock) self.assertFalse(child_isinstance(root, block.children[0], DogXBlock)) self.assertTrue(child_isinstance(root, block.children[0], CatXBlock)) self.assertTrue(child_isinstance(root, block.children[1], DogXBlock)) self.assertTrue( child_isinstance(root, block.children[1], GoldenRetrieverXBlock)) self.assertFalse(child_isinstance(root, block.children[1], CatXBlock))
def test_problem_submission(): runtime = WorkbenchRuntime() problem_usage_id = runtime.parse_xml_string(""" <problem> <textinput name='vote_count' input_type='int'/> <script> numvotes = 4 </script> <equality name='votes_named' left='./vote_count/@student_input' right='$numvotes'> Number of upvotes matches entered string </equality> </problem> """) problem = runtime.get_block(problem_usage_id) json_data = json.dumps({"vote_count": [{"name": "input", "value": "4"}]}) resp = runtime.handle(problem, 'check', make_request(json_data)) resp_data = json.loads(text_of_response(resp)) assert_equals(resp_data['checkResults']['votes_named'], True)
def test_child_isinstance(self): """ Check that child_isinstance() works on direct children """ self.runtime = WorkbenchRuntime() self.root_id = self.runtime.parse_xml_string( '<block> <block><cat/><gr/></block> <cat/> <gr/> </block>') root = self.runtime.get_block(self.root_id) self.assertFalse(child_isinstance(root, root.children[0], DogXBlock)) self.assertFalse( child_isinstance(root, root.children[0], GoldenRetrieverXBlock)) self.assertTrue(child_isinstance(root, root.children[0], BasicXBlock)) self.assertFalse(child_isinstance(root, root.children[1], DogXBlock)) self.assertFalse( child_isinstance(root, root.children[1], GoldenRetrieverXBlock)) self.assertTrue(child_isinstance(root, root.children[1], CatXBlock)) self.assertFalse(child_isinstance(root, root.children[2], CatXBlock)) self.assertTrue(child_isinstance(root, root.children[2], DogXBlock)) self.assertTrue( child_isinstance(root, root.children[2], GoldenRetrieverXBlock))
def get_root(self): self.runtime = WorkbenchRuntime() self.root_id = self.runtime.parse_xml_string('<showanswer />') return self.runtime.get_block(self.root_id)
def setUp(self): super(TestChildIsInstance, self).setUp() self.runtime = WorkbenchRuntime() self.root_id = self.runtime.parse_xml_string( '<block> <block><cat/><gr/></block> <cat/> <gr/> </block>')
def setUp(self): """Create the runtime. """ super(XBlockHandlerTestCaseMixin, self).setUp() self.runtime = WorkbenchRuntime()
def setUp(self): super().setUp() self.runtime = WorkbenchRuntime()
def make_block(): runtime = WorkbenchRuntime() key_store = DictKeyValueStore() db_model = KvsFieldData(key_store) return drag_and_drop_v2.DragAndDropBlock(runtime, db_model, Mock())
def setUp(self): """Create the runtime. """ super().setUp() self.runtime = WorkbenchRuntime()
def setUp(self): super(TestShowAnswerXBlock, self).setUp() self.runtime = WorkbenchRuntime()
def setUp(self): super(XmlTest, self).setUp() self.runtime = WorkbenchRuntime()