from django.test import RequestFactory from test_plus.test import TestCase from ..views import ( UserRedirectView, UserUpdateView ) class BaseUserTestCase(TestCase): def setUp(self): self.user = self.make_user() self.factory = RequestFactory() class TestUserRedirectView(BaseUserTestCase): def test_get_redirect_url(self): # Instantiate the view directly. Never do this outside a test! view = UserRedirectView() # Generate a fake request request = self.factory.get('/fake-url') # Attach the user to the request request.user = self.user # Attach the request to the view view.request = request # Expect: '/users/testuser/', as that is the default username for # self.make_user() self.assertEqual( view.get_redirect_url(), '/users/testuser/' ) class TestUserUpdateView(BaseUserTestCase): def setUp(self): # call BaseUserTestCase.setUp() super(TestUserUpdateView, self).setUp() # Instantiate the view directly. Never do this outside a test! self.view = UserUpdateView() # Generate a fake request request = self.factory.get('/fake-url') # Attach the user to the request request.user = self.user # Attach the request to the view self.view.request = request def test_get_success_url(self): # Expect: '/users/testuser/', as that is the default username for # self.make_user() self.assertEqual( self.view.get_success_url(), '/users/testuser/' ) # TODO: write this test # def test_get_redirected(self): # Expect '/users/testuser01/' to redirect, because that isn't the # currently logged in user def test_get_object(self): # Expect: self.user, as that is the request's user object self.assertEqual( self.view.get_object(), self.user )