diff --git a/akauntingpy/api.py b/akauntingpy/api.py index 14de347..376f0ff 100644 --- a/akauntingpy/api.py +++ b/akauntingpy/api.py @@ -39,8 +39,7 @@ class Client(object): self.currency_rate = currency_rate def call(self, method="get", endpoint=None, - **params) -> dict(): - response = None + **params) -> dict: response = requests.request(method=method, url=self.url + "/" + endpoint, @@ -84,7 +83,7 @@ class Client(object): return data['data'] def create_transaction(self, - type='income', # Payment method type + transaction_type='income', # Payment method type account_id=None, # Account ID to assign category_id=None, # Category ID to assign contact_id=None, # Contact ID/Client to assign @@ -107,8 +106,8 @@ class Client(object): data = self.call(endpoint="transactions", method="POST", - search="type:" + type, - type=type, + search="type:" + transaction_type, + type=transaction_type, account_id=account_id, category_id=category_id, paid_at=paid_at, diff --git a/tests/api_test.py b/tests/api_test.py index 2438f86..5e40371 100644 --- a/tests/api_test.py +++ b/tests/api_test.py @@ -1,90 +1,89 @@ import sys -from this import d sys.path.insert(1, '.') -import pytest +from helpers import RetrieveJSONFromFile import akauntingpy from akauntingpy.exceptions import * -from helpers import RetrieveJSONFromFile +import pytest from requests.auth import HTTPBasicAuth + class TestAPI: @pytest.fixture() def setUp(self): c = akauntingpy.Client("https://akaunting.guise.net.nz/api", - "aaron@guise.net.nz", - "L3Tm31N0w", - 1) + "aaron@guise.net.nz", + "L3Tm31N0w", + 1) yield c - + @pytest.fixture() def setUpFailed(self): c = akauntingpy.Client("https://akaunting.guise.net.nz/api", - "aaron@guise.net.nz", - "L3Tm31N0w1", - 1) + "aaron@guise.net.nz", + "L3Tm31N0w1", + 1) yield c - + def test_init(self, setUp): c = setUp assert isinstance(c, akauntingpy.Client) assert c.url == "https://akaunting.guise.net.nz/api" - assert isinstance(c.authentication, HTTPBasicAuth) + assert isinstance(c.authentication, HTTPBasicAuth) def test_ping_success(self, setUp, requests_mock): - c = setUp - requests_mock.get(c.url + '/ping', - json=RetrieveJSONFromFile("data/pingSuccess.json"), - status_code=200) - data = c.ping() - # The returned data should have status = ok - assert data['status'] == 'ok' - + c = setUp + requests_mock.get(c.url + '/ping', + json=RetrieveJSONFromFile("data/pingSuccess.json"), + status_code=200) + data = c.ping() + # The returned data should have status = ok + assert data['status'] == 'ok' + def test_ping_failed(self, setUpFailed, requests_mock): - c = setUpFailed - requests_mock.get(c.url + '/ping', - json=RetrieveJSONFromFile("data/pingFailure.json"), - status_code=401) - with pytest.raises(MissingPermission, match="Invalid credentials."): - + c = setUpFailed + requests_mock.get(c.url + '/ping', + json=RetrieveJSONFromFile("data/pingFailure.json"), + status_code=401) + with pytest.raises(MissingPermission, match="Invalid credentials."): data = c.ping() assert data['status_code'] == 401 - + def test_get_accounts(self, setUp, requests_mock): c = setUp requests_mock.get(c.url + "/accounts", json=RetrieveJSONFromFile("data/GetAccountsList.json")) data = c.get_accounts(params={'page': 1, 'limit': 200}) - + def test_get_account_search(self, setUp, requests_mock): c = setUp requests_mock.get(c.url + "/accounts?search=number%3A38-9011-0510023-03¶ms=page¶ms=limit&company_id=1", json=RetrieveJSONFromFile("data/GetAccountsSearch.json")) - data = c.get_accounts(search="number:38-9011-0510023-03",params={'page': 1, 'limit': 200}) - + data = c.get_accounts(search="number:38-9011-0510023-03", params={'page': 1, 'limit': 200}) + def test_get_account_search_not_found(self, setUp, requests_mock): c = setUp requests_mock.get(c.url + "/accounts?search=number%3Aarandomvalue&company_id=1", json=RetrieveJSONFromFile("data/GetAccountsSearchNotFound.json")) with pytest.raises(AccountNotFound): data = c.get_accounts(search="number:arandomvalue") - + def test_create_transaction_income_success(self, setUp, requests_mock, - type='income', # Payment method type - account_id=2, # Account ID to assign - category_id=3, # Category ID to assign - contact_id=None, # Contact ID/Client to assign - paid_at="2022-05-15", # Date of expense/transfer or income - reference=None, # Reference for the payment - payment_method="bank_transfer", # Payment method - currency_code="NZD", # Currency code - currency_rate=1, # Currency rate - amount="25.00", # Amount received/paid - ): + transaction_type='income', # Payment method type + account_id=2, # Account ID to assign + category_id=3, # Category ID to assign + contact_id=None, # Contact ID/Client to assign + paid_at="2022-05-15", # Date of expense/transfer or income + reference=None, # Reference for the payment + payment_method="bank_transfer", # Payment method + currency_code="NZD", # Currency code + currency_rate=1, # Currency rate + amount="25.00", # Amount received/paid + ): c = setUp requests_mock.post(c.url + "/transactions", - json=RetrieveJSONFromFile("data/CreateTransactionIncomeSuccess.json"), - status_code=201) - data = c.create_transaction(type=type, + json=RetrieveJSONFromFile("data/CreateTransactionIncomeSuccess.json"), + status_code=201) + data = c.create_transaction(transaction_type=transaction_type, account_id=account_id, category_id=category_id, paid_at=paid_at, @@ -96,18 +95,18 @@ class TestAPI: amount=amount, description="Some description of the transaction" ) - + def test_create_transaction_income_failed(self, setUp, requests_mock, - contact_id=None, # Contact ID/Client to assign - reference=None, # Reference for the payment - currency_code="NZD", # Currency code - currency_rate=1, # Currency rate - amount="25.00", # Amount received/paid - ): + contact_id=None, # Contact ID/Client to assign + reference=None, # Reference for the payment + currency_code="NZD", # Currency code + currency_rate=1, # Currency rate + amount="25.00", # Amount received/paid + ): c = setUp requests_mock.post(c.url + "/transactions", - json=RetrieveJSONFromFile("data/CreateTransactionIncomeFailed.json"), - status_code=422) + json=RetrieveJSONFromFile("data/CreateTransactionIncomeFailed.json"), + status_code=422) with pytest.raises(InvalidData, match="The given data was invalid.*"): data = c.create_transaction(contact_id=contact_id, reference=reference, @@ -116,13 +115,13 @@ class TestAPI: amount=amount, description="Some description of the transaction" ) - + def test_create_transaction_expense_success(self, setUp, requests_mock): c = setUp requests_mock.post(c.url + "/transactions", - json=RetrieveJSONFromFile("data/CreateTransactionExpenseSuccess.json"), - status_code=201) - data = c.create_transaction(type="expense", + json=RetrieveJSONFromFile("data/CreateTransactionExpenseSuccess.json"), + status_code=201) + data = c.create_transaction(transaction_type="expense", amount=100.00, account_id=3, paid_at="2022-05-16", @@ -132,4 +131,3 @@ class TestAPI: category_id="4", description="Some expenditures" ) -