def test_unit_register_with_invalidPOST(self): """ This function tests the **register()** function with invalid post data. we should mock 1. request 2. RegisterForm - is_valid() 3. args """ with patch('user_auth.views.RegisterForm') as reg: request = MagicMock() request.method = "POST" request.POST = "some input" # make input to RegisterForm reg.return_value = Mock() reg.return_value.is_valid = Mock(return_value=False) # make it pass the if part. reg.return_value.register_form = Mock(return_value=None) with patch('user_auth.views.render_to_response') as render: render.return_value = "some value" register(request) # asserts reg.assert_called_with("some input") self.assertTrue(not reg.return_value.register_form.called) self.assertTrue(render.called)
def test_unit_register_with_POST(self): """ We need to mock several things to make this unittest. 1. request 2. register_form() : For this, make seperate test. - request has **method** attribute that specifies the method of the form. 3. Need to mock RegisterForm because we are not testing the register function. - RegisterForm instance should have is_valid() method that returns boolean. 4. We need to mock HttpResponseRedirect. """ with patch('user_auth.views.RegisterForm') as form: with patch('user_auth.views.HttpResponseRedirect') as redir: request = MagicMock() request.method = "POST" ## this will pass if request.POST == "POST" part. request.POST = "some_input" form.return_value = Mock() form.return_value.is_valid = Mock(return_value=True) # mock register_form form.return_value.register_form = Mock(return_value=None) register(request) # make function call form.assert_called_with("some_input") # redir.assert_called_with('/') self.assertTrue(form.return_value.register_form.called)
def test_unit_register_with_get(self): """ This test function tests if **register()** is called with get method. We need to mock 1. request 2. RegisterForm 3. render_to_response """ with patch('user_auth.views.RegisterForm') as reg: request = MagicMock() request.method = "GET" reg.return_value = Mock() # For testing if we execute correct else statement. reg.return_value.is_valid = Mock(return_value=False) with patch('user_auth.views.render_to_response') as render: render.return_value = True register(request) # asserts self.assertTrue(not reg.return_value.is_valid.called) self.assertTrue(render.called)