Files
edx-platform/xmodule/tests/test_resource_templates.py
Keith Grootboom ed81774569 feat: added new setting CUSTOM_RESOURCE_TEMPLATES_DIRECTORY
This setting allows loading of Resource Templates from outside the
edx-platform codebase.

Operators will be able to add their own custom resource templates
without needing to fork the codebase.
2022-07-20 08:44:34 +02:00

85 lines
2.4 KiB
Python

"""
Tests for xmodule.x_module.ResourceTemplates
"""
import pathlib
import unittest
from django.test import override_settings
from xmodule.x_module import ResourceTemplates
CUSTOM_RESOURCE_TEMPLATES_DIRECTORY = pathlib.Path(__file__).parent.parent / "templates/"
class ResourceTemplatesTests(unittest.TestCase):
"""
Tests for xmodule.x_module.ResourceTemplates
"""
def test_templates(self):
expected = {
'latex_html.yaml',
'zooming_image.yaml',
'announcement.yaml',
'anon_user_id.yaml'}
got = {t['template_id'] for t in TestClass.templates()}
assert expected == got
def test_templates_no_suchdir(self):
assert len(TestClass2.templates()) == 0
def test_get_template(self):
assert TestClass.get_template('latex_html.yaml')['template_id'] == 'latex_html.yaml'
@override_settings(CUSTOM_RESOURCE_TEMPLATES_DIRECTORY=CUSTOM_RESOURCE_TEMPLATES_DIRECTORY)
def test_get_custom_template(self):
assert TestClassResourceTemplate.get_template('latex_html.yaml')['template_id'] == 'latex_html.yaml'
@override_settings(CUSTOM_RESOURCE_TEMPLATES_DIRECTORY=CUSTOM_RESOURCE_TEMPLATES_DIRECTORY)
def test_custom_templates(self):
expected = {
'latex_html.yaml',
'zooming_image.yaml',
'announcement.yaml',
'anon_user_id.yaml'}
got = {t['template_id'] for t in TestClassResourceTemplate.templates()}
assert expected == got
class TestClass(ResourceTemplates):
"""
Derives from the class under test for testing purposes.
Since `ResourceTemplates` is intended to be used as a mixin, we need to
derive a class from it in order to fill in some data it's expecting to find
in its mro.
"""
template_packages = ['xmodule']
@classmethod
def get_template_dir(cls):
return 'templates/test'
class TestClass2(TestClass):
"""
Like TestClass, but `get_template_dir` returns a directory that doesn't
exist.
See `TestClass`.
"""
@classmethod
def get_template_dir(cls):
return 'foo'
class TestClassResourceTemplate(ResourceTemplates):
"""
Like TestClass, but `template_packages` contains a module that doesn't
have any templates.
See `TestClass`.
"""
template_packages = ['capa.checker']
template_dir_name = 'test'