Create read-only serializer to handle User/UserProfile data together. Refactor GET accounts to use the new read-only joint serializer Fix tests to check for new expanded user info Update tests in teams/tests/test_views.py to test for both public and private profiles on expands user Update serializer to utilize the request object for creating absolute uris
104 lines
3.3 KiB
Python
104 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
""" Tests for student profile views. """
|
|
|
|
from django.conf import settings
|
|
from django.core.urlresolvers import reverse
|
|
from django.test import TestCase
|
|
from django.test.client import RequestFactory
|
|
|
|
from util.testing import UrlResetMixin
|
|
from student.tests.factories import UserFactory
|
|
|
|
from student_profile.views import learner_profile_context
|
|
|
|
|
|
class LearnerProfileViewTest(UrlResetMixin, TestCase):
|
|
""" Tests for the student profile view. """
|
|
|
|
USERNAME = "username"
|
|
PASSWORD = "password"
|
|
CONTEXT_DATA = [
|
|
'default_public_account_fields',
|
|
'accounts_api_url',
|
|
'preferences_api_url',
|
|
'account_settings_page_url',
|
|
'has_preferences_access',
|
|
'own_profile',
|
|
'country_options',
|
|
'language_options',
|
|
'account_settings_data',
|
|
'preferences_data',
|
|
]
|
|
|
|
def setUp(self):
|
|
super(LearnerProfileViewTest, self).setUp()
|
|
self.user = UserFactory.create(username=self.USERNAME, password=self.PASSWORD)
|
|
self.client.login(username=self.USERNAME, password=self.PASSWORD)
|
|
|
|
def test_context(self):
|
|
"""
|
|
Verify learner profile page context data.
|
|
"""
|
|
request = RequestFactory().get('/url')
|
|
request.user = self.user
|
|
|
|
context = learner_profile_context(request, self.USERNAME, self.user.is_staff)
|
|
|
|
self.assertEqual(
|
|
context['data']['default_public_account_fields'],
|
|
settings.ACCOUNT_VISIBILITY_CONFIGURATION['public_fields']
|
|
)
|
|
|
|
self.assertEqual(
|
|
context['data']['accounts_api_url'],
|
|
reverse("accounts_api", kwargs={'username': self.user.username})
|
|
)
|
|
|
|
self.assertEqual(
|
|
context['data']['preferences_api_url'],
|
|
reverse('preferences_api', kwargs={'username': self.user.username})
|
|
)
|
|
|
|
self.assertEqual(
|
|
context['data']['profile_image_upload_url'],
|
|
reverse("profile_image_upload", kwargs={'username': self.user.username})
|
|
)
|
|
|
|
self.assertEqual(
|
|
context['data']['profile_image_remove_url'],
|
|
reverse('profile_image_remove', kwargs={'username': self.user.username})
|
|
)
|
|
|
|
self.assertEqual(
|
|
context['data']['profile_image_max_bytes'],
|
|
settings.PROFILE_IMAGE_MAX_BYTES
|
|
)
|
|
|
|
self.assertEqual(
|
|
context['data']['profile_image_min_bytes'],
|
|
settings.PROFILE_IMAGE_MIN_BYTES
|
|
)
|
|
|
|
self.assertEqual(context['data']['account_settings_page_url'], reverse('account_settings'))
|
|
|
|
for attribute in self.CONTEXT_DATA:
|
|
self.assertIn(attribute, context['data'])
|
|
|
|
def test_view(self):
|
|
"""
|
|
Verify learner profile page view.
|
|
"""
|
|
profile_path = reverse('learner_profile', kwargs={'username': self.USERNAME})
|
|
response = self.client.get(path=profile_path)
|
|
|
|
for attribute in self.CONTEXT_DATA:
|
|
self.assertIn(attribute, response.content)
|
|
|
|
def test_undefined_profile_page(self):
|
|
"""
|
|
Verify that a 404 is returned for a non-existent profile page.
|
|
"""
|
|
profile_path = reverse('learner_profile', kwargs={'username': "no_such_user"})
|
|
response = self.client.get(path=profile_path)
|
|
self.assertEqual(404, response.status_code)
|