test_milestones_helpers.py 3.91 KB
Newer Older
1 2 3 4 5
"""
Tests for the milestones helpers library, which is the integration point for the edx_milestones API
"""

from mock import patch
6 7

from milestones.exceptions import InvalidCourseKeyException, InvalidUserException
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
from util import milestones_helpers
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory


@patch.dict('django.conf.settings.FEATURES', {'MILESTONES_APP': False})
class MilestonesHelpersTestCase(ModuleStoreTestCase):
    """
    Main test suite for Milestones API client library
    """

    def setUp(self):
        """
        Test case scaffolding
        """
        super(MilestonesHelpersTestCase, self).setUp(create_user=False)
        self.course = CourseFactory.create(
            metadata={
                'entrance_exam_enabled': True,
            }
        )

        self.user = {'id': '123'}

        self.milestone = {
            'name': 'Test Milestone',
            'namespace': 'doesnt.matter',
            'description': 'Testing Milestones Helpers Library',
        }

    def test_add_milestone_returns_none_when_app_disabled(self):
        response = milestones_helpers.add_milestone(milestone_data=self.milestone)
        self.assertIsNone(response)

    def test_get_milestones_returns_none_when_app_disabled(self):
        response = milestones_helpers.get_milestones(namespace="whatever")
        self.assertEqual(len(response), 0)

    def test_get_milestone_relationship_types_returns_none_when_app_disabled(self):
        response = milestones_helpers.get_milestone_relationship_types()
        self.assertEqual(len(response), 0)

    def test_add_course_milestone_returns_none_when_app_disabled(self):
        response = milestones_helpers.add_course_milestone(unicode(self.course.id), 'requires', self.milestone)
        self.assertIsNone(response)

    def test_get_course_milestones_returns_none_when_app_disabled(self):
        response = milestones_helpers.get_course_milestones(unicode(self.course.id))
        self.assertEqual(len(response), 0)

    def test_add_course_content_milestone_returns_none_when_app_disabled(self):
        response = milestones_helpers.add_course_content_milestone(
            unicode(self.course.id),
            'i4x://any/content/id',
            'requires',
            self.milestone
        )
        self.assertIsNone(response)

    def test_get_course_content_milestones_returns_none_when_app_disabled(self):
        response = milestones_helpers.get_course_content_milestones(
            unicode(self.course.id),
            'i4x://doesnt/matter/for/this/test',
            'requires'
        )
        self.assertEqual(len(response), 0)

    def test_remove_content_references_returns_none_when_app_disabled(self):
        response = milestones_helpers.remove_content_references("i4x://any/content/id/will/do")
        self.assertIsNone(response)

    def test_get_namespace_choices_returns_values_when_app_disabled(self):
        response = milestones_helpers.get_namespace_choices()
        self.assertIn('ENTRANCE_EXAM', response)

    def test_get_course_milestones_fulfillment_paths_returns_none_when_app_disabled(self):
        response = milestones_helpers.get_course_milestones_fulfillment_paths(unicode(self.course.id), self.user)
        self.assertIsNone(response)

    def test_add_user_milestone_returns_none_when_app_disabled(self):
        response = milestones_helpers.add_user_milestone(self.user, self.milestone)
        self.assertIsNone(response)
90 91 92 93 94 95 96 97

    @patch.dict('django.conf.settings.FEATURES', {'MILESTONES_APP': True})
    def test_any_unfulfilled_milestones(self):
        """ Tests any_unfulfilled_milestones for invalid arguments """
        with self.assertRaises(InvalidCourseKeyException):
            milestones_helpers.any_unfulfilled_milestones(None, self.user)
        with self.assertRaises(InvalidUserException):
            milestones_helpers.any_unfulfilled_milestones(self.course.id, None)