1111from unittest .mock import AsyncMock , MagicMock , patch # noqa: E402
1212from autohive_integrations_sdk .integration import ResultType # noqa: E402
1313
14- _spec = importlib .util .spec_from_file_location ("google_sheets_data_mod" , os .path .join (_parent , "google_sheets.py" ))
14+ _spec = importlib .util .spec_from_file_location (
15+ "google_sheets_data_mod" , os .path .join (_parent , "google_sheets.py" )
16+ )
1517_mod = importlib .util .module_from_spec (_spec )
1618sys .modules ["google_sheets_data_mod" ] = _mod
1719_spec .loader .exec_module (_mod )
@@ -52,7 +54,9 @@ async def test_happy_path_returns_values(self, mock_build, mock_context):
5254 }
5355
5456 result = await google_sheets .execute_action (
55- "sheets_read_range" , {"spreadsheet_id" : "sid" , "range" : "Sheet1!A1:B2" }, mock_context
57+ "sheets_read_range" ,
58+ {"spreadsheet_id" : "sid" , "range" : "Sheet1!A1:B2" },
59+ mock_context ,
5660 )
5761
5862 assert result .result .data ["range" ] == "Sheet1!A1:B2"
@@ -62,10 +66,14 @@ async def test_happy_path_returns_values(self, mock_build, mock_context):
6266 @patch ("google_sheets_data_mod.build" )
6367 async def test_empty_range_returns_empty_values (self , mock_build , mock_context ):
6468 service = make_sheets_service (mock_build )
65- service .spreadsheets ().values ().get ().execute .return_value = {"range" : "Sheet1!A1" }
69+ service .spreadsheets ().values ().get ().execute .return_value = {
70+ "range" : "Sheet1!A1"
71+ }
6672
6773 result = await google_sheets .execute_action (
68- "sheets_read_range" , {"spreadsheet_id" : "sid" , "range" : "Sheet1!A1" }, mock_context
74+ "sheets_read_range" ,
75+ {"spreadsheet_id" : "sid" , "range" : "Sheet1!A1" },
76+ mock_context ,
6977 )
7078
7179 assert result .result .data ["values" ] == []
@@ -74,7 +82,10 @@ async def test_empty_range_returns_empty_values(self, mock_build, mock_context):
7482 @patch ("google_sheets_data_mod.build" )
7583 async def test_value_render_option_passed (self , mock_build , mock_context ):
7684 service = make_sheets_service (mock_build )
77- service .spreadsheets ().values ().get ().execute .return_value = {"range" : "A1" , "values" : []}
85+ service .spreadsheets ().values ().get ().execute .return_value = {
86+ "range" : "A1" ,
87+ "values" : [],
88+ }
7889
7990 await google_sheets .execute_action (
8091 "sheets_read_range" ,
@@ -89,11 +100,18 @@ async def test_value_render_option_passed(self, mock_build, mock_context):
89100 @patch ("google_sheets_data_mod.build" )
90101 async def test_datetime_render_option_passed (self , mock_build , mock_context ):
91102 service = make_sheets_service (mock_build )
92- service .spreadsheets ().values ().get ().execute .return_value = {"range" : "A1" , "values" : []}
103+ service .spreadsheets ().values ().get ().execute .return_value = {
104+ "range" : "A1" ,
105+ "values" : [],
106+ }
93107
94108 await google_sheets .execute_action (
95109 "sheets_read_range" ,
96- {"spreadsheet_id" : "sid" , "range" : "A1" , "dateTimeRenderOption" : "FORMATTED_STRING" },
110+ {
111+ "spreadsheet_id" : "sid" ,
112+ "range" : "A1" ,
113+ "dateTimeRenderOption" : "FORMATTED_STRING" ,
114+ },
97115 mock_context ,
98116 )
99117
@@ -109,18 +127,24 @@ async def test_http_error_returns_action_error(self, mock_build, mock_context):
109127 mock_resp = MagicMock ()
110128 mock_resp .status = 400
111129 mock_resp .reason = "Bad Request"
112- service .spreadsheets ().values ().get ().execute .side_effect = HttpError (mock_resp , b"Bad Request" )
130+ service .spreadsheets ().values ().get ().execute .side_effect = HttpError (
131+ mock_resp , b"Bad Request"
132+ )
113133
114134 result = await google_sheets .execute_action (
115- "sheets_read_range" , {"spreadsheet_id" : "sid" , "range" : "Bad!Range" }, mock_context
135+ "sheets_read_range" ,
136+ {"spreadsheet_id" : "sid" , "range" : "Bad!Range" },
137+ mock_context ,
116138 )
117139
118140 assert result .type == ResultType .ACTION_ERROR
119141 assert "Google Sheets API error" in result .result .message
120142
121143 @pytest .mark .asyncio
122144 @patch ("google_sheets_data_mod.build" )
123- async def test_generic_exception_returns_action_error (self , mock_build , mock_context ):
145+ async def test_generic_exception_returns_action_error (
146+ self , mock_build , mock_context
147+ ):
124148 service = make_sheets_service (mock_build )
125149 service .spreadsheets ().values ().get ().execute .side_effect = Exception ("Timeout" )
126150
@@ -149,7 +173,11 @@ async def test_happy_path_returns_update_info(self, mock_build, mock_context):
149173
150174 result = await google_sheets .execute_action (
151175 "sheets_write_range" ,
152- {"spreadsheet_id" : "sid" , "range" : "Sheet1!A1:B2" , "values" : [["Name" , "Age" ], ["Alice" , "30" ]]},
176+ {
177+ "spreadsheet_id" : "sid" ,
178+ "range" : "Sheet1!A1:B2" ,
179+ "values" : [["Name" , "Age" ], ["Alice" , "30" ]],
180+ },
153181 mock_context ,
154182 )
155183
@@ -159,13 +187,20 @@ async def test_happy_path_returns_update_info(self, mock_build, mock_context):
159187
160188 @pytest .mark .asyncio
161189 @patch ("google_sheets_data_mod.build" )
162- async def test_dry_run_returns_estimate_without_write (self , mock_build , mock_context ):
190+ async def test_dry_run_returns_estimate_without_write (
191+ self , mock_build , mock_context
192+ ):
163193 service = make_sheets_service (mock_build )
164194 service .spreadsheets ().get ().execute .return_value = {"spreadsheetId" : "sid" }
165195
166196 result = await google_sheets .execute_action (
167197 "sheets_write_range" ,
168- {"spreadsheet_id" : "sid" , "range" : "A1" , "values" : [["a" , "b" ], ["c" , "d" ]], "dry_run" : True },
198+ {
199+ "spreadsheet_id" : "sid" ,
200+ "range" : "A1" ,
201+ "values" : [["a" , "b" ], ["c" , "d" ]],
202+ "dry_run" : True ,
203+ },
169204 mock_context ,
170205 )
171206
@@ -200,7 +235,9 @@ async def test_http_error_returns_action_error(self, mock_build, mock_context):
200235 mock_resp = MagicMock ()
201236 mock_resp .status = 403
202237 mock_resp .reason = "Forbidden"
203- service .spreadsheets ().values ().update ().execute .side_effect = HttpError (mock_resp , b"Forbidden" )
238+ service .spreadsheets ().values ().update ().execute .side_effect = HttpError (
239+ mock_resp , b"Forbidden"
240+ )
204241
205242 result = await google_sheets .execute_action (
206243 "sheets_write_range" ,
@@ -213,9 +250,13 @@ async def test_http_error_returns_action_error(self, mock_build, mock_context):
213250
214251 @pytest .mark .asyncio
215252 @patch ("google_sheets_data_mod.build" )
216- async def test_generic_exception_returns_action_error (self , mock_build , mock_context ):
253+ async def test_generic_exception_returns_action_error (
254+ self , mock_build , mock_context
255+ ):
217256 service = make_sheets_service (mock_build )
218- service .spreadsheets ().values ().update ().execute .side_effect = Exception ("Write failed" )
257+ service .spreadsheets ().values ().update ().execute .side_effect = Exception (
258+ "Write failed"
259+ )
219260
220261 result = await google_sheets .execute_action (
221262 "sheets_write_range" ,
@@ -241,7 +282,11 @@ async def test_happy_path_returns_updates(self, mock_build, mock_context):
241282
242283 result = await google_sheets .execute_action (
243284 "sheets_append_rows" ,
244- {"spreadsheet_id" : "sid" , "range" : "Sheet1" , "rows" : [["a" , "b" ], ["c" , "d" ], ["e" , "f" ]]},
285+ {
286+ "spreadsheet_id" : "sid" ,
287+ "range" : "Sheet1" ,
288+ "rows" : [["a" , "b" ], ["c" , "d" ], ["e" , "f" ]],
289+ },
245290 mock_context ,
246291 )
247292
@@ -286,7 +331,9 @@ async def test_http_error_returns_action_error(self, mock_build, mock_context):
286331 mock_resp = MagicMock ()
287332 mock_resp .status = 429
288333 mock_resp .reason = "Too Many Requests"
289- service .spreadsheets ().values ().append ().execute .side_effect = HttpError (mock_resp , b"Rate limited" )
334+ service .spreadsheets ().values ().append ().execute .side_effect = HttpError (
335+ mock_resp , b"Rate limited"
336+ )
290337
291338 result = await google_sheets .execute_action (
292339 "sheets_append_rows" ,
@@ -299,9 +346,13 @@ async def test_http_error_returns_action_error(self, mock_build, mock_context):
299346
300347 @pytest .mark .asyncio
301348 @patch ("google_sheets_data_mod.build" )
302- async def test_generic_exception_returns_action_error (self , mock_build , mock_context ):
349+ async def test_generic_exception_returns_action_error (
350+ self , mock_build , mock_context
351+ ):
303352 service = make_sheets_service (mock_build )
304- service .spreadsheets ().values ().append ().execute .side_effect = Exception ("Append failed" )
353+ service .spreadsheets ().values ().append ().execute .side_effect = Exception (
354+ "Append failed"
355+ )
305356
306357 result = await google_sheets .execute_action (
307358 "sheets_append_rows" ,
0 commit comments