Skip to content

Commit b54c36a

Browse files
committed
fix test cases
1 parent c164821 commit b54c36a

File tree

5 files changed

+69
-23
lines changed

5 files changed

+69
-23
lines changed

quickbooks/client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ def process_request(self, request_type, url, headers="", params="", data=""):
248248
request_type, url, headers=headers, params=params, data=data)
249249

250250
def get_single_object(self, qbbo, pk, params=None):
251-
url = "{0}/company/{1}/{2}/{3}/".format(self.api_url, self.company_id, qbbo.lower(), pk)
251+
url = "{0}/company/{1}/{2}/{3}".format(self.api_url, self.company_id, qbbo.lower(), pk)
252252
result = self.get(url, {}, params=params)
253253

254254
return result

tests/integration/test_account.py

Lines changed: 61 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,77 @@ def setUp(self):
1313

1414
def test_create(self):
1515
account = Account()
16-
account.AcctNum = self.account_number
17-
account.Name = self.name
16+
# Use shorter timestamp for uniqueness (within 20 char limit)
17+
timestamp = datetime.now().strftime('%m%d%H%M%S')
18+
unique_number = f"T{timestamp}" # T for Test
19+
unique_name = f"Test Account {timestamp}"
20+
21+
account.AcctNum = unique_number
22+
account.Name = unique_name
23+
account.AccountType = "Bank" # Required field
1824
account.AccountSubType = "CashOnHand"
19-
account.save(qb=self.qb_client)
2025

21-
self.id = account.Id
22-
query_account = Account.get(account.Id, qb=self.qb_client)
26+
created_account = account.save(qb=self.qb_client)
27+
28+
# Verify the save was successful
29+
self.assertIsNotNone(created_account)
30+
self.assertIsNotNone(created_account.Id)
31+
self.assertTrue(int(created_account.Id) > 0)
2332

24-
self.assertEqual(account.Id, query_account.Id)
25-
self.assertEqual(query_account.Name, self.name)
26-
self.assertEqual(query_account.AcctNum, self.account_number)
33+
query_account = Account.get(created_account.Id, qb=self.qb_client)
34+
35+
self.assertEqual(created_account.Id, query_account.Id)
36+
self.assertEqual(query_account.Name, unique_name)
37+
self.assertEqual(query_account.AcctNum, unique_number)
38+
self.assertEqual(query_account.AccountType, "Bank")
39+
self.assertEqual(query_account.AccountSubType, "CashOnHand")
2740

2841
def test_update(self):
29-
account = Account.filter(Name=self.name, qb=self.qb_client)[0]
42+
# First create an account with a unique name and number
43+
timestamp = datetime.now().strftime('%m%d%H%M%S')
44+
unique_number = f"T{timestamp}"
45+
unique_name = f"Test Account {timestamp}"
46+
47+
account = Account()
48+
account.AcctNum = unique_number
49+
account.Name = unique_name
50+
account.AccountType = "Bank"
51+
account.AccountSubType = "CashOnHand"
3052

31-
account.Name = "Updated Name {0}".format(self.account_number)
32-
account.save(qb=self.qb_client)
53+
created_account = account.save(qb=self.qb_client)
54+
55+
# Verify the save was successful
56+
self.assertIsNotNone(created_account)
57+
self.assertIsNotNone(created_account.Id)
3358

34-
query_account = Account.get(account.Id, qb=self.qb_client)
35-
self.assertEqual(query_account.Name, "Updated Name {0}".format(self.account_number))
59+
# Change the name
60+
updated_name = f"{unique_name}_updated"
61+
created_account.Name = updated_name
62+
updated_account = created_account.save(qb=self.qb_client)
63+
64+
# Query the account and make sure it has changed
65+
query_account = Account.get(updated_account.Id, qb=self.qb_client)
66+
self.assertEqual(query_account.Name, updated_name)
67+
self.assertEqual(query_account.AcctNum, unique_number) # Account number should not change
3668

