class ListLoanTermTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() LoanTermFactory.create_batch(10) def test_list(self): url = reverse('loan:loanterm-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 0) def test_user_list(self): url = reverse('loan:loanterm-list') member = LoanMemberFactory(user_id=1) app = LoanApplicationFactory() mem_app = LoanMemberApplicationFactory(application=app, member=member, main=True) loan_term = LoanTermFactory(loan_applicant=mem_app, pay_date=get_now() + timedelta(days=2)) LoanTermNotificationFactory(loan_term=loan_term) LoanTermNotificationFactory(loan_term=loan_term) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 1)
class LoanApplicationActionTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login() def test_approve(self): loan_app = LoanApplicationFactory( status=LOAN_APPLICATION_STATUS.pending) member = LoanMemberFactory() LoanMemberApplicationFactory(application=loan_app, member=member, main=True) ConstantCoreBusiness.transfer = MagicMock(return_value=None) url = reverse('loan-admin:loanapplication-approve', args=[loan_app.pk]) response = self.client.patch(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['status'], LOAN_APPLICATION_STATUS.approved) ConstantCoreBusiness.transfer.assert_called_once_with( settings.CONSTANT_USER_ID, member.user_id, loan_app.loan_amount) def test_reject(self): loan_app = LoanApplicationFactory( status=LOAN_APPLICATION_STATUS.pending) url = reverse('loan-admin:loanapplication-reject', args=[loan_app.pk]) response = self.client.patch(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['status'], LOAN_APPLICATION_STATUS.rejected)
class LoanMemberPhoneVerificationTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() def test_check_phone_verfication_no_member(self): url = reverse('loan:phone-verification-view') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['phone_verified'], False) def test_check_phone_verification_has_member(self): LoanMemberFactory(user_email=self.auth_utils.username) url = reverse('loan:phone-verification-view') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['phone_verified'], False) def test_check_phone_verification_has_member_verified(self): LoanMemberFactory(user_email=self.auth_utils.username, phone_retry=-999) url = reverse('loan:phone-verification-view') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['phone_verified'], True)
def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() self.url = reverse('loan:loan-application-view') EmailNotification.send_email_template = MagicMock(return_value=None) LoanProgramFactory()
class LoginTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login() def test_list(self): url = reverse('loan-admin:loanapplication-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK)
class ListLoanProgramTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() LoanProgramFactory.create_batch(2) def test_list(self): url = reverse('loan:loanprogram-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()), 2)
class ListLoanTermTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login() LoanTermNotificationFactory.create_batch(10) def test_list(self): url = reverse('loan-admin:loantermnotification-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 10)
def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() ConstantCoreBusiness.transfer = MagicMock(return_value=None) self.member = LoanMemberFactory(user_id=1) app = LoanApplicationFactory(status=LOAN_APPLICATION_STATUS.approved) mem_app = LoanMemberApplicationFactory(application=app, member=self.member, main=True) self.loan_term = LoanTermFactory(loan_applicant=mem_app, pay_date=get_now() + timedelta(days=2))
class ListLoanApplicationTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login() LoanApplicationFactory.create_batch(20) def test_list(self): url = reverse('loan-admin:loanapplication-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 20) def test_filter_1(self): url = reverse('loan-admin:loanapplication-list') response = self.client.get( url, data={'status': LOAN_APPLICATION_STATUS.pending}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertLess(len(response.json()['results']), 20) def test_full_detail(self): url = reverse('loan-admin:loanapplication-list') member = LoanMemberFactory() member_sub1 = LoanMemberFactory() member_sub2 = LoanMemberFactory() app = LoanApplicationFactory() mem_app = LoanMemberApplicationFactory(application=app, member=member, main=True) LoanMemberApplicationFactory(application=app, member=member_sub1, main=False) LoanMemberApplicationFactory(application=app, member=member_sub2, main=False) LoanMemberApplicationDataFieldFactory(loan_applicant=mem_app, field_type=FIELD_TYPE.text) LoanMemberApplicationDataFieldFactory(loan_applicant=mem_app, field_type=FIELD_TYPE.image) LoanMemberApplicationDataFieldFactory(loan_applicant=mem_app, field_type=FIELD_TYPE.file) response = self.client.get(url, format='json') # print(response.json()) self.assertEqual(response.status_code, status.HTTP_200_OK)
class LoanApplicationActionTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() def test_cancel(self): member = LoanMemberFactory(user_id=1) app = LoanApplicationFactory(status=LOAN_APPLICATION_STATUS.pending) loan_app = LoanMemberApplicationFactory(application=app, member=member, main=True) url = reverse('loan:loanapplication-cancel', args=[loan_app.pk]) response = self.client.patch(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.json()['status'], LOAN_APPLICATION_STATUS.cancelled)
class LoanMemberSendPhoneVerificationTests(APITestCase): def setUp(self): SmsNotification.send_sms_template = MagicMock(return_value=None) self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() def test_send_no_member(self): self.assertEqual(LoanMember.objects.count(), 0) url = reverse('loan:phone-verification-view') user_phone = '1234567890' response = self.client.post(url, data={'user_phone': user_phone}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) member = LoanMember.objects.first() self.assertEqual(LoanMember.objects.count(), 1) self.assertEqual(member.user_phone, user_phone) def test_send_has_member(self): LoanMemberFactory(user_email=self.auth_utils.username, phone_retry=10) self.assertEqual(LoanMember.objects.count(), 1) url = reverse('loan:phone-verification-view') user_phone = '1234567890' response = self.client.post(url, data={'user_phone': user_phone}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) member = LoanMember.objects.first() self.assertEqual(LoanMember.objects.count(), 1) self.assertEqual(member.user_phone, user_phone) def test_send_has_member_limit(self): LoanMemberFactory(user_email=self.auth_utils.username, phone_retry=0) url = reverse('loan:phone-verification-view') user_phone = '1234567890' response = self.client.post(url, data={'user_phone': user_phone}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
class ListLoanTermTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login() LoanTermFactory.create_batch(10) def test_list(self): url = reverse('loan-admin:loanterm-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 10) def test_filter_1(self): url = reverse('loan-admin:loanterm-list') response = self.client.get( url, data={'paid_status': LOAN_TERM_STATUS.early_paid}, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertLess(len(response.json()['results']), 10) def test_full_detail(self): url = reverse('loan-admin:loanterm-list') member = LoanMemberFactory() member_sub1 = LoanMemberFactory() member_sub2 = LoanMemberFactory() app = LoanApplicationFactory() mem_app = LoanMemberApplicationFactory(application=app, member=member, main=True) LoanMemberApplicationFactory(application=app, member=member_sub1, main=False) LoanMemberApplicationFactory(application=app, member=member_sub2, main=False) LoanTermFactory(loan_applicant=mem_app, pay_date=get_now() + timedelta(days=2)) response = self.client.get(url, format='json') # print(response.json()) self.assertEqual(response.status_code, status.HTTP_200_OK)
class LoanTermTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() ConstantCoreBusiness.transfer = MagicMock(return_value=None) self.member = LoanMemberFactory(user_id=1) app = LoanApplicationFactory(status=LOAN_APPLICATION_STATUS.approved) mem_app = LoanMemberApplicationFactory(application=app, member=self.member, main=True) self.loan_term = LoanTermFactory(loan_applicant=mem_app, pay_date=get_now() + timedelta(days=2)) def test_pay(self): url = reverse('loan:loanterm-pay', args=[self.loan_term.pk]) response = self.client.post(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) ConstantCoreBusiness.transfer.assert_called_once_with( self.member.user_id, settings.CONSTANT_USER_ID, self.loan_term.total_amount)
class ListLoanApplicationTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() LoanApplicationFactory.create_batch(10) def test_list(self): url = reverse('loan:loanapplication-list') response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 0) def test_user_list(self): url = reverse('loan:loanapplication-list') member = LoanMemberFactory(user_id=1) app = LoanApplicationFactory() LoanMemberApplicationFactory(application=app, member=member, main=True) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(len(response.json()['results']), 1)
def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login() LoanApplicationFactory.create_batch(20)
def setUp(self): SmsNotification.send_sms_template = MagicMock(return_value=None) self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login()
def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() LoanProgramFactory.create_batch(2)
def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.admin_login()
class LoanApplicationPhoneValidationTests(APITestCase): def setUp(self): self.auth_utils = AuthenticationUtils(self.client) self.auth_utils.user_login() self.url = reverse('loan:loan-application-view') EmailNotification.send_email_template = MagicMock(return_value=None) LoanProgramFactory() def test_add_application_invalid_phone_verification(self): LoanMemberFactory(user_email=self.auth_utils.username, phone_retry=10, phone_verification_code='123456') response = self.client.post(self.url, data={'phone_verification_code': '111111'}, format='json') self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_add_application(self): LoanMemberFactory(user_email=self.auth_utils.username, phone_retry=10, phone_verification_code='123456') response = self.client.post(self.url, data={ 'loan_amount': 100, 'term': 6, 'main_member': { 'member': { 'user_email': '*****@*****.**', 'user_phone': '123456789', 'user_name': 'Student Name', }, 'data_fields': [{ 'field_name': 'student_id', 'field_value': '123456789000', 'field_type': 'text' }, { 'field_name': 'student_card', 'field_value': 'image_url', 'field_type': 'image' }] }, 'members': [{ 'member': { 'user_email': '*****@*****.**', 'user_phone': '123456789', 'user_name': 'Student Name', }, 'data_fields': [{ 'field_name': 'student_id', 'field_value': '123456789000', 'field_type': 'text' }, { 'field_name': 'student_card', 'field_value': 'image_url', 'field_type': 'image' }] }], 'phone_verification_code': '123456' }, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED)