3 Commits

Author SHA1 Message Date
d06b7d0a76 static version 2022-05-30 15:32:58 +12:00
c92fb0d1ee Added create transfer 2022-05-30 15:21:14 +12:00
96d4523ef4 Add test to cover all lines 2022-05-27 23:13:37 +12:00
4 changed files with 88 additions and 5 deletions

View File

@@ -1,11 +1,10 @@
import requests import requests
from requests.auth import HTTPBasicAuth from requests.auth import HTTPBasicAuth
from setuptools_scm import get_version
from akauntingpy import exceptions from akauntingpy import exceptions
from akauntingpy.helpers import * from akauntingpy.helpers import *
__version__ = get_version(root='..', relative_to=__file__) __version__ = "1.0.2"
class Client(object): class Client(object):
@@ -116,8 +115,29 @@ class Client(object):
reference=reference, reference=reference,
currency_code=currency_code, currency_code=currency_code,
currency_rate=currency_rate, currency_rate=currency_rate,
amount=amount, amount=EnsurePositiveInteger(amount),
description=description, description=description,
**params **params
) )
return data return data
def create_transfer(self,
from_account_id=None, # Account ID to create transfer from
to_account_id=None, # Account ID to create transfer to
transferred_at=None, # Date of expense/transfer or income
payment_method="Bank Transfer", # Payment method
amount=None, # Amount received/paid
**params # Any additional parameters
):
data = self.call(endpoint="transfers",
method="POST",
from_account_id=from_account_id,
to_account_id=to_account_id,
transferred_at=transferred_at,
payment_method=payment_method,
amount=EnsurePositiveInteger(amount),
**params
)
return data

View File

@@ -7,3 +7,6 @@ def RemoveFromString(items, string):
for item in items: for item in items:
string = string.replace(item, '') string = string.replace(item, '')
return string return string
def EnsurePositiveInteger(number):
return float(number) if float(number) > 0 else (float(number) * -1)

View File

@@ -0,0 +1,17 @@
{
"data":{
"id":2,
"company_id":1,
"from_account":"Some Account",
"from_account_id":1,
"to_account":"Some Account New",
"to_account_id":2,
"paid_at":"2022-05-16T11:57:51+12:00",
"amount":100,
"amount_formatted":"$100.00",
"currency_code":"NZD",
"created_by":1,
"created_at":"2022-05-16T11:57:51+12:00",
"updated_at":"2022-05-16T11:57:51+12:00"
}
}

View File

@@ -1,4 +1,5 @@
import sys import sys
sys.path.insert(1, '.') sys.path.insert(1, '.')
from helpers import RetrieveJSONFromFile from helpers import RetrieveJSONFromFile
import akauntingpy import akauntingpy
@@ -96,6 +97,32 @@ class TestAPI:
description="Some description of the transaction" description="Some description of the transaction"
) )
def test_create_transaction_income_default_currency_success(self, setUp, requests_mock,
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
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(transaction_type=transaction_type,
account_id=account_id,
category_id=category_id,
paid_at=paid_at,
contact_id=contact_id,
payment_method=payment_method,
reference=reference,
amount=amount,
description="Some description of the transaction"
)
def test_create_transaction_income_failed(self, setUp, requests_mock, def test_create_transaction_income_failed(self, setUp, requests_mock,
contact_id=None, # Contact ID/Client to assign contact_id=None, # Contact ID/Client to assign
reference=None, # Reference for the payment reference=None, # Reference for the payment
@@ -118,7 +145,7 @@ class TestAPI:
def test_create_transaction_expense_success(self, setUp, requests_mock): def test_create_transaction_expense_success(self, setUp, requests_mock):
c = setUp c = setUp
requests_mock.post(c.url + "/transactions", requests_mock.post(c.url + "/transactions?search=type%3Aexpense&type=expense&account_id=3&category_id=4&paid_at=2022-05-16&payment_method=Bank+Transfer&currency_code=NZD&currency_rate=1&amount=100.0&description=Some+expenditures&company_id=1",
json=RetrieveJSONFromFile("data/CreateTransactionExpenseSuccess.json"), json=RetrieveJSONFromFile("data/CreateTransactionExpenseSuccess.json"),
status_code=201) status_code=201)
data = c.create_transaction(transaction_type="expense", data = c.create_transaction(transaction_type="expense",
@@ -131,3 +158,19 @@ class TestAPI:
category_id="4", category_id="4",
description="Some expenditures" description="Some expenditures"
) )
def test_create_transfer_success(self, setUp, requests_mock):
c = setUp
requests_mock.post(c.url + "/transfers",
json=RetrieveJSONFromFile("data/CreateTransferSuccess.json"),
status_code=201)
data = c.create_transfer( amount=100.00,
account_id=3,
paid_at="2022-05-16",
currency_rate=1,
currency_code="NZD",
payment_method="Bank Transfer",
category_id="4",
description="Some expenditures"
)