class CreditCheckViewTest(TestCase): def setUp(self): self.user = User(email='*****@*****.**') self.user.save() self.profile = Profile( first_name='Tommy', last_name='Wiseau', user=self.user ) self.profile.save() self.credit_check_error = {'Message': 'error'} self.credit_check_accepted = { 'name': 'Tommy Wiseau', 'accepted': True } self.credit_check_rejected = { 'name': 'Tommy Wiseau', 'accepted': False } def test_unauthorized_user(self): request = factory.post('/', data={}, format='json') response = self.view(request) self.assertEquals(response.status_code, status.HTTP_403_FORBIDDEN) self.assertFalse( CreditCheck.objects.filter(user_id=self.user.id).exists() ) @mock.patch('users.serializers.credit_check.credit_check_call') def test_default_behaviour_accepted(self, credit_check): credit_check.return_value = self.credit_check_accepted request = factory.post('/', data={}, format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_201_CREATED) self.assertDictEqual( response.data, {'accepted': True, 'user': self.user.id} ) self.assertTrue( CreditCheck.objects.filter(user_id=self.user.id).exists() ) @mock.patch('users.serializers.credit_check.credit_check_call') def test_default_behaviour_rejected(self, credit_check): credit_check.return_value = self.credit_check_rejected request = factory.post('/', data={}, format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_201_CREATED) self.assertDictEqual( response.data, {'accepted': False, 'user': self.user.id} ) self.assertTrue( CreditCheck.objects.filter(user_id=self.user.id).exists() ) @mock.patch('users.serializers.credit_check.credit_check_call') def test_default_behaviour_error(self, credit_check): credit_check.return_value = self.credit_check_error request = factory.post('/', data={}, format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertFalse( CreditCheck.objects.filter(user_id=self.user.id).exists() ) def test_user_with_no_profile(self): self.profile.delete() self.user.refresh_from_db() request = factory.post('/', data={}, format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertFalse( CreditCheck.objects.filter(user_id=self.user.id).exists() ) def test_retrieve(self): CreditCheck(user=self.user).save() request = factory.get('/', format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_200_OK) def test_retrieve_when_no_credit_check(self): request = factory.get('/', format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_404_NOT_FOUND) def test_destroy(self): CreditCheck(user=self.user).save() request = factory.delete('/', format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_204_NO_CONTENT) def test_destroy_when_no_credit_check(self): request = factory.delete('/', format='json') force_authenticate(request, self.user) response = self.view(request) self.assertEquals(response.status_code, status.HTTP_404_NOT_FOUND) @property def view(self): return CreditCheckView.as_view( { 'get': 'retrieve', 'post': 'create', 'put': 'update', 'delete': 'destroy' } )
class CompletedSignupAndAcceptedCreditTest(TestCase): def setUp(self): self.user = User(email='*****@*****.**') self.user.save() self.profile = Profile(first_name='Tommy', last_name='Wiseau', date_of_birth=datetime.now().date(), mobile_phone='+48691070500', user=self.user) self.profile.save() self.credit_check = CreditCheck( user=self.user, accepted=True, ) self.credit_check.save() self.fake_request = Mock(user=self.user) def test_user_with_accepted_credit_check_and_filed_profile(self): access = CompletedSignupAndAcceptedCredit.has_permission( None, self.fake_request, None) self.assertTrue(access) def test_user_with_rejected_credit_check_and_filed_profile(self): self.credit_check.accepted = False self.credit_check.save() access = CompletedSignupAndAcceptedCredit.has_permission( None, self.fake_request, None) self.assertFalse(access) def test_user_with_rejected_credit_check_and_incomplete_profile(self): self.credit_check.accepted = False self.credit_check.save() self.profile.last_name = None self.profile.save() access = CompletedSignupAndAcceptedCredit.has_permission( None, self.fake_request, None) self.assertFalse(access) def test_user_with_accepted_credit_check_and_incomplete_profile(self): self.profile.last_name = None self.profile.save() access = CompletedSignupAndAcceptedCredit.has_permission( None, self.fake_request, None) self.assertFalse(access) def test_user_with_accepted_credit_check_without_profile(self): self.profile.delete() access = CompletedSignupAndAcceptedCredit.has_permission( None, self.fake_request, None) self.assertFalse(access) def test_user_without_profile_and_credit_check(self): self.profile.delete() self.credit_check.delete() access = CompletedSignupAndAcceptedCredit.has_permission( None, self.fake_request, None) self.assertFalse(access)