finance-watcher / test / api / endpoints / test_account.py
test_account.py
Raw
from api.app import app
from unittest.mock import patch
from test.test_objects import create_mock_business, create_mock_business_type
from .test_helpers import response_data_to_dict, BASE_URL


class TestBusinessAPI:
    @patch('database.finance_database.FinanceDatabase.insert_businesses')
    def test_post(self, mock_insert_business):
        client = app.test_client()

         # test if failed to insert transactions
        payload = {
            "businesses": [
                {
                    "name": 'SomeBusiness',
                    "business_type_id": 1
                }
            ]
        }
        mock_insert_business.return_value = None
        response = client.post(f'{BASE_URL}/business',json=payload)
        assert response.status_code == 500

        # test if insert sucessful
        mock_insert_business.return_value = [
            create_mock_business(id=1, name='SomeBusiness', business_type_id=1)
        ]

        response = client.post(f'{BASE_URL}/business',json=payload)

        assert response.status_code == 200
        resposne_data = response_data_to_dict(response)
        assert resposne_data == {
            'status': 'SUCCESS',
            'status_code': 200,
            'data': [
                {
                    'id': 1,
                    'name': 'SomeBusiness',
                    'business_type_id': 1
                }
            ]
        }

class TestBusinessTypeByNameAPI:
    @patch('database.finance_database.FinanceDatabase.get_business_type')
    def test_get(self, mock_get_business_type):
        client = app.test_client()
        fake_business_type = 'SomeWeirdBusinessType'
        response = client.get(f'{BASE_URL}/business/type/{fake_business_type}')
        assert response.status_code == 500
       
        real_business_type = 'Travel'
        mock_get_business_type.return_value = None
        response = client.get(f'{BASE_URL}/business/type/{real_business_type}')
        assert response.status_code == 500

        mock_get_business_type.return_value = create_mock_business_type(name=real_business_type)
        response = client.get(f'{BASE_URL}/business/type/{real_business_type}')
        assert response.status_code == 200
        resposne_data = response_data_to_dict(response)
        assert resposne_data == {
            'status': 'SUCCESS',
            'status_code': 200,
            'data':{
                'id': 1,
                'name': 'Travel',
            }
        }