Merge pull request #23153 from edx/ddumesnil/subscribe-to-calendar-AA-35
AA-35: Adds functions to subscribe and unsubscribe from a calendar sync
This commit is contained in:
29
openedx/features/calendar_sync/api.py
Normal file
29
openedx/features/calendar_sync/api.py
Normal file
@@ -0,0 +1,29 @@
|
||||
""" API for the Calendar Sync Application """
|
||||
|
||||
|
||||
from .models import UserCalendarSyncConfig
|
||||
|
||||
|
||||
def subscribe_user_to_calendar(user, course_key):
|
||||
"""
|
||||
Enables the Calendar Sync config for a particular user and course.
|
||||
Will create if needed.
|
||||
|
||||
Parameters:
|
||||
user (User): The user to subscribe
|
||||
course_key (CourseKey): The course key for the subscription
|
||||
"""
|
||||
defaults = {'enabled': True}
|
||||
UserCalendarSyncConfig.objects.update_or_create(user=user, course_key=course_key, defaults=defaults)
|
||||
|
||||
|
||||
def unsubscribe_user_to_calendar(user, course_key):
|
||||
"""
|
||||
Disables the Calendar Sync config for a particular user and course.
|
||||
If the instance does not exist, this function will do nothing.
|
||||
|
||||
Parameters:
|
||||
user (User): The user to subscribe
|
||||
course_key (CourseKey): The course key for the subscription
|
||||
"""
|
||||
UserCalendarSyncConfig.objects.filter(user=user, course_key=course_key).update(enabled=False)
|
||||
40
openedx/features/calendar_sync/tests/test_api.py
Normal file
40
openedx/features/calendar_sync/tests/test_api.py
Normal file
@@ -0,0 +1,40 @@
|
||||
""" Tests for the Calendar Sync API """
|
||||
|
||||
|
||||
from openedx.features.calendar_sync.api import subscribe_user_to_calendar, unsubscribe_user_to_calendar
|
||||
from openedx.features.calendar_sync.models import UserCalendarSyncConfig
|
||||
from student.tests.factories import UserFactory
|
||||
from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
TEST_PASSWORD = 'test'
|
||||
|
||||
|
||||
class TestCalendarSyncAPI(SharedModuleStoreTestCase):
|
||||
""" Tests for the Calendar Sync API """
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
""" Set up any course data """
|
||||
super(TestCalendarSyncAPI, cls).setUpClass()
|
||||
cls.course = CourseFactory.create()
|
||||
cls.course_key = cls.course.id
|
||||
|
||||
def setUp(self):
|
||||
super(TestCalendarSyncAPI, self).setUp()
|
||||
self.user = UserFactory(password=TEST_PASSWORD)
|
||||
|
||||
def test_subscribe_to_calendar(self):
|
||||
self.assertEqual(UserCalendarSyncConfig.objects.count(), 0)
|
||||
subscribe_user_to_calendar(self.user, self.course_key)
|
||||
self.assertEqual(UserCalendarSyncConfig.objects.count(), 1)
|
||||
self.assertTrue(UserCalendarSyncConfig.is_enabled_for_course(self.user, self.course_key))
|
||||
|
||||
def test_unsubscribe_to_calendar(self):
|
||||
self.assertEqual(UserCalendarSyncConfig.objects.count(), 0)
|
||||
unsubscribe_user_to_calendar(self.user, self.course_key)
|
||||
self.assertEqual(UserCalendarSyncConfig.objects.count(), 0)
|
||||
|
||||
UserCalendarSyncConfig.objects.create(user=self.user, course_key=self.course_key, enabled=True)
|
||||
self.assertTrue(UserCalendarSyncConfig.is_enabled_for_course(self.user, self.course_key))
|
||||
unsubscribe_user_to_calendar(self.user, self.course_key)
|
||||
self.assertFalse(UserCalendarSyncConfig.is_enabled_for_course(self.user, self.course_key))
|
||||
Reference in New Issue
Block a user