Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c373ba6

Browse files
committed
Added integration tests for timeactivity and created helpers.py
1 parent 729d812 commit c373ba6

File tree

6 files changed

+122
-12
lines changed

6 files changed

+122
-12
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ Changelog
99
* Fixed issues creating notes with Attachable.
1010
* Updated default values on Transfer.
1111
* Fixed issue with default values on Deposit.
12+
* Fixed issue with default values on Emloyee.
13+
* Fixed issue with default vaules on TimeActivity.
14+
* Added date and datetime format helper functions.
1215

1316
* 0.4.0 (June 15, 2016)
1417
* Added a way of disconnecting a Quickbooks Account to client.

README.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,18 @@ Loading JSON data into a quickbooks object:
302302
)
303303
account.save(qb=client)
304304

305+
Date formatting
306+
----------------
307+
When setting date or datetime fields, Quickbooks requires a specific format.
308+
Formating helpers are available in helpers.py. Example usage:
309+
310+
::
311+
312+
date_string = qb_date_format(date(2016, 7, 22))
313+
date_time_string = qb_datetime_format(datetime(2016, 7, 22, 10, 35, 00))
314+
date_time_with_utc_string = qb_datetime_utc_offset_format(datetime(2016, 7, 22, 10, 35, 00), '-06:00')
315+
316+
305317
**Note:** Objects and object property names match their Quickbooks
306318
counterparts and do not follow PEP8.
307319

quickbooks/helpers.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
def qb_date_format(input_date):
3+
"""
4+
Converts date to quickbooks date format
5+
:param input_date:
6+
:return:
7+
"""
8+
return input_date.strftime("%Y-%m-%d")
9+
10+
11+
def qb_datetime_format(input_date):
12+
"""
13+
Converts datetime to quickbooks datetime format
14+
:param input_date:
15+
:return:
16+
"""
17+
return input_date.strftime("%Y-%m-%dT%H:%M:%S")
18+
19+
20+
def qb_datetime_utc_offset_format(input_date, utc_offset):
21+
"""
22+
Converts datetime to quickbooks datetime format including UTC offset
23+
:param input_date:
24+
:param utc_offset: Formatted +/-HH:MM example: -08:00
25+
:return:
26+
"""
27+
return "{}{}".format(qb_datetime_format(input_date), utc_offset)

quickbooks/objects/timeactivity.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,18 @@ class TimeActivity(QuickbooksManagedObject, QuickbooksTransactionEntity, LinkedT
2121

2222
def __init__(self):
2323
super(TimeActivity, self).__init__()
24-
self.NameOf = ""
25-
self.TimeZone = ""
26-
self.TxnDate = ""
27-
self.BillableStatus = ""
24+
self.NameOf = "" # required
25+
self.TxnDate = None
26+
self.BillableStatus = None
2827
self.Taxable = False
29-
self.HourlyRate = 0
30-
self.Hours = 0
31-
self.Minutes = 0
32-
self.BreakHours = 0
33-
self.BreakMinutes = 0
34-
self.StartTime = ""
35-
self.EndTime = ""
36-
self.Description = ""
28+
self.HourlyRate = None
29+
self.Hours = None
30+
self.Minutes = None
31+
self.BreakHours = None
32+
self.BreakMinutes = None
33+
self.StartTime = None
34+
self.EndTime = None
35+
self.Description = None
3736

3837
self.VendorRef = None
3938
self.CustomerRef = None
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import os
2+
import unittest
3+
from datetime import datetime
4+
5+
from quickbooks.client import QuickBooks
6+
from quickbooks.helpers import qb_datetime_utc_offset_format
7+
from quickbooks.objects.employee import Employee
8+
from quickbooks.objects.timeactivity import TimeActivity
9+
10+
11+
class TimeActivityTest(unittest.TestCase):
12+
def setUp(self):
13+
self.qb_client = QuickBooks(
14+
sandbox=True,
15+
consumer_key=os.environ.get('CONSUMER_KEY'),
16+
consumer_secret=os.environ.get('CONSUMER_SECRET'),
17+
access_token=os.environ.get('ACCESS_TOKEN'),
18+
access_token_secret=os.environ.get('ACCESS_TOKEN_SECRET'),
19+
company_id=os.environ.get('COMPANY_ID')
20+
)
21+
22+
self.name = "Test {0}".format(datetime.now().strftime('%d%H%M'))
23+
24+
def test_create(self):
25+
employee = Employee.all(max_results=1, qb=self.qb_client)[0]
26+
27+
time_activity = TimeActivity()
28+
time_activity.NameOf = "Employee"
29+
30+
time_activity.EmployeeRef = employee.to_ref()
31+
time_activity.Description = "Test description"
32+
time_activity.StartTime = qb_datetime_utc_offset_format(datetime(2016, 7, 22, 10, 0),'-07:00')
33+
time_activity.EndTime = qb_datetime_utc_offset_format(datetime(2016, 7, 22, 11, 0), '-07:00')
34+
time_activity.save(qb=self.qb_client)
35+
36+
query_time_activity = TimeActivity.get(time_activity.Id, qb=self.qb_client)
37+
38+
self.assertEquals(query_time_activity.Id, time_activity.Id)
39+
self.assertEquals(query_time_activity.NameOf, "Employee")
40+
self.assertEquals(query_time_activity.Description, "Test description")
41+
self.assertEquals(query_time_activity.EmployeeRef.value, employee.Id)
42+
self.assertEquals(query_time_activity.StartTime, '2016-07-22T10:00:00-07:00')
43+
self.assertEquals(query_time_activity.EndTime, '2016-07-22T11:00:00-07:00')
44+
45+
def test_update(self):
46+
time_activity = TimeActivity.all(max_results=1, qb=self.qb_client)[0]
47+
time_activity.Description = "Updated test description"
48+
time_activity.save(qb=self.qb_client)
49+
50+
query_time_activity = TimeActivity.get(time_activity.Id, qb=self.qb_client)
51+
52+
self.assertEquals(query_time_activity.Description, "Updated test description")

tests/unit/test_helpers.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import unittest
2+
from quickbooks.helpers import qb_date_format, qb_datetime_format, qb_datetime_utc_offset_format
3+
from datetime import datetime, date
4+
5+
6+
class HelpersTests(unittest.TestCase):
7+
def test_qb_date_format(self):
8+
result = qb_date_format(date(2016, 7, 22))
9+
self.assertEquals(result, '2016-07-22')
10+
11+
def test_qb_datetime_format(self):
12+
result = qb_datetime_format(datetime(2016, 7, 22, 10, 35, 00))
13+
self.assertEquals(result, '2016-07-22T10:35:00')
14+
15+
def test_qb_datetime_utc_offset_format(self):
16+
result = qb_datetime_utc_offset_format(datetime(2016, 7, 22, 10, 35, 00), '-06:00')
17+
self.assertEquals(result, '2016-07-22T10:35:00-06:00')

0 commit comments

Comments
 (0)