diff --git a/openassessment/__init__.py b/openassessment/__init__.py index 8fa3bf70a4..06b28d49e0 100644 --- a/openassessment/__init__.py +++ b/openassessment/__init__.py @@ -2,4 +2,4 @@ Initialization Information for Open Assessment Module """ -__version__ = '6.0.32' +__version__ = '6.0.33' diff --git a/openassessment/xblock/test/test_xml.py b/openassessment/xblock/test/test_xml.py index 1d258e273f..0013b6bbf8 100644 --- a/openassessment/xblock/test/test_xml.py +++ b/openassessment/xblock/test/test_xml.py @@ -216,6 +216,40 @@ def test_serialize_assessments(self, data): xml_str = serialize_assessments_to_xml_str(self.oa_block) self.assertIn(data['assessments'][0]['name'], xml_str) + @ddt.file_data('data/serialize.json') + def test_serialize_with_tags(self, data): + self._configure_xblock(data) + + # Create a mocked serialize tag data method that returns no data + def add_tags_to_node_no_tags(node): # pylint: disable=unused-argument + return + + # Manually add the mocked method to the OpenAssessment block instance + # This method will be added in the edx-platform repo through applying XBLOCK_MIXINS + self.oa_block.add_tags_to_node = add_tags_to_node_no_tags + + xml = serialize_content(self.oa_block) + + # Confirm that no tags appear in the xml + self.assertNotIn("tags-v1", xml) + + # Create a mocked serialize tag data method that returns data + def add_tags_to_node_with_tags(node): + # return "lightcast-skills:Typing,Microsoft Office" + node.set('tags-v1', 'lightcast-skills:Typing,Microsoft Office') + + # Manually add the mocked method to the OpenAssessment block instance + # This method will be added in the edx-platform repo through applying XBLOCK_MIXINS + self.oa_block.add_tags_to_node = add_tags_to_node_with_tags + + xml = serialize_content(self.oa_block) + + # Confirm that tags appear in the xml + self.assertIn("tags-v1=\"lightcast-skills:Typing,Microsoft Office\"", xml) + + # Clear the mocked serialize tag data method + del self.oa_block.add_tags_to_node + def test_mutated_criteria_dict(self): self._configure_xblock({}) diff --git a/openassessment/xblock/utils/xml.py b/openassessment/xblock/utils/xml.py index dea0279b41..7c3dbef788 100644 --- a/openassessment/xblock/utils/xml.py +++ b/openassessment/xblock/utils/xml.py @@ -772,6 +772,11 @@ def serialize_content_to_xml(oa_block, root): if oa_block.show_rubric_during_response is not None: root.set('show_rubric_during_response', str(oa_block.show_rubric_during_response)) + # Serialize and add tag data if any + if hasattr(oa_block, 'add_tags_to_node') and callable(oa_block.add_tags_to_node): # pylint: disable=no-member + # This comes from TaggedBlockMixin + oa_block.add_tags_to_node(root) # pylint: disable=no-member + def serialize_content(oa_block): """ diff --git a/package-lock.json b/package-lock.json index f5d617a0e8..0e16eec9ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "edx-ora2", - "version": "6.0.31", + "version": "6.0.33", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "edx-ora2", - "version": "6.0.31", + "version": "6.0.33", "dependencies": { "@edx/frontend-build": "8.0.6", "@openedx/paragon": "^21.5.7", diff --git a/package.json b/package.json index 5d586179c4..bf9fd5f930 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "edx-ora2", - "version": "6.0.32", + "version": "6.0.33", "repository": "https://github.com/openedx/edx-ora2.git", "dependencies": { "@edx/frontend-build": "8.0.6",