Skip to content

Commit

Permalink
test: add basic tests for notify ^ plugin settings
Browse files Browse the repository at this point in the history
  • Loading branch information
johanseto committed Apr 17, 2023
1 parent 09ec99e commit 27f84f4
Show file tree
Hide file tree
Showing 7 changed files with 130 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@

from django.core.management import BaseCommand

from eox_nelp.notifications.tasks import send_course_due_date_emails


logger = logging.getLogger(__name__)


Expand Down
6 changes: 4 additions & 2 deletions eox_nelp/notifications/tasks.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
# tasks.py
"""
Celery task related the notifications eox-nelp module.
"""

import logging

from celery import shared_task

logger = logging.getLogger(__name__)


@shared_task
def send_course_due_date_emails():
"""
Task to send upcoming course due date emails.
"""
logger.info("------Sending upcoming course due date emails.-------")
logger.info("This is a log message. yeah yeah")
Empty file.
29 changes: 29 additions & 0 deletions eox_nelp/notifications/tests/test_tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""This file contains all the test for tasks.py file.
Classes:
SendCourseDueDateEmailtTestCase: Test `send_course_due_date_emails` method.
"""
import unittest

from eox_nelp.notifications import tasks
from eox_nelp.notifications.tasks import send_course_due_date_emails


class SendCourseDueDateEmailtTestCase(unittest.TestCase):
"""Test class for function `send_course_due_date_emails`"""

def test_send_course_due_date_emails(self):
"""Test when `send_course_due_date_emails` is called
with the required parameters. Check the functions inside are called with
their desired values.
Expected behavior:
- Log error message.
"""
log_sent_email = "------Sending upcoming course due date emails.-------"

with self.assertLogs(tasks.__name__, level="INFO") as logs:
send_course_due_date_emails()

self.assertEqual(logs.output, [f"INFO:{tasks.__name__}:{log_sent_email}"])
3 changes: 2 additions & 1 deletion eox_nelp/settings/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"eox_nelp.notifications.tasks",
)


def plugin_settings(settings):
"""
Defines eox-nelp settings when app is used as a plugin to edx-platform.
Expand All @@ -35,7 +36,7 @@ def plugin_settings(settings):
settings.FUTUREX_API_CLIENT_ID = 'my-test-client-id'
settings.FUTUREX_API_CLIENT_SECRET = 'my-test-client-secret'

if COURSE_CREATOR_APP not in settings.INSTALLED_APPS:
if hasattr(settings, "INSTALLED_APPS") and COURSE_CREATOR_APP not in settings.INSTALLED_APPS:
settings.INSTALLED_APPS.append(COURSE_CREATOR_APP)

if getattr(settings, "CELERY_IMPORTS", None):
Expand Down
Empty file.
95 changes: 95 additions & 0 deletions eox_nelp/settings/tests/test_common_plugin_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
"""This file contains test for the `plugin_settings` method of
common setting of eox-nelp.
Classes:
CommonPluginSettingsTestCase: Test `plugin_settings` method.
"""
import unittest

from eox_nelp.settings.common import COURSE_CREATOR_APP, EOX_NELP_CELERY_TASKS, plugin_settings


class SettingsClass:
""" dummy settings class """


class CommonPluginSettingsTestCase(unittest.TestCase):
"""Test class for function `plugin_settings`"""

def test_base_common_plugin_settings(self):
"""Test when `plugin_settings` is called
with the required parameters. Check the functions inside are called with
their desired values.
Expected behavior:
- Eox-nelp setting items are presented.
"""
common_settings = SettingsClass()
eox_nelp_config = {
"EOX_NELP_COURSE_CREATORS_BACKEND": "eox_nelp.edxapp_wrapper.backends.course_creators_k_v1",
"EOX_NELP_COURSE_OVERVIEWS_BACKEND": "eox_nelp.edxapp_wrapper.backends.course_overviews_m_v1",
"EOX_NELP_SITE_CONFIGURATION": "eox_nelp.edxapp_wrapper.backends.site_configuration_m_v1",
"EOX_NELP_USER_API": "eox_nelp.edxapp_wrapper.backends.user_api_m_v1",
"EOX_NELP_USER_AUTHN": "eox_nelp.edxapp_wrapper.backends.user_authn_m_v1",
"EOX_NELP_MFE_CONFIG_VIEW": "eox_nelp.edxapp_wrapper.backends.mfe_config_view_m_v1",
"EOX_NELP_COURSE_API": "eox_nelp.edxapp_wrapper.backends.course_api_m_v1",
"FUTUREX_API_URL": "https://testing-site.com",
"FUTUREX_API_CLIENT_ID": "my-test-client-id",
"FUTUREX_API_CLIENT_SECRET": "my-test-client-secret",
}

plugin_settings(common_settings)

assert eox_nelp_config.items() <= common_settings.__dict__.items()

def test_append_course_creator_app(self):
"""Test when `plugin_settings` is called
append the course_creator apps in INSTALLED APPS.
Expected behavior:
- Course creator app is presentend in INSTALLED_APPS.
"""
common_settings = SettingsClass()
setattr(common_settings, "INSTALLED_APPS", [])

plugin_settings(common_settings)

self.assertIn(COURSE_CREATOR_APP, getattr(common_settings, "INSTALLED_APPS"))

def test_append_eox_nelp_celery_imports(self):
"""Test when `plugin_settings` is called
that the eox_nelp_celery_import are added to the previous
CELERY_IMPORTS
Expected behavior:
- EOX_NELP_CELERY_TASKS are presented in CELERY_IMPORTS.
"""
common_settings = SettingsClass()
previous_celery_imports = (
'example.import.tasks',
'example.import2.tasks',
'example.import3.tasks',
)
setattr(common_settings, "CELERY_IMPORTS", previous_celery_imports)

plugin_settings(common_settings)

self.assertEqual(
getattr(common_settings, "CELERY_IMPORTS"),
previous_celery_imports + EOX_NELP_CELERY_TASKS,
)

def test_create_eox_nelp_celery_imports(self):
"""Test when `plugin_settings` is called
that the eox_nelp_celery_import are created if there are not previous
CELERY_IMPORTS
Expected behavior:
- EOX_NELP_CELERY_TASKS are presented in CELERY_IMPORTS.
"""
common_settings = SettingsClass()

plugin_settings(common_settings)

self.assertEqual(getattr(common_settings, "CELERY_IMPORTS"), EOX_NELP_CELERY_TASKS)

0 comments on commit 27f84f4

Please sign in to comment.