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', } }