Skip to content

Commit 5e0828f

Browse files
committed
test: add test cases
1 parent 9d1e83a commit 5e0828f

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

xblock/test/test_core.py

+65
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,19 @@
1313

1414
import ddt
1515
import pytest
16+
from lxml import etree
1617
from opaque_keys.edx.locator import LibraryUsageLocatorV2, LibraryLocatorV2
1718
from webob import Response
1819

1920
from xblock.core import Blocklike, XBlock
21+
from xblock.core import (
22+
name_to_pathname,
23+
is_pointer_tag,
24+
load_definition_xml,
25+
format_filepath,
26+
file_to_xml,
27+
XML_PARSER,
28+
)
2029
from xblock.exceptions import (
2130
XBlockSaveError,
2231
KeyValueMultiSaveError,
@@ -1163,3 +1172,59 @@ def test_key_properties_when_usage_is_not_an_opaque_key(self):
11631172
block = XBlock(Mock(spec=Runtime), scope_ids=scope_ids)
11641173
self.assertEqual(block.usage_key, "myWeirdOldUsageId")
11651174
self.assertIsNone(block.context_key)
1175+
1176+
1177+
class TestCoreFunctions(unittest.TestCase):
1178+
"""
1179+
Tests for core functions in XBlock.
1180+
"""
1181+
def test_name_to_pathname(self):
1182+
self.assertEqual(name_to_pathname("course:subcourse"), "course/subcourse")
1183+
self.assertEqual(name_to_pathname("module:lesson:part"), "module/lesson/part")
1184+
self.assertEqual(name_to_pathname("no_colon"), "no_colon")
1185+
1186+
def test_is_pointer_tag(self):
1187+
# Case 1: Valid pointer tag
1188+
xml_obj = etree.Element("some_tag", url_name="test_url")
1189+
self.assertTrue(is_pointer_tag(xml_obj))
1190+
1191+
# Case 2: Valid course pointer tag
1192+
xml_obj = etree.Element("course", url_name="test_url", course="test_course", org="test_org")
1193+
self.assertTrue(is_pointer_tag(xml_obj))
1194+
1195+
# Case 3: Invalid case - extra attribute
1196+
xml_obj = etree.Element("some_tag", url_name="test_url", extra_attr="invalid")
1197+
self.assertFalse(is_pointer_tag(xml_obj))
1198+
1199+
# Case 4: Invalid case - has text
1200+
xml_obj = etree.Element("some_tag", url_name="test_url")
1201+
xml_obj.text = "invalid_text"
1202+
self.assertFalse(is_pointer_tag(xml_obj))
1203+
1204+
# Case 5: Invalid case - has children
1205+
xml_obj = etree.Element("some_tag", url_name="test_url")
1206+
_ = etree.SubElement(xml_obj, "child")
1207+
self.assertFalse(is_pointer_tag(xml_obj))
1208+
1209+
@patch("xblock.core.load_file")
1210+
def test_load_definition_xml(self, mock_load_file):
1211+
mock_load_file.return_value = "<mock_xml />"
1212+
node = etree.Element("course", url_name="test_url")
1213+
runtime = Mock()
1214+
def_id = "mock_id"
1215+
1216+
definition_xml, filepath = load_definition_xml(node, runtime, def_id)
1217+
self.assertEqual(filepath, "course/test_url.xml")
1218+
self.assertEqual(definition_xml, "<mock_xml />")
1219+
mock_load_file.assert_called_once()
1220+
1221+
def test_format_filepath(self):
1222+
self.assertEqual(format_filepath("course", "test_url"), "course/test_url.xml")
1223+
1224+
@patch("xblock.core.etree.parse")
1225+
def test_file_to_xml(self, mock_etree_parse):
1226+
mock_etree_parse.return_value.getroot.return_value = "mock_xml_root"
1227+
file_object = Mock()
1228+
result = file_to_xml(file_object)
1229+
self.assertEqual(result, "mock_xml_root")
1230+
mock_etree_parse.assert_called_once_with(file_object, parser=XML_PARSER)

0 commit comments

Comments
 (0)