Merge pull request #12450 from edx/peter-fogg/referral-tracking
Add referral tracking for new registrations.
This commit is contained in:
@@ -19,6 +19,7 @@ from notification_prefs import NOTIFICATION_PREF_KEY
|
||||
from edxmako.tests import mako_middleware_process_request
|
||||
from external_auth.models import ExternalAuthMap
|
||||
import student
|
||||
from student.models import UserAttribute
|
||||
|
||||
TEST_CS_URL = 'https://comments.service.test:123/'
|
||||
|
||||
@@ -278,6 +279,24 @@ class TestCreateAccount(TestCase):
|
||||
else:
|
||||
self.assertIsNone(preference)
|
||||
|
||||
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
|
||||
def test_referral_attribution(self):
|
||||
"""
|
||||
Verify that a referral attribution is recorded if an affiliate
|
||||
cookie is present upon a new user's registration.
|
||||
"""
|
||||
affiliate_id = 'test-partner'
|
||||
self.client.cookies[settings.AFFILIATE_COOKIE_NAME] = affiliate_id
|
||||
user = self.create_account_and_fetch_profile().user
|
||||
self.assertEqual(UserAttribute.get_user_attribute(user, settings.AFFILIATE_COOKIE_NAME), affiliate_id)
|
||||
|
||||
@unittest.skipUnless(settings.ROOT_URLCONF == 'lms.urls', 'Test only valid in lms')
|
||||
def test_no_referral(self):
|
||||
"""Verify that no referral is recorded when a cookie is not present."""
|
||||
self.assertIsNone(self.client.cookies.get(settings.AFFILIATE_COOKIE_NAME)) # pylint: disable=no-member
|
||||
user = self.create_account_and_fetch_profile().user
|
||||
self.assertIsNone(UserAttribute.get_user_attribute(user, settings.AFFILIATE_COOKIE_NAME))
|
||||
|
||||
|
||||
@ddt.ddt
|
||||
class TestCreateAccountValidation(TestCase):
|
||||
|
||||
@@ -24,7 +24,7 @@ from django.test.client import Client
|
||||
from course_modes.models import CourseMode
|
||||
from student.models import (
|
||||
anonymous_id_for_user, user_by_anonymous_id, CourseEnrollment,
|
||||
unique_id_for_user, LinkedInAddToProfileConfiguration
|
||||
unique_id_for_user, LinkedInAddToProfileConfiguration, UserAttribute
|
||||
)
|
||||
from student.views import (
|
||||
process_survey_link,
|
||||
@@ -1157,3 +1157,26 @@ class DashboardTestXSeriesPrograms(ModuleStoreTestCase, ProgramsApiConfigMixin):
|
||||
self.assertContains(response, 'This course is 1 of 3 courses in the', count)
|
||||
self.assertContains(response, self.program_name, count * 2)
|
||||
self.assertContains(response, 'View XSeries Details', count)
|
||||
|
||||
|
||||
class UserAttributeTests(TestCase):
|
||||
"""Tests for the UserAttribute model."""
|
||||
|
||||
def setUp(self):
|
||||
super(UserAttributeTests, self).setUp()
|
||||
self.user = UserFactory()
|
||||
self.name = 'test'
|
||||
self.value = 'test-value'
|
||||
|
||||
def test_get_set_attribute(self):
|
||||
self.assertIsNone(UserAttribute.get_user_attribute(self.user, self.name))
|
||||
UserAttribute.set_user_attribute(self.user, self.name, self.value)
|
||||
self.assertEqual(UserAttribute.get_user_attribute(self.user, self.name), self.value)
|
||||
new_value = 'new_value'
|
||||
UserAttribute.set_user_attribute(self.user, self.name, new_value)
|
||||
self.assertEqual(UserAttribute.get_user_attribute(self.user, self.name), new_value)
|
||||
|
||||
def test_unicode(self):
|
||||
UserAttribute.set_user_attribute(self.user, self.name, self.value)
|
||||
for field in (self.name, self.value, self.user.username):
|
||||
self.assertIn(field, unicode(UserAttribute.objects.get(user=self.user)))
|
||||
|
||||
Reference in New Issue
Block a user