Skip to content

Commit aee224c

Browse files
committed
Merge branch 'release/0.1.11'
2 parents 0d830c8 + c899ccc commit aee224c

File tree

9 files changed

+207
-144
lines changed

9 files changed

+207
-144
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Download to a location of your choice and do the following.
2121

2222
```python
2323

24-
from toggl-python-api-client.api_client import TogglClientApi
24+
from toggl.api_client import TogglClientApi
2525

2626
settings = {
2727
'token': 'xxx',

README.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Download to a location of your choice and do the following.
4040
.. code:: python
4141
4242
43-
from toggl-python-api-client.api_client import TogglClientApi
43+
from toggl.api_client import TogglClientApi
4444
4545
settings = {
4646
'token': 'xxx',

__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__author__ = 'mechastorm'
1+
__author__ = "mechastorm"

setup.py

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,22 @@
22

33

44
def readme():
5-
with open('README.rst') as f:
5+
with open("README.rst") as f:
66
return f.read()
77

8-
setup(name='python-toggl',
9-
version='0.1.10',
10-
description='Python Wrapper for Toggl API',
11-
long_description=readme(),
12-
url='https://github.com/swappsco/toggl-python-api-client',
13-
author='mechastorm',
14-
author_email='dev@swapps.co',
15-
license='MIT',
16-
packages=['toggl'],
17-
install_requires=[
18-
'requests',
19-
],
20-
test_suite='nose.collector',
21-
tests_require=['nose', 'httpretty'],
22-
zip_safe=False)
8+
9+
setup(
10+
name="python-toggl",
11+
version="0.1.11",
12+
description="Python Wrapper for Toggl API",
13+
long_description=readme(),
14+
url="https://github.com/swappsco/toggl-python-api-client",
15+
author="mechastorm",
16+
author_email="dev@swapps.co",
17+
license="MIT",
18+
packages=["toggl"],
19+
install_requires=["requests"],
20+
test_suite="nose.collector",
21+
tests_require=["nose", "httpretty"],
22+
zip_safe=False,
23+
)

tests/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__author__ = 'mechastorm'
1+
__author__ = "mechastorm"

tests/tests_live.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class TogglClientApiLiveTests(unittest.TestCase):
99

1010
# Runs before *every* tests
1111
def setUp(self):
12-
file_contents = open('tests_live_config.json')
12+
file_contents = open("tests_live_config.json")
1313
self.settings = json.load(file_contents)
1414
file_contents.close()
1515

@@ -23,36 +23,36 @@ def test_api_client_instance_created(self):
2323
self.assertNotEqual(self.api, None)
2424

2525
def test_valid_toggl_base_url(self):
26-
self.assertEqual(self.api.api_base_url, 'https://www.toggl.com/api/v8')
26+
self.assertEqual(self.api.api_base_url, "https://www.toggl.com/api/v8")
2727

2828
def test_api_toggl_auth_check_response_ok(self):
29-
response = self.api.query('/me')
29+
response = self.api.query("/me")
3030
self.assertEqual(response.status_code, 200)
3131

3232
def test_api_toggl_get_list_of_workspaces_response_ok(self):
3333
response = self.api.get_workspaces()
3434
self.assertEqual(response.status_code, 200)
3535

3636
def test_api_toggl_get_workspace_by_name_found(self):
37-
workspace = self.api.get_workspace_by_name(self.settings['workspace_name'])
38-
self.assertNotEqual(workspace['id'], '')
37+
workspace = self.api.get_workspace_by_name(self.settings["workspace_name"])
38+
self.assertNotEqual(workspace["id"], "")
3939

4040
def test_api_toggl_get_workspace_members_response_ok(self):
41-
workspace = self.api.get_workspace_by_name(self.settings['workspace_name'])
42-
response = self.api.get_workspace_members(workspace['id'])
41+
workspace = self.api.get_workspace_by_name(self.settings["workspace_name"])
42+
response = self.api.get_workspace_members(workspace["id"])
4343
self.assertEqual(response.status_code, 200)
4444

4545
def test_api_toggl_get_member_total_hours_range_response_ok(self):
46-
workspace_id = self.settings['workspace_id']
47-
user_id = self.settings['user_id']
48-
start_date = self.settings['start_date']
49-
end_date = self.settings['end_date']
46+
workspace_id = self.settings["workspace_id"]
47+
user_id = self.settings["user_id"]
48+
start_date = self.settings["start_date"]
49+
end_date = self.settings["end_date"]
5050
total = self.api.get_user_hours_range(
51-
'toggl-python-api-client-nosetests',
51+
"toggl-python-api-client-nosetests",
5252
workspace_id,
5353
user_id,
5454
start_date,
55-
end_date
55+
end_date,
5656
)
5757

58-
self.assertGreater(total, 0)
58+
self.assertGreater(total, 0)

tests/tests_offline.py

Lines changed: 96 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,38 @@ class ToogleClientApiTests(unittest.TestCase):
88

99
api = None
1010
connectLive = False
11-
base_api_url = ''
12-
base_api_report_url = ''
11+
base_api_url = ""
12+
base_api_report_url = ""
1313
http_content_type = "application/json"
1414

1515
# Runs before *every* tests
1616
def setUp(self):
1717
self.settings = {
18-
'workspace_name': 'A Company',
19-
'token': 'xxx',
20-
'base_url': 'https://my.service/api',
21-
'ver_api': 8,
22-
'base_url_report': 'https://my.service/reports/api',
23-
'ver_report': 2
18+
"workspace_name": "A Company",
19+
"token": "xxx",
20+
"base_url": "https://my.service/api",
21+
"ver_api": 8,
22+
"base_url_report": "https://my.service/reports/api",
23+
"ver_report": 2,
2424
}
2525
self.api = TogglClientApi(self.settings)
2626
httpretty.enable() # enable HTTPretty so that it will monkey patch the socket module
2727

28-
self.base_api_url = self.api.build_api_url(self.settings['base_url'], self.settings['ver_api'])
29-
self.base_api_report_url = self.api.build_api_url(self.settings['base_url_report'], self.settings['ver_report'])
28+
self.base_api_url = self.api.build_api_url(
29+
self.settings["base_url"], self.settings["ver_api"]
30+
)
31+
self.base_api_report_url = self.api.build_api_url(
32+
self.settings["base_url_report"], self.settings["ver_report"]
33+
)
3034

3135
# Runs after *every* tests
3236
def tearDown(self):
3337
del self.api
3438
httpretty.disable()
3539
httpretty.reset()
3640

37-
def load_json_file(self, location, base_path='tests/json_responses'):
38-
file_contents = open(base_path+'/'+location+'.json')
41+
def load_json_file(self, location, base_path="tests/json_responses"):
42+
file_contents = open(base_path + "/" + location + ".json")
3943
json_data = json.load(file_contents)
4044
file_contents.close()
4145

@@ -45,37 +49,36 @@ def test_api_client_instance_created(self):
4549
self.assertNotEqual(self.api, None)
4650

4751
def test_overriding_default_base_url_and_version_on_instance_creation(self):
48-
my_base_url = 'http://myownapi.com'
52+
my_base_url = "http://myownapi.com"
4953
my_ver_no = 12
50-
credentials = {
51-
'base_url': my_base_url,
52-
'ver_api': my_ver_no
53-
}
54+
credentials = {"base_url": my_base_url, "ver_api": my_ver_no}
5455
self.api = TogglClientApi(credentials)
55-
self.assertEqual(self.api.api_base_url, my_base_url + '/v' + str(my_ver_no))
56+
self.assertEqual(self.api.api_base_url, my_base_url + "/v" + str(my_ver_no))
5657

5758
def test_api_token_set(self):
58-
self.assertNotEqual(self.api.api_token, '')
59+
self.assertNotEqual(self.api.api_token, "")
5960

6061
def test_api_toggl_auth_response(self):
61-
expected_response_json_str = json.dumps(self.load_json_file('me'))
62+
expected_response_json_str = json.dumps(self.load_json_file("me"))
6263
httpretty.register_uri(
6364
httpretty.GET,
6465
self.base_api_url + "/me",
6566
body=expected_response_json_str,
66-
content_type=self.http_content_type)
67-
response = self.api.query('/me')
67+
content_type=self.http_content_type,
68+
)
69+
response = self.api.query("/me")
6870

6971
self.assertEqual(response.status_code, 200)
7072
self.assertEqual(response.text, expected_response_json_str)
7173

72-
def setup_test_api_toggl_get_workspace(self, json_file='workspaces'):
74+
def setup_test_api_toggl_get_workspace(self, json_file="workspaces"):
7375
expected_response_json_str = json.dumps(self.load_json_file(json_file))
7476
httpretty.register_uri(
7577
httpretty.GET,
7678
self.base_api_url + "/workspaces",
7779
body=expected_response_json_str,
78-
content_type=self.http_content_type)
80+
content_type=self.http_content_type,
81+
)
7982

8083
return expected_response_json_str
8184

@@ -86,84 +89,120 @@ def test_api_toggl_get_list_of_workspaces_response(self):
8689
self.assertEqual(response.status_code, 200)
8790
self.assertEqual(response.text, expected_response_json_str)
8891

89-
def setup_test_api_toggl_get_workspace_by_name(self, expected_found_index=2, json_file='workspaces'):
92+
def setup_test_api_toggl_get_workspace_by_name(
93+
self, expected_found_index=2, json_file="workspaces"
94+
):
9095
expected_response_json_str = self.setup_test_api_toggl_get_workspace(json_file)
9196
data = json.loads(expected_response_json_str)
9297
expected_workspace = data[expected_found_index]
93-
workspace = self.api.get_workspace_by_name(self.settings['workspace_name'])
98+
workspace = self.api.get_workspace_by_name(self.settings["workspace_name"])
9499

95100
return workspace, expected_workspace
96101

97102
def test_api_toggl_get_workspace_by_name_found(self):
98-
workspace, expected_workspace = self.setup_test_api_toggl_get_workspace_by_name()
99-
self.assertEqual(workspace['id'], expected_workspace['id'])
103+
workspace, expected_workspace = (
104+
self.setup_test_api_toggl_get_workspace_by_name()
105+
)
106+
self.assertEqual(workspace["id"], expected_workspace["id"])
100107

101108
def setup_test_api_toggl_get_workspace_members(self):
102-
workspace, expected_workspace = self.setup_test_api_toggl_get_workspace_by_name()
109+
workspace, expected_workspace = (
110+
self.setup_test_api_toggl_get_workspace_by_name()
111+
)
103112

104-
expected_response_json_str = json.dumps(self.load_json_file('workspace_members'))
113+
expected_response_json_str = json.dumps(
114+
self.load_json_file("workspace_members")
115+
)
105116
httpretty.register_uri(
106117
httpretty.GET,
107-
self.base_api_url + "/workspaces/" + str(workspace['id']) + "/workspace_users",
118+
self.base_api_url
119+
+ "/workspaces/"
120+
+ str(workspace["id"])
121+
+ "/workspace_users",
108122
body=expected_response_json_str,
109-
content_type=self.http_content_type)
123+
content_type=self.http_content_type,
124+
)
110125

111-
response = self.api.get_workspace_members(workspace['id'])
126+
response = self.api.get_workspace_members(workspace["id"])
112127

113128
return response, expected_response_json_str, workspace, expected_workspace
114129

115130
def test_api_toggl_get_workspace_members_response_ok(self):
116-
response, expected_response_json_str, workspace, expected_workspace = self.setup_test_api_toggl_get_workspace_members()
117-
self.assertEqual(workspace['id'], expected_workspace['id'])
131+
response, expected_response_json_str, workspace, expected_workspace = (
132+
self.setup_test_api_toggl_get_workspace_members()
133+
)
134+
self.assertEqual(workspace["id"], expected_workspace["id"])
118135
self.assertEqual(response.status_code, 200)
119136

120137
def test_api_toggl_get_workspace_members_response_count(self):
121-
response, expected_response_json_str, workspace, expected_workspace = self.setup_test_api_toggl_get_workspace_members()
138+
response, expected_response_json_str, workspace, expected_workspace = (
139+
self.setup_test_api_toggl_get_workspace_members()
140+
)
122141

123-
self.assertEqual(workspace['id'], expected_workspace['id'])
142+
self.assertEqual(workspace["id"], expected_workspace["id"])
124143

125144
received_data = response.json()
126145
expected_data = json.loads(expected_response_json_str)
127146

128147
self.assertEqual(len(received_data), len(expected_data))
129148

130149
def test_api_toggl_get_member_total_hours_range_response_ok_with_found_data(self):
131-
self.do_test_api_toggl_get_member_total_hours_range_response_ok('report_user_project_hours')
150+
self.do_test_api_toggl_get_member_total_hours_range_response_ok(
151+
"report_user_project_hours"
152+
)
132153

133154
def test_api_toggl_get_member_total_hours_range_response_ok_with_empty_data(self):
134-
self.do_test_api_toggl_get_member_total_hours_range_response_ok('report_user_project_hours_null')
155+
self.do_test_api_toggl_get_member_total_hours_range_response_ok(
156+
"report_user_project_hours_null"
157+
)
135158

136-
def do_test_api_toggl_get_member_total_hours_range_response_ok(self, datafile='report_user_project_hours'):
137-
workspace, expected_workspace = self.setup_test_api_toggl_get_workspace_by_name()
138-
self.assertEqual(workspace['id'], expected_workspace['id'])
159+
def do_test_api_toggl_get_member_total_hours_range_response_ok(
160+
self, datafile="report_user_project_hours"
161+
):
162+
workspace, expected_workspace = (
163+
self.setup_test_api_toggl_get_workspace_by_name()
164+
)
165+
self.assertEqual(workspace["id"], expected_workspace["id"])
139166

140-
workspace_id = workspace['id']
167+
workspace_id = workspace["id"]
141168
user_id = 222222
142-
start_date = '2014-03-03'
143-
end_date = '2014-03-07'
144-
user_agent = 'toggl-python-api-client-nosetests'
145-
146-
endpoint_url = self.base_api_report_url + "/summary?" + "workspace_id=" + str(workspace['id']) + "&since=" + start_date + "&until=" + end_date + "&user_agent=" + user_agent + "&user_ids=" + str(user_id) + "&grouping=users" + "&subgrouping=projects"
169+
start_date = "2014-03-03"
170+
end_date = "2014-03-07"
171+
user_agent = "toggl-python-api-client-nosetests"
172+
173+
endpoint_url = (
174+
self.base_api_report_url
175+
+ "/summary?"
176+
+ "workspace_id="
177+
+ str(workspace["id"])
178+
+ "&since="
179+
+ start_date
180+
+ "&until="
181+
+ end_date
182+
+ "&user_agent="
183+
+ user_agent
184+
+ "&user_ids="
185+
+ str(user_id)
186+
+ "&grouping=users"
187+
+ "&subgrouping=projects"
188+
)
147189

148190
expected_response_json_str = json.dumps(self.load_json_file(datafile))
149191
httpretty.register_uri(
150192
httpretty.GET,
151193
endpoint_url,
152194
body=expected_response_json_str,
153-
content_type=self.http_content_type)
195+
content_type=self.http_content_type,
196+
)
154197

155198
expected_response_json = json.loads(expected_response_json_str)
156-
if len(expected_response_json['data']) > 0:
157-
expected_total = expected_response_json['data'][0]['time']
199+
if len(expected_response_json["data"]) > 0:
200+
expected_total = expected_response_json["data"][0]["time"]
158201
else:
159202
expected_total = 0
160203

161204
total = self.api.get_user_hours_range(
162-
user_agent,
163-
workspace_id,
164-
user_id,
165-
start_date,
166-
end_date
205+
user_agent, workspace_id, user_id, start_date, end_date
167206
)
168207

169-
self.assertEqual(total, expected_total)
208+
self.assertEqual(total, expected_total)

toggl/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from toggl import api_client
1+
from toggl import api_client

0 commit comments

Comments
 (0)