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)
Пример #3
0
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)
Пример #11
0
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)
Пример #16
0
 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)