3769
def test_create_using_from_json(self):
70+
timestamp = datetime.now().strftime('%m%d%H%M%S')
71+
unique_number = f"T{timestamp}"
72+
unique_name = f"Test JSON {timestamp}"
73+
3874
account = Account.from_json({
39-
"AcctNum": datetime.now().strftime('%d%H%M%S'),
40-
"Name": "{} {}".format(self.name, self.time.strftime("%Y-%m-%d %H:%M:%S")),
75+
"AcctNum": unique_number,
76+
"Name": unique_name,
77+
"AccountType": "Bank",
4178
"AccountSubType": "CashOnHand"
4279
})
4380

44-
account.save(qb=self.qb_client)
81+
created_account = account.save(qb=self.qb_client)
82+
self.assertIsNotNone(created_account)
83+
self.assertIsNotNone(created_account.Id)
84+
85+
# Verify we can get the account
86+
query_account = Account.get(created_account.Id, qb=self.qb_client)
87+
self.assertEqual(query_account.Name, unique_name)
88+
self.assertEqual(query_account.AccountType, "Bank")
89+
self.assertEqual(query_account.AccountSubType, "CashOnHand")

tests/integration/test_base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ def setUp(self):
1717
)
1818

1919
self.qb_client = QuickBooks(
20-
minorversion=73,
2120
auth_client=self.auth_client,
2221
refresh_token=os.environ.get('REFRESH_TOKEN'),
2322
company_id=os.environ.get('COMPANY_ID'),

tests/unit/test_client.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,10 @@ def test_client_new(self):
3232
self.qb_client = client.QuickBooks(
3333
company_id="company_id",
3434
verbose=True,
35-
minorversion=75,
3635
verifier_token=TEST_VERIFIER_TOKEN,
3736
)
3837

3938
self.assertEqual(self.qb_client.company_id, "company_id")
40-
self.assertEqual(self.qb_client.minorversion, 75)
4139

4240
def test_client_with_deprecated_minor_version(self):
4341
with warnings.catch_warnings(record=True) as w:
@@ -154,7 +152,7 @@ def test_get_single_object(self, make_req):
154152
qb_client.company_id = "1234"
155153

156154
qb_client.get_single_object("test", 1)
157-
url = "https://sandbox-quickbooks.api.intuit.com/v3/company/1234/test/1/"
155+
url = "https://sandbox-quickbooks.api.intuit.com/v3/company/1234/test/1"
158156
make_req.assert_called_with("GET", url, {}, params=None)
159157

160158
@patch('quickbooks.client.QuickBooks.make_request')
@@ -163,7 +161,7 @@ def test_get_single_object_with_params(self, make_req):
163161
qb_client.company_id = "1234"
164162

165163
qb_client.get_single_object("test", 1, params={'param':'value'})
166-
url = "https://sandbox-quickbooks.api.intuit.com/v3/company/1234/test/1/"
164+
url = "https://sandbox-quickbooks.api.intuit.com/v3/company/1234/test/1"
167165
make_req.assert_called_with("GET", url, {}, params={'param':'value'})
168166

169167
@patch('quickbooks.client.QuickBooks.process_request')

tests/unit/test_mixins.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import unittest
22
from urllib.parse import quote
3+
from unittest import TestCase
4+
from datetime import datetime
35

46
from quickbooks.objects import Bill, Invoice, Payment, BillPayment
57

68
from tests.integration.test_base import QuickbooksUnitTestCase
9+
from tests.unit.test_client import MockSession
710

811
try:
912
from mock import patch
@@ -136,9 +139,10 @@ def test_all(self, where):
136139
where.assert_called_once_with('', order_by='', max_results=100, start_position='', qb=None)
137140

138141
def test_all_with_qb(self):
142+
self.qb_client.session = MockSession() # Add a mock session
139143
with patch.object(self.qb_client, 'query') as query:
140144
Department.all(qb=self.qb_client)
141-
self.assertTrue(query.called)
145+
query.assert_called_once()
142146

143147
@patch('quickbooks.mixins.ListMixin.where')
144148
def test_filter(self, where):

0 commit comments

Comments
 (0)