diff --git a/bookwyrm/tests/views/test_user.py b/bookwyrm/tests/views/test_user.py index ea59f042d..f08c17e71 100644 --- a/bookwyrm/tests/views/test_user.py +++ b/bookwyrm/tests/views/test_user.py @@ -3,7 +3,9 @@ import pathlib from unittest.mock import patch from PIL import Image +from django.contrib.auth.models import AnonymousUser from django.core.files.base import ContentFile +from django.core.files.uploadedfile import SimpleUploadedFile from django.template.response import TemplateResponse from django.test import TestCase from django.test.client import RequestFactory @@ -24,6 +26,8 @@ class UserViews(TestCase): 'rat@local.com', 'rat@rat.rat', 'password', local=True, localname='rat') models.SiteSettings.objects.create() + self.anonymous_user = AnonymousUser + self.anonymous_user.is_authenticated = False def test_user_page(self): @@ -38,6 +42,14 @@ class UserViews(TestCase): result.render() self.assertEqual(result.status_code, 200) + request.user = self.anonymous_user + with patch('bookwyrm.views.user.is_api_request') as is_api: + is_api.return_value = False + result = view(request, 'mouse') + self.assertIsInstance(result, TemplateResponse) + result.render() + self.assertEqual(result.status_code, 200) + with patch('bookwyrm.views.user.is_api_request') as is_api: is_api.return_value = True result = view(request, 'mouse') @@ -119,7 +131,7 @@ class UserViews(TestCase): self.assertEqual(result.status_code, 404) - def test_edit_profile_page(self): + def test_edit_user_page(self): ''' there are so many views, this just makes sure it LOADS ''' view = views.EditUser.as_view() request = self.factory.get('') @@ -135,12 +147,42 @@ class UserViews(TestCase): view = views.EditUser.as_view() form = forms.EditUserForm(instance=self.local_user) form.data['name'] = 'New Name' + form.data['email'] = 'wow@email.com' request = self.factory.post('', form.data) request.user = self.local_user - with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay'): + self.assertIsNone(self.local_user.name) + with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay') \ + as delay_mock: view(request) + self.assertEqual(delay_mock.call_count, 1) self.assertEqual(self.local_user.name, 'New Name') + self.assertEqual(self.local_user.email, 'wow@email.com') + + +# idk how to mock the upload form, got tired of triyng to make it work +# def test_edit_user_avatar(self): +# ''' use a form to update a user ''' +# view = views.EditUser.as_view() +# form = forms.EditUserForm(instance=self.local_user) +# form.data['name'] = 'New Name' +# form.data['email'] = 'wow@email.com' +# image_file = pathlib.Path(__file__).parent.joinpath( +# '../../static/images/no_cover.jpg') +# image = Image.open(image_file) +# form.files['avatar'] = SimpleUploadedFile( +# image_file, open(image_file), content_type='image/jpeg') +# request = self.factory.post('', form.data, form.files) +# request.user = self.local_user + +# with patch('bookwyrm.models.activitypub_mixin.broadcast_task.delay') \ +# as delay_mock: +# view(request) +# self.assertEqual(delay_mock.call_count, 1) +# self.assertEqual(self.local_user.name, 'New Name') +# self.assertEqual(self.local_user.email, 'wow@email.com') +# self.assertIsNotNone(self.local_user.avatar) +# self.assertEqual(self.local_user.avatar.size, (120, 120)) def test_crop_avatar(self):