mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-11-14 17:24:08 +00:00
34c8eeeaec
When a v1 plugin was installed, several things were happening regarding tests: 1. v1 plugin loading was happening despite the TUTOR_IGNORE_ENTRYPOINT_PLUGINS environment variable. 2. the CORE_READY event was not triggered because it was happening just once at import time. This was causing some tests to incorrectly load the MFE plugin.
83 lines
3.3 KiB
Python
83 lines
3.3 KiB
Python
import re
|
|
import unittest
|
|
from io import StringIO
|
|
from unittest.mock import patch
|
|
|
|
from tests.helpers import TestContext, temporary_root
|
|
from tutor import config as tutor_config
|
|
from tutor import jobs
|
|
|
|
|
|
class JobsTests(unittest.TestCase):
|
|
@patch("sys.stdout", new_callable=StringIO)
|
|
def test_initialise(self, mock_stdout: StringIO) -> None:
|
|
with temporary_root() as root:
|
|
context = TestContext(root)
|
|
config = tutor_config.load_full(root)
|
|
runner = context.job_runner(config)
|
|
jobs.initialise(runner)
|
|
output = mock_stdout.getvalue().strip()
|
|
self.assertTrue(output.startswith("Initialising all services..."))
|
|
self.assertTrue(output.endswith("All services initialised."))
|
|
|
|
def test_create_user_command_without_staff(self) -> None:
|
|
command = jobs.create_user_command("superuser", False, "username", "email")
|
|
self.assertNotIn("--staff", command)
|
|
|
|
def test_create_user_command_with_staff(self) -> None:
|
|
command = jobs.create_user_command("superuser", True, "username", "email")
|
|
self.assertIn("--staff", command)
|
|
|
|
def test_create_user_command_with_staff_with_password(self) -> None:
|
|
command = jobs.create_user_command(
|
|
"superuser", True, "username", "email", "command"
|
|
)
|
|
self.assertIn("set_password", command)
|
|
|
|
@patch("sys.stdout", new_callable=StringIO)
|
|
def test_import_demo_course(self, mock_stdout: StringIO) -> None:
|
|
with temporary_root() as root:
|
|
context = TestContext(root)
|
|
config = tutor_config.load_full(root)
|
|
runner = context.job_runner(config)
|
|
jobs.import_demo_course(runner)
|
|
|
|
output = mock_stdout.getvalue()
|
|
service = re.search(r"Service: (\w*)", output)
|
|
commands = re.search(r"(-----)([\S\s]+)(-----)", output)
|
|
assert service is not None
|
|
assert commands is not None
|
|
self.assertEqual(service.group(1), "cms")
|
|
self.assertTrue(
|
|
commands.group(2)
|
|
.strip()
|
|
.startswith('echo "Loading settings $DJANGO_SETTINGS_MODULE"')
|
|
)
|
|
|
|
@patch("sys.stdout", new_callable=StringIO)
|
|
def test_set_theme(self, mock_stdout: StringIO) -> None:
|
|
with temporary_root() as root:
|
|
context = TestContext(root)
|
|
config = tutor_config.load_full(root)
|
|
runner = context.job_runner(config)
|
|
jobs.set_theme("sample_theme", ["domain1", "domain2"], runner)
|
|
|
|
output = mock_stdout.getvalue()
|
|
service = re.search(r"Service: (\w*)", output)
|
|
commands = re.search(r"(-----)([\S\s]+)(-----)", output)
|
|
assert service is not None
|
|
assert commands is not None
|
|
self.assertEqual(service.group(1), "lms")
|
|
self.assertTrue(
|
|
commands.group(2)
|
|
.strip()
|
|
.startswith('echo "Loading settings $DJANGO_SETTINGS_MODULE"')
|
|
)
|
|
|
|
def test_get_all_openedx_domains(self) -> None:
|
|
with temporary_root() as root:
|
|
config = tutor_config.load_full(root)
|
|
domains = jobs.get_all_openedx_domains(config)
|
|
self.assertTrue(domains)
|
|
self.assertEqual(6, len(domains))
|