Skip to content

Commit b9e9ab1

Browse files
committed
init
1 parent 705f2b4 commit b9e9ab1

40 files changed

+9583
-133
lines changed

code_generator/client_gen.py

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,50 @@ def test_{{ method_name }}(self, mock_request):
128128
self.assertEqual(next_params["qty"], 5)
129129
except NoMoreRecords:
130130
pass
131-
131+
132+
@patch.object(
133+
{{ class_name }},
134+
"_request"
135+
)
136+
def test_{{ method_name }}_from_model(self, mock_request):
137+
# Mock the Response object
138+
mock_response = Mock(spec=Response)
139+
mock_response.json.return_value = {"some_key": "some_value"}
140+
mock_response.status_code = 200
141+
mock_response.headers = {"Content-Type": "application/json"}
142+
143+
# Create the ApiResponse object with the mocked Response
144+
mock_request.return_value = ApiResponse(
145+
response=mock_response, request_data={"qty": 10, "offset": 0}
146+
)
147+
148+
model_data = {{ details['model_name'] }}(
149+
{% for param_name, param_type in details['params'].items() %}
150+
{% if param_name in ['products', 'warehouse', 'taxes', 'associated_documents', 'payments', 'suppliers', 'warehouses'] %}
151+
{{ param_name }}=[],
152+
{% else %} {{ param_name }}={% if param_type == 'str' %}"{{ param_name }}"{% elif param_type.startswith('Optional[List') %}[]{% elif param_type == 'int' %}1{% elif param_type == 'float' %}1.0{% elif param_type == 'bool' %}True{% else %}"sample_value"{% endif %},
153+
{% endif %}
154+
{% endfor %}
155+
)
156+
with model_data.connect() as api:
157+
response = api.request()
158+
159+
# Assertions
160+
self.assertIsInstance(response, ApiResponse)
161+
self.assertEqual(response.payload, {"some_key": "some_value"})
162+
self.assertEqual(response.status_code, 200)
163+
self.assertEqual(response.headers["Content-Type"], "application/json")
164+
mock_request.assert_called_once()
165+
166+
# Test pagination functionality
167+
try:
168+
next_params = response.next(qty=5)
169+
self.assertEqual(next_params["offset"], 10)
170+
self.assertEqual(next_params["qty"], 5)
171+
except NoMoreRecords:
172+
pass
173+
174+
132175
{% endfor %}
133176
"""
134177
)

tests/bankaccounts_client_test.py

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,41 @@ def test_count_modified_since(self, mock_request):
5050
except NoMoreRecords:
5151
pass
5252

53+
@patch.object(BankaccountsClient, "_request")
54+
def test_count_modified_since_from_model(self, mock_request):
55+
# Mock the Response object
56+
mock_response = Mock(spec=Response)
57+
mock_response.json.return_value = {"some_key": "some_value"}
58+
mock_response.status_code = 200
59+
mock_response.headers = {"Content-Type": "application/json"}
60+
61+
# Create the ApiResponse object with the mocked Response
62+
mock_request.return_value = ApiResponse(
63+
response=mock_response, request_data={"qty": 10, "offset": 0}
64+
)
65+
66+
model_data = BankaccountsCountModifiedSinceModel(
67+
company_id="sample_value",
68+
lastmodified="lastmodified",
69+
)
70+
with model_data.connect() as api:
71+
response = api.request()
72+
73+
# Assertions
74+
self.assertIsInstance(response, ApiResponse)
75+
self.assertEqual(response.payload, {"some_key": "some_value"})
76+
self.assertEqual(response.status_code, 200)
77+
self.assertEqual(response.headers["Content-Type"], "application/json")
78+
mock_request.assert_called_once()
79+
80+
# Test pagination functionality
81+
try:
82+
next_params = response.next(qty=5)
83+
self.assertEqual(next_params["offset"], 10)
84+
self.assertEqual(next_params["qty"], 5)
85+
except NoMoreRecords:
86+
pass
87+
5388
@patch.object(BankaccountsClient, "_request")
5489
def test_delete(self, mock_request):
5590
# Mock the Response object
@@ -84,6 +119,41 @@ def test_delete(self, mock_request):
84119
except NoMoreRecords:
85120
pass
86121

122+
@patch.object(BankaccountsClient, "_request")
123+
def test_delete_from_model(self, mock_request):
124+
# Mock the Response object
125+
mock_response = Mock(spec=Response)
126+
mock_response.json.return_value = {"some_key": "some_value"}
127+
mock_response.status_code = 200
128+
mock_response.headers = {"Content-Type": "application/json"}
129+
130+
# Create the ApiResponse object with the mocked Response
131+
mock_request.return_value = ApiResponse(
132+
response=mock_response, request_data={"qty": 10, "offset": 0}
133+
)
134+
135+
model_data = BankaccountsDeleteModel(
136+
bank_account_id="sample_value",
137+
company_id="sample_value",
138+
)
139+
with model_data.connect() as api:
140+
response = api.request()
141+
142+
# Assertions
143+
self.assertIsInstance(response, ApiResponse)
144+
self.assertEqual(response.payload, {"some_key": "some_value"})
145+
self.assertEqual(response.status_code, 200)
146+
self.assertEqual(response.headers["Content-Type"], "application/json")
147+
mock_request.assert_called_once()
148+
149+
# Test pagination functionality
150+
try:
151+
next_params = response.next(qty=5)
152+
self.assertEqual(next_params["offset"], 10)
153+
self.assertEqual(next_params["qty"], 5)
154+
except NoMoreRecords:
155+
pass
156+
87157
@patch.object(BankaccountsClient, "_request")
88158
def test_get_all(self, mock_request):
89159
# Mock the Response object
@@ -117,6 +187,40 @@ def test_get_all(self, mock_request):
117187
except NoMoreRecords:
118188
pass
119189

190+
@patch.object(BankaccountsClient, "_request")
191+
def test_get_all_from_model(self, mock_request):
192+
# Mock the Response object
193+
mock_response = Mock(spec=Response)
194+
mock_response.json.return_value = {"some_key": "some_value"}
195+
mock_response.status_code = 200
196+
mock_response.headers = {"Content-Type": "application/json"}
197+
198+
# Create the ApiResponse object with the mocked Response
199+
mock_request.return_value = ApiResponse(
200+
response=mock_response, request_data={"qty": 10, "offset": 0}
201+
)
202+
203+
model_data = BankaccountsGetAllModel(
204+
company_id="sample_value",
205+
)
206+
with model_data.connect() as api:
207+
response = api.request()
208+
209+
# Assertions
210+
self.assertIsInstance(response, ApiResponse)
211+
self.assertEqual(response.payload, {"some_key": "some_value"})
212+
self.assertEqual(response.status_code, 200)
213+
self.assertEqual(response.headers["Content-Type"], "application/json")
214+
mock_request.assert_called_once()
215+
216+
# Test pagination functionality
217+
try:
218+
next_params = response.next(qty=5)
219+
self.assertEqual(next_params["offset"], 10)
220+
self.assertEqual(next_params["qty"], 5)
221+
except NoMoreRecords:
222+
pass
223+
120224
@patch.object(BankaccountsClient, "_request")
121225
def test_insert(self, mock_request):
122226
# Mock the Response object
@@ -153,6 +257,43 @@ def test_insert(self, mock_request):
153257
except NoMoreRecords:
154258
pass
155259

260+
@patch.object(BankaccountsClient, "_request")
261+
def test_insert_from_model(self, mock_request):
262+
# Mock the Response object
263+
mock_response = Mock(spec=Response)
264+
mock_response.json.return_value = {"some_key": "some_value"}
265+
mock_response.status_code = 200
266+
mock_response.headers = {"Content-Type": "application/json"}
267+
268+
# Create the ApiResponse object with the mocked Response
269+
mock_request.return_value = ApiResponse(
270+
response=mock_response, request_data={"qty": 10, "offset": 0}
271+
)
272+
273+
model_data = BankaccountsInsertModel(
274+
company_id="sample_value",
275+
name="name",
276+
order="order",
277+
value="value",
278+
)
279+
with model_data.connect() as api:
280+
response = api.request()
281+
282+
# Assertions
283+
self.assertIsInstance(response, ApiResponse)
284+
self.assertEqual(response.payload, {"some_key": "some_value"})
285+
self.assertEqual(response.status_code, 200)
286+
self.assertEqual(response.headers["Content-Type"], "application/json")
287+
mock_request.assert_called_once()
288+
289+
# Test pagination functionality
290+
try:
291+
next_params = response.next(qty=5)
292+
self.assertEqual(next_params["offset"], 10)
293+
self.assertEqual(next_params["qty"], 5)
294+
except NoMoreRecords:
295+
pass
296+
156297
@patch.object(BankaccountsClient, "_request")
157298
def test_update(self, mock_request):
158299
# Mock the Response object
@@ -189,3 +330,41 @@ def test_update(self, mock_request):
189330
self.assertEqual(next_params["qty"], 5)
190331
except NoMoreRecords:
191332
pass
333+
334+
@patch.object(BankaccountsClient, "_request")
335+
def test_update_from_model(self, mock_request):
336+
# Mock the Response object
337+
mock_response = Mock(spec=Response)
338+
mock_response.json.return_value = {"some_key": "some_value"}
339+
mock_response.status_code = 200
340+
mock_response.headers = {"Content-Type": "application/json"}
341+
342+
# Create the ApiResponse object with the mocked Response
343+
mock_request.return_value = ApiResponse(
344+
response=mock_response, request_data={"qty": 10, "offset": 0}
345+
)
346+
347+
model_data = BankaccountsUpdateModel(
348+
bank_account_id="sample_value",
349+
company_id="sample_value",
350+
name="name",
351+
order="order",
352+
value="value",
353+
)
354+
with model_data.connect() as api:
355+
response = api.request()
356+
357+
# Assertions
358+
self.assertIsInstance(response, ApiResponse)
359+
self.assertEqual(response.payload, {"some_key": "some_value"})
360+
self.assertEqual(response.status_code, 200)
361+
self.assertEqual(response.headers["Content-Type"], "application/json")
362+
mock_request.assert_called_once()
363+
364+
# Test pagination functionality
365+
try:
366+
next_params = response.next(qty=5)
367+
self.assertEqual(next_params["offset"], 10)
368+
self.assertEqual(next_params["qty"], 5)
369+
except NoMoreRecords:
370+
pass

0 commit comments

Comments
 (0)