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)
Example #2
0
 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)
Example #3
0
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
Example #4
0
 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)
Example #5
0
 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
Example #6
0
 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
Example #7
0
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
Example #8
0
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
Example #9
0
    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)
Example #11
0
 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)
Example #12
0
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
Example #13
0
    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))
Example #14
0
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)
Example #15
0
    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))
Example #16
0
 def get_root(self):
     self.runtime = WorkbenchRuntime()
     self.root_id = self.runtime.parse_xml_string('<showanswer />')
     return self.runtime.get_block(self.root_id)
Example #17
0
 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>')
Example #18
0
 def setUp(self):
     """Create the runtime. """
     super(XBlockHandlerTestCaseMixin, self).setUp()
     self.runtime = WorkbenchRuntime()
Example #19
0
    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())
Example #21
0
 def setUp(self):
     """Create the runtime. """
     super().setUp()
     self.runtime = WorkbenchRuntime()
Example #22
0
    def setUp(self):
        super(TestShowAnswerXBlock, self).setUp()

        self.runtime = WorkbenchRuntime()
Example #23
0
 def setUp(self):
     super(XmlTest, self).setUp()
     self.runtime = WorkbenchRuntime()