Files
edx-platform/lms/djangoapps/learner_dashboard/test_learner_views.py
Nathan Sprenkle 71fabb7f87 feat: add remaining learner dash serializers (#30707)
* feat: add UnfulfilledEntitlementSerializer

* feat: add SuggestedCoursesSerializer

* feat: add new enrollment serializer fields

* test: new enrollment serializer fields

* feat: add new entitlement serializer fields

* feat: add EmailConfirmationSerializer

* feat: add EnterpriseDashboardsSerializer

* fix: update learner view with new serializers

Co-authored-by: nsprenkle <nsprenkle@2u.com>
2022-07-13 15:46:49 -04:00

102 lines
3.0 KiB
Python

"""Test for learner views and related functions"""
import json
from unittest import TestCase
from unittest.mock import patch
from uuid import uuid4
from django.urls import reverse
from rest_framework.test import APITestCase
from lms.djangoapps.learner_dashboard.learner_views import get_platform_settings
from common.djangoapps.student.tests.factories import UserFactory
from xmodule.modulestore.tests.django_utils import (
TEST_DATA_SPLIT_MODULESTORE,
SharedModuleStoreTestCase,
)
from xmodule.modulestore.tests.factories import CourseFactory
class TestGetPlatformSettings(TestCase):
"""Tests for get_platform_settings"""
MOCK_SETTINGS = {
"DEFAULT_FEEDBACK_EMAIL": f"{uuid4()}@example.com",
"PAYMENT_SUPPORT_EMAIL": f"{uuid4()}@example.com",
}
@patch.multiple("django.conf.settings", **MOCK_SETTINGS)
@patch("lms.djangoapps.learner_dashboard.learner_views.marketing_link")
def test_happy_path(self, mock_marketing_link):
# Given email/search info exists
mock_marketing_link.return_value = mock_search_url = f"/{uuid4()}"
# When I request those settings
return_data = get_platform_settings()
# Then I return them in the appropriate format
self.assertDictEqual(
return_data,
{
"supportEmail": self.MOCK_SETTINGS["DEFAULT_FEEDBACK_EMAIL"],
"billingEmail": self.MOCK_SETTINGS["PAYMENT_SUPPORT_EMAIL"],
"courseSearchUrl": mock_search_url,
},
)
class TestDashboardView(SharedModuleStoreTestCase, APITestCase):
"""Tests for the dashboard view"""
MODULESTORE = TEST_DATA_SPLIT_MODULESTORE
@classmethod
def setUpClass(cls):
super().setUpClass()
# Get view URL
cls.view_url = reverse("dashboard_view")
# Set up a course
cls.course = CourseFactory.create()
cls.course_key = cls.course.location.course_key
# Set up a user
cls.username = "alan"
cls.password = "enigma"
cls.user = UserFactory(username=cls.username, password=cls.password)
def log_in(self):
"""Log in as a test user"""
self.client.login(username=self.username, password=self.password)
def setUp(self):
super().setUp()
self.log_in()
def test_response_structure(self):
"""Basic test for correct response structure"""
# Given I am logged in
self.log_in()
# When I request the dashboard
response = self.client.get(self.view_url)
# Then I get the expected success response
assert response.status_code == 200
response_data = json.loads(response.content)
expected_keys = set(
[
"emailConfirmation",
"enterpriseDashboards",
"platformSettings",
"enrollments",
"unfulfilledEntitlements",
"suggestedCourses",
]
)
assert expected_keys == response_data.keys()