@@ -49,15 +49,47 @@ def get_repo(self, user, repo):
4949 def get_repos (self , user ):
5050 pass
5151
52+ @uplink .returns .from_json (key = ("data" , 0 , "size" ))
53+ @uplink .get ("/users/{user}/repos" )
54+ def get_first_repo_size (self , user ):
55+ pass
56+
57+ @uplink .returns .from_json (key = ("data" , 0 , "stars" ), type = int )
58+ @uplink .get ("/users/{user}/repos" )
59+ def get_first_repo_stars (self , user ):
60+ pass
61+
5262 @uplink .json
5363 @uplink .post ("/users/{user}/repos" , args = {"repo" : uplink .Body (Repo )})
5464 def create_repo (self , user , repo ):
5565 pass
5666
67+ @uplink .returns (object )
68+ @uplink .get ("/users" )
69+ def list_users (self ):
70+ pass
71+
5772
5873# Tests
5974
6075
76+ def test_returns_response_when_type_has_no_converter (
77+ mock_client , mock_response
78+ ):
79+ # Setup
80+ mock_response .with_json ({"id" : 123 , "name" : "prkumar" })
81+ mock_client .with_response (mock_response )
82+ github = GitHub (
83+ base_url = BASE_URL , client = mock_client , converters = user_reader
84+ )
85+
86+ # Run
87+ response = github .list_users ()
88+
89+ # Verify
90+ assert response == mock_response
91+
92+
6193def test_returns_with_type (mock_client , mock_response ):
6294 # Setup
6395 mock_response .with_json ({"id" : 123 , "name" : "prkumar" })
@@ -114,6 +146,48 @@ def test_returns_json_with_list(mock_client, mock_response):
114146 ] == repo
115147
116148
149+ def test_returns_json_by_key (mock_client , mock_response ):
150+ # Setup
151+ mock_response .with_json (
152+ {
153+ "data" : [
154+ {"owner" : "prkumar" , "name" : "uplink" , "size" : 300 },
155+ {"owner" : "prkumar" , "name" : "uplink-protobuf" , "size" : 400 },
156+ ],
157+ "errors" : [],
158+ }
159+ )
160+ mock_client .with_response (mock_response )
161+ github = GitHub (base_url = BASE_URL , client = mock_client )
162+
163+ # Run
164+ size = github .get_first_repo_size ("prkumar" )
165+
166+ # Verify
167+ assert size == 300
168+
169+
170+ def test_returns_json_with_key_and_type (mock_client , mock_response ):
171+ # Setup
172+ mock_response .with_json (
173+ {
174+ "data" : [
175+ {"owner" : "prkumar" , "name" : "uplink" , "stars" : "300" },
176+ {"owner" : "prkumar" , "name" : "uplink-protobuf" , "stars" : "400" },
177+ ],
178+ "errors" : [],
179+ }
180+ )
181+ mock_client .with_response (mock_response )
182+ github = GitHub (base_url = BASE_URL , client = mock_client )
183+
184+ # Run
185+ stars = github .get_first_repo_stars ("prkumar" )
186+
187+ # Verify
188+ assert stars == 300
189+
190+
117191def test_post_json (mock_client ):
118192 # Setup
119193 github = GitHub (
0 commit comments