| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- """
- Tests for Transaction app
- """
- from django.test import TestCase
- from rest_framework.test import APITestCase
- from rest_framework import status
- from rest_framework.reverse import reverse
- from django.contrib.auth import get_user_model
- from .serializers import (CreateTransactionSerializer)
- from .models import Transaction
- User = get_user_model()
- class TransactionsSerializerTest(TestCase):
- """ Test module for test all serializers API """
- user_error = {
- "reference": "000050",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": -25.10,
- "type": "outflow",
- "category": "groceries",
- "user_id": -99
- }
- inflow_ok = {
- "reference": "000051",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": 51.13,
- "type": "inflow",
- "category": "groceries",
- "user_id": 1
- }
- inflow_error = {
- "reference": "000052",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": -51.13,
- "type": "inflow",
- "category": "groceries",
- "user_id": 1
- }
- outflow_ok = {
- "reference": "000053",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": -25.10,
- "type": "outflow",
- "category": "groceries",
- "user_id": 1
- }
- outflow_error = {
- "reference": "000054",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": 25.10,
- "type": "outflow",
- "category": "groceries",
- "user_id": 1
- }
- type_error = {
- "reference": "000055",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": 25.10,
- "type": "another_type",
- "category": "groceries",
- "user_id": 1
- }
- date_error = {
- "reference": "000052",
- "account": "C00099",
- "amount": -51.13,
- "type": "inflow",
- "category": "groceries",
- "user_id": 1
- }
- def setUp(self):
- User.objects.create(id=1,name='test',email='test@test.com',age=18)
- def test_wrong_outflow_value(self):
- serializer = CreateTransactionSerializer(data=self.outflow_error)
- self.assertEqual(serializer.is_valid(), False)
- self.assertEqual(set(serializer.errors.keys()), set(['amount']))
- def test_wrong_inflow_value(self):
- serializer = CreateTransactionSerializer(data=self.inflow_error)
- self.assertEqual(serializer.is_valid(), False)
- self.assertEqual(set(serializer.errors.keys()), set(['amount']))
- def test_wrong_type_value(self):
- serializer = CreateTransactionSerializer(data=self.type_error)
- self.assertEqual(serializer.is_valid(), False)
- self.assertEqual(set(serializer.errors.keys()), set(['type']))
- def test_wrong_user_value(self):
- serializer = CreateTransactionSerializer(data=self.user_error)
- self.assertEqual(serializer.is_valid(), False)
- self.assertEqual(set(serializer.errors.keys()), set(['user_id']))
- def test_wrong_date_value(self):
- serializer = CreateTransactionSerializer(data=self.date_error)
- self.assertEqual(serializer.is_valid(), False)
- self.assertEqual(set(serializer.errors.keys()), set(['date']))
- def test_pass_inflow(self):
- serializer = CreateTransactionSerializer(data=self.inflow_ok)
- self.assertEqual(serializer.is_valid(), True)
- def test_pass_outflow(self):
- serializer = CreateTransactionSerializer(data=self.outflow_ok)
- self.assertEqual(serializer.is_valid(), True)
- class TransactionViewTest(APITestCase):
- """ Test case for Transactions Views """
- inflow_ok = {
- "reference": "000051",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": 51.1,
- "type": "inflow",
- "category": "salary",
- "user_id": 1
- }
- outflow_ok = {
- "reference": "000053",
- "account": "C00099",
- "date": "2020-01-03",
- "amount": -25.10,
- "type": "outflow",
- "category": "groceries",
- "user_id": 1
- }
- balance_expected = [{
- "account": "C00099",
- "balance": inflow_ok.get('amount')+outflow_ok.get('amount'),
- "total_inflow": inflow_ok.get('amount'),
- "total_outflow": outflow_ok.get('amount'),
- }]
- balance_cashflow = {
- "inflow": {inflow_ok.get('category'): inflow_ok.get('amount')},
- "outflow": {outflow_ok.get('category'): outflow_ok.get('amount')},
- }
- def setUp(self):
- User.objects.create(id=1,name='test',email='test@test.com',age=18)
- Transaction.objects.create(**self.inflow_ok)
- Transaction.objects.create(**self.outflow_ok)
- def test_get_balance(self):
- # get API response
- response = self.client.get(reverse('transactions:balance-detail',
- kwargs={'user_id':1}),{}, format='json')
- self.assertEqual(response.data, self.balance_expected)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- def test_get_cashflow(self):
- # get API response
- response = self.client.get(reverse('transactions:cashflow-detail',
- kwargs={'user_id':1}),{}, format='json')
- self.assertEqual(response.data, self.balance_cashflow)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
|