Skip to content

Commit b3eb22a

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

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

xblock/test/test_core.py

+55
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,17 @@
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+
)
2027
from xblock.exceptions import (
2128
XBlockSaveError,
2229
KeyValueMultiSaveError,
@@ -1163,3 +1170,51 @@ def test_key_properties_when_usage_is_not_an_opaque_key(self):
11631170
block = XBlock(Mock(spec=Runtime), scope_ids=scope_ids)
11641171
self.assertEqual(block.usage_key, "myWeirdOldUsageId")
11651172
self.assertIsNone(block.context_key)
1173+
1174+
1175+
class TestCoreFunctions(unittest.TestCase):
1176+
"""
1177+
Tests for core functions in XBlock.
1178+
"""
1179+
def test_name_to_pathname(self):
1180+
self.assertEqual(name_to_pathname("course:subcourse"), "course/subcourse")
1181+
self.assertEqual(name_to_pathname("module:lesson:part"), "module/lesson/part")
1182+
self.assertEqual(name_to_pathname("no_colon"), "no_colon")
1183+
1184+
def test_is_pointer_tag(self):
1185+
# Case 1: Valid pointer tag
1186+
xml_obj = etree.Element("some_tag", url_name="test_url")
1187+
self.assertTrue(is_pointer_tag(xml_obj))
1188+
1189+
# Case 2: Valid course pointer tag
1190+
xml_obj = etree.Element("course", url_name="test_url", course="test_course", org="test_org")
1191+
self.assertTrue(is_pointer_tag(xml_obj))
1192+
1193+
# Case 3: Invalid case - extra attribute
1194+
xml_obj = etree.Element("some_tag", url_name="test_url", extra_attr="invalid")
1195+
self.assertFalse(is_pointer_tag(xml_obj))
1196+
1197+
# Case 4: Invalid case - has text
1198+
xml_obj = etree.Element("some_tag", url_name="test_url")
1199+
xml_obj.text = "invalid_text"
1200+
self.assertFalse(is_pointer_tag(xml_obj))
1201+
1202+
# Case 5: Invalid case - has children
1203+
xml_obj = etree.Element("some_tag", url_name="test_url")
1204+
_ = etree.SubElement(xml_obj, "child")
1205+
self.assertFalse(is_pointer_tag(xml_obj))
1206+
1207+
@patch("xblock.core.load_file")
1208+
def test_load_definition_xml(self, mock_load_file):
1209+
mock_load_file.return_value = "<mock_xml />"
1210+
node = etree.Element("course", url_name="test_url")
1211+
runtime = Mock()
1212+
def_id = "mock_id"
1213+
1214+
definition_xml, filepath = load_definition_xml(node, runtime, def_id)
1215+
self.assertEqual(filepath, "course/test_url.xml")
1216+
self.assertEqual(definition_xml, "<mock_xml />")
1217+
mock_load_file.assert_called_once()
1218+
1219+
def test_format_filepath(self):
1220+
self.assertEqual(format_filepath("course", "test_url"), "course/test_url.xml")

0 commit comments

Comments
 (0)