Пример #1
0
    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        try:
            Transaction.make_transaction(**serializer.validated_data)
        except InvalidAmount as err:
            content = {err.default_code: err.detail}
            status_code = err.status_code
            return Response(content, status=status_code)

        return Response(serializer.data, status=status.HTTP_201_CREATED)
Пример #2
0
    def test_transaction_fail_amount(self):
        initial_balance = 0
        trans_amount = 100
        account = Account.objects.create(
            holder=self.user,
            balance=initial_balance,
            status=Account.ACTIVE
        )

        with self.assertRaises(InvalidAmount):
            Transaction.make_transaction(
                account=account,
                merchant='GH',
                amount=trans_amount,
                comment='For you'
            )
Пример #3
0
    def test_transfer(self):
        initial_balance = 300
        trans_amount = 100
        account = Account.objects.create(
            holder=self.user,
            balance=initial_balance,
            status=Account.ACTIVE
        )
        Transaction.make_transaction(
            account=account,
            merchant='GH',
            amount=trans_amount,
            comment='For you'
        )
        transaction = Transaction.objects.all().first()

        self.assertIsInstance(transaction, Transaction)
        self.assertEqual(transaction.__str__(), f'Account {transaction.account.uid} sent {transaction.amount} to {transaction.merchant}')
Пример #4
0
    def test_transaction(self):
        initial_balance = 300
        trans_amount = 100
        account = Account.objects.create(
            holder=self.user,
            balance=initial_balance,
            status=Account.ACTIVE
        )
        Transaction.make_transaction(
            account=account,
            merchant='GH',
            amount=trans_amount,
            comment='For you'
        )

        expected_balance = initial_balance - trans_amount
        transaction = Transaction.objects.all()

        self.assertEqual(account.balance, expected_balance)
        self.assertEqual(len(transaction), 1)