from django.test import TestCase from django.urls import reverse from .factories import OAuthUserFactory, UserFactory class TestProfileView(TestCase): def setUp(self): self.user = UserFactory() self.url = reverse('users:account') def test_cant_acces_if_not_logged_in(self): response = self.client.get(self.url) self.assertRedirects(response, reverse('users:login') + '?next=' + self.url) def test_includes_change_password(self): self.client.force_login(self.user) response = self.client.get(self.url) 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) self.assertNotContains(response, reverse('users:password_change')) def test_email_unique(self): other_user = UserFactory() self.client.post(self.url, data={'email': other_user.email}) self.user.refresh_from_db() self.assertNotEqual(self.user.email, other_user.email) def test_can_change_email(self): new_email = 'me@another.com' self.client.force_login(self.user) self.client.post(self.url, data={'email': new_email}) self.user.refresh_from_db() self.assertEqual(self.user.email, new_email)