Skip to content

Commit 1390333

Browse files
committed
refac
1 parent 9a9a428 commit 1390333

5 files changed

Lines changed: 33 additions & 6 deletions

File tree

gdocs/docs_helpers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1606,8 +1606,8 @@ def create_update_table_column_properties_request(
16061606
width: float = None,
16071607
width_type: str = None,
16081608
tab_id: Optional[str] = None,
1609-
) -> Dict[str, Any]:
1610-
"""Build an updateTableColumnProperties request."""
1609+
) -> Optional[Dict[str, Any]]:
1610+
"""Build an updateTableColumnProperties request. Returns None if no properties set."""
16111611
location: Dict[str, Any] = {"index": table_start_index}
16121612
if tab_id:
16131613
location["tabId"] = tab_id
@@ -1623,6 +1623,9 @@ def create_update_table_column_properties_request(
16231623
properties["widthType"] = width_type
16241624
fields.append("widthType")
16251625

1626+
if not fields:
1627+
return None
1628+
16261629
return {
16271630
"updateTableColumnProperties": {
16281631
"tableStartLocation": location,

gdocs/managers/batch_operation_manager.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,12 @@ def _build_operation_request(
801801
width_type=op.get("width_type"),
802802
tab_id=tab_id,
803803
)
804+
805+
if not request:
806+
raise ValueError(
807+
"update_table_column_properties requires at least one of: width, width_type"
808+
)
809+
804810
description = (
805811
f"update column properties for columns {op['column_indices']} "
806812
f"in table at {op['table_start_index']}"

gdocs/managers/validation_manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -822,7 +822,9 @@ def validate_table_cell_style_params(
822822
(padding_right, "padding_right"),
823823
):
824824
if padding_value is not None:
825-
if not isinstance(padding_value, (int, float)):
825+
if isinstance(padding_value, bool) or not isinstance(
826+
padding_value, (int, float)
827+
):
826828
return (
827829
False,
828830
f"{padding_name} must be a number, got {type(padding_value).__name__}",

tests/gdocs/test_table_cell_style.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ def test_zero_padding_is_valid(self, vm):
170170
is_valid, msg = vm.validate_table_cell_style_params(padding_top=0.0)
171171
assert is_valid, msg
172172

173+
def test_bool_padding_rejected(self, vm):
174+
is_valid, msg = vm.validate_table_cell_style_params(padding_top=True)
175+
assert not is_valid
176+
assert "must be a number" in msg
177+
173178
def test_no_style_params_rejected(self, vm):
174179
is_valid, msg = vm.validate_table_cell_style_params()
175180
assert not is_valid

tests/gdocs/test_table_column_properties.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ def test_no_tab_id_excluded(self):
7272
result = create_update_table_column_properties_request(
7373
table_start_index=10,
7474
column_indices=[0],
75+
width=60.0,
7576
)
7677
location = result["updateTableColumnProperties"]["tableStartLocation"]
7778
assert "tabId" not in location
@@ -89,13 +90,12 @@ def test_structure_keys(self):
8990
assert "tableColumnProperties" in inner
9091
assert "fields" in inner
9192

92-
def test_empty_fields_when_no_properties(self):
93+
def test_returns_none_when_no_properties(self):
9394
result = create_update_table_column_properties_request(
9495
table_start_index=10,
9596
column_indices=[0],
9697
)
97-
inner = result["updateTableColumnProperties"]
98-
assert inner["fields"] == ""
98+
assert result is None
9999

100100

101101
class TestValidateOperation:
@@ -173,6 +173,17 @@ async def test_end_to_end_update_table_column_properties(self, manager):
173173
assert success
174174
assert meta["operations_count"] == 1
175175

176+
def test_no_properties_raises_value_error(self, manager):
177+
with pytest.raises(ValueError, match="at least one of"):
178+
manager._build_operation_request(
179+
{
180+
"type": "update_table_column_properties",
181+
"table_start_index": 10,
182+
"column_indices": [0],
183+
},
184+
"update_table_column_properties",
185+
)
186+
176187
def test_supported_operations_include_update_table_column_properties(self, manager):
177188
supported = manager.get_supported_operations()["supported_operations"]
178189
assert "update_table_column_properties" in supported

0 commit comments

Comments
 (0)