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)
    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)
    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 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)
    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_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)
    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_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)
    def setUp(self):
        self.member1 = LoanMemberFactory(user_id=1)
        self.member2 = LoanMemberFactory(user_id=2)
        self.member3 = LoanMemberFactory(user_id=3)

        self.app = LoanApplicationFactory(
            status=LOAN_APPLICATION_STATUS.created)
        LoanMemberApplicationFactory(
            application=self.app,
            member=self.member1,
            main=True,
            status=LOAN_MEMBER_APPLICATION_STATUS.connecting)
        LoanMemberApplicationFactory(
            application=self.app,
            member=self.member2,
            main=False,
            status=LOAN_MEMBER_APPLICATION_STATUS.connecting)
        LoanMemberApplicationFactory(
            application=self.app,
            member=self.member3,
            main=False,
            status=LOAN_MEMBER_APPLICATION_STATUS.connecting)

        self.url = reverse('loan:loan-disconnect-view')
    def setUp(self):
        self.auth_utils = AuthenticationUtils(self.client)
        self.auth_utils.admin_login()

        LoanApplicationFactory.create_batch(20)