88
99from openedx_authz .api .data import (
1010 ActionData ,
11+ CCXCourseOverviewData ,
1112 ContentLibraryData ,
1213 CourseOverviewData ,
1314 OrgContentLibraryGlobData ,
@@ -257,6 +258,8 @@ def test_scope_data_registration(self):
257258 self .assertIs (ScopeData .scope_registry ["lib" ], ContentLibraryData )
258259 self .assertIn ("course-v1" , ScopeData .scope_registry )
259260 self .assertIs (ScopeData .scope_registry ["course-v1" ], CourseOverviewData )
261+ self .assertIn ("ccx-v1" , ScopeData .scope_registry )
262+ self .assertIs (ScopeData .scope_registry ["ccx-v1" ], CCXCourseOverviewData )
260263
261264 # Glob registries for organization-level scopes
262265 self .assertIn ("lib" , ScopeMeta .glob_registry )
@@ -265,6 +268,7 @@ def test_scope_data_registration(self):
265268 self .assertIs (ScopeMeta .glob_registry ["course-v1" ], OrgCourseOverviewGlobData )
266269
267270 @data (
271+ ("ccx-v1^ccx-v1:OpenedX+DemoX+DemoCourse+ccx@1" , CCXCourseOverviewData ),
268272 ("course-v1^course-v1:WGU+CS002+2025_T1" , CourseOverviewData ),
269273 ("lib^lib:DemoX:CSPROB" , ContentLibraryData ),
270274 ("lib^lib:DemoX*" , OrgContentLibraryGlobData ),
@@ -285,6 +289,7 @@ def test_dynamic_instantiation_via_namespaced_key(self, namespaced_key, expected
285289 self .assertEqual (instance .namespaced_key , namespaced_key )
286290
287291 @data (
292+ ("ccx-v1^ccx-v1:OpenedX+DemoX+DemoCourse+ccx@1" , CCXCourseOverviewData ),
288293 ("course-v1^course-v1:WGU+CS002+2025_T1" , CourseOverviewData ),
289294 ("lib^lib:DemoX:CSPROB" , ContentLibraryData ),
290295 ("lib^lib:DemoX:*" , OrgContentLibraryGlobData ),
@@ -297,6 +302,8 @@ def test_get_subclass_by_namespaced_key(self, namespaced_key, expected_class):
297302 """Test get_subclass_by_namespaced_key returns correct subclass.
298303
299304 Expected Result:
305+ - 'ccx-v1^...' returns CCXCourseOverviewData
306+ - 'course-v1^...' returns CourseOverviewData
300307 - 'lib^...' returns ContentLibraryData
301308 - 'global^...' returns ScopeData
302309 - 'unknown^...' returns ScopeData (fallback)
@@ -306,6 +313,7 @@ def test_get_subclass_by_namespaced_key(self, namespaced_key, expected_class):
306313 self .assertIs (subclass , expected_class )
307314
308315 @data (
316+ ("ccx-v1:OpenedX+DemoX+DemoCourse+ccx@1" , CCXCourseOverviewData ),
309317 ("course-v1:WGU+CS002+2025_T1" , CourseOverviewData ),
310318 ("lib:DemoX:CSPROB" , ContentLibraryData ),
311319 ("lib:DemoX:*" , OrgContentLibraryGlobData ),
@@ -326,6 +334,11 @@ def test_get_subclass_by_external_key(self, external_key, expected_class):
326334 self .assertIs (subclass , expected_class )
327335
328336 @data (
337+ ("ccx-v1:OpenedX+DemoX+DemoCourse+ccx@1" , True , CCXCourseOverviewData ),
338+ ("ccx:OpenedX+DemoX+DemoCourse+ccx@1" , False , CCXCourseOverviewData ),
339+ ("ccx-v2:OpenedX+DemoX+DemoCourse+ccx@1" , False , CCXCourseOverviewData ),
340+ ("ccx-v1-OpenedX+DemoX+DemoCourse+ccx@1" , False , CCXCourseOverviewData ),
341+ ("ccx-v1-OpenedX+DemoX+DemoCourse+ccx" , False , CCXCourseOverviewData ),
329342 ("course-v1:WGU+CS002+2025_T1" , True , CourseOverviewData ),
330343 ("course:WGU+CS002+2025_T1" , False , CourseOverviewData ),
331344 ("course-v2:WGU+CS002+2025_T1" , False , CourseOverviewData ),
0 commit comments