Setting user info cookie on learner dashboard
The user info is now updated every time a user loads the learner dashboard. Given that this is the page most learners land on after enrolling in a course, updating this cookie here will ensure that the enrollment status hash is relatively up-to-date. ECOM-4895
This commit is contained in:
@@ -1,11 +1,13 @@
|
||||
"""
|
||||
Test the student dashboard view.
|
||||
"""
|
||||
import json
|
||||
import unittest
|
||||
|
||||
import ddt
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import RequestFactory
|
||||
from django.test import TestCase
|
||||
from edx_oauth2_provider.constants import AUTHORIZED_CLIENTS_SESSION_KEY
|
||||
from edx_oauth2_provider.tests.factories import ClientFactory, TrustedClientFactory
|
||||
@@ -14,6 +16,7 @@ from pyquery import PyQuery as pq
|
||||
from xmodule.modulestore.tests.django_utils import SharedModuleStoreTestCase
|
||||
from xmodule.modulestore.tests.factories import CourseFactory
|
||||
|
||||
from student.cookies import get_user_info_cookie_data
|
||||
from student.helpers import DISABLE_UNENROLL_CERT_STATES
|
||||
from student.models import CourseEnrollment, LogoutViewConfiguration
|
||||
from student.tests.factories import UserFactory, CourseEnrollmentFactory
|
||||
@@ -195,3 +198,26 @@ class LogoutTests(TestCase):
|
||||
'target': '/',
|
||||
}
|
||||
self.assertDictContainsSubset(expected, response.context_data) # pylint: disable=no-member
|
||||
|
||||
|
||||
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
|
||||
class StudentDashboardTests(TestCase):
|
||||
""" Tests for the student dashboard. """
|
||||
|
||||
def setUp(self):
|
||||
""" Create a course and user, then log in. """
|
||||
super(StudentDashboardTests, self).setUp()
|
||||
self.user = UserFactory()
|
||||
self.client.login(username=self.user.username, password=PASSWORD)
|
||||
self.path = reverse('dashboard')
|
||||
|
||||
def test_user_info_cookie(self):
|
||||
""" Verify visiting the learner dashboard sets the user info cookie. """
|
||||
self.assertNotIn(settings.EDXMKTG_USER_INFO_COOKIE_NAME, self.client.cookies)
|
||||
|
||||
request = RequestFactory().get(self.path)
|
||||
request.user = self.user
|
||||
expected = json.dumps(get_user_info_cookie_data(request))
|
||||
self.client.get(self.path)
|
||||
actual = self.client.cookies[settings.EDXMKTG_USER_INFO_COOKIE_NAME].value
|
||||
self.assertEqual(actual, expected)
|
||||
|
||||
@@ -107,7 +107,7 @@ from student.helpers import (
|
||||
DISABLE_UNENROLL_CERT_STATES,
|
||||
destroy_oauth_tokens
|
||||
)
|
||||
from student.cookies import set_logged_in_cookies, delete_logged_in_cookies
|
||||
from student.cookies import set_logged_in_cookies, delete_logged_in_cookies, set_user_info_cookie
|
||||
from student.models import anonymous_id_for_user, UserAttribute, EnrollStatusChange
|
||||
from shoppingcart.models import DonationConfiguration, CourseRegistrationCode
|
||||
|
||||
@@ -785,7 +785,9 @@ def dashboard(request):
|
||||
'ecommerce_payment_page': ecommerce_service.payment_page_url(),
|
||||
})
|
||||
|
||||
return render_to_response('dashboard.html', context)
|
||||
response = render_to_response('dashboard.html', context)
|
||||
set_user_info_cookie(response, request)
|
||||
return response
|
||||
|
||||
|
||||
def _create_recent_enrollment_message(course_enrollments, course_modes): # pylint: disable=invalid-name
|
||||
|
||||
Reference in New Issue
Block a user