def test_export_default_discussion_id(self): """ Test that default discussion_id values are not exported. Historically, the OLX format allowed omitting discussion ID values; in such case, the IDs are generated deterministically based on the course ID and the usage ID. Moreover, Studio does not allow course authors to edit discussion_id, so all courses authored in Studio have discussion_id omitted in OLX. Forcing Studio to always export discussion_id can cause data loss when switching between an older and newer export, in a course with a course ID different from the one from which the export was created - because the discussion ID would be different. """ target_node = etree.Element('dummy') block = DiscussionXBlock(self.runtime_mock, scope_ids=self.keys, field_data=DictFieldData({})) discussion_id_field = block.fields['discussion_id'] # precondition checks - discussion_id does not have a value and uses UNIQUE_ID self.assertEqual( discussion_id_field._get_cached_value(block), # pylint: disable=protected-access NO_CACHE_VALUE) self.assertEqual(discussion_id_field.default, UNIQUE_ID) block.add_xml_to_node(target_node) self.assertEqual(target_node.tag, "discussion") self.assertNotIn("discussion_id", target_node.attrib)
def test_export_custom_discussion_id(self, discussion_id): """ Test that custom discussion_id values are exported """ target_node = etree.Element('dummy') block = DiscussionXBlock(self.runtime_mock, scope_ids=self.keys, field_data=DictFieldData({})) block.discussion_id = discussion_id # precondition check self.assertEqual(block.discussion_id, discussion_id) block.add_xml_to_node(target_node) self.assertEqual(target_node.tag, "discussion") self.assertTrue(target_node.attrib["discussion_id"], discussion_id)
def test_export_custom_discussion_id(self, discussion_id): """ Test that custom discussion_id values are exported """ target_node = etree.Element('dummy') block = DiscussionXBlock(self.runtime_mock, scope_ids=self.keys, field_data=DictFieldData({})) block.discussion_id = discussion_id # precondition check assert block.discussion_id == discussion_id block.add_xml_to_node(target_node) assert target_node.tag == 'discussion' assert target_node.attrib['discussion_id'], discussion_id