Newer
Older
from django.test import TestCase
from django.urls import reverse
from .factories import OAuthUserFactory, StaffFactory, UserFactory
class BaseTestProfielView(TestCase):
@classmethod
def setUpTestData(cls):
cls.url = reverse('users:account')
class TestProfileView(BaseTestProfielView):
def setUp(self):
self.user = UserFactory()
self.client.force_login(self.user)
def test_cant_acces_if_not_logged_in(self):
response = self.client.get(self.url, follow=True)
# Initial redirect will be via to https through a 301
self.assertRedirects(response, reverse('users:login') + '?next=' + self.url, status_code=301)
def test_includes_change_password(self):
response = self.client.get(self.url, follow=True)
self.assertContains(response, reverse('users:password_change'))
def test_doesnt_includes_change_password_for_oauth(self):
self.client.force_login(OAuthUserFactory())
response = self.client.get(self.url, follow=True)
self.assertNotContains(response, reverse('users:password_change'))
response = self.client.get(self.url, follow=True)
self.assertNotContains(response, 'Slack name')
class TestStaffProfileView(BaseTestProfielView):
def setUp(self):
self.staff = StaffFactory()
self.client.force_login(self.staff)
def test_can_set_slack_name(self):
response = self.client.get(self.url, follow=True)
self.assertContains(response, 'Slack name')
def test_can_not_set_email(self):
response = self.client.get(self.url, follow=True)
self.assertNotContains(response, 'Email')