Skip to content

Commit 907afc4

Browse files
authored
Feature/Support for parameter structured value as list. (#34)
1 parent ecc8a27 commit 907afc4

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

connect/devops_testing/request.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,17 @@
6060

6161
def _param_members(
6262
param: dict,
63-
value: Optional[Union[str, dict]] = None,
63+
value: Optional[Union[str, dict, list]] = None,
6464
value_error: Optional[str] = None,
6565
) -> dict:
6666
if isinstance(value, dict):
6767
key = 'structured_value'
6868
new_value = param.get(key, {})
6969
new_value.update(value)
70+
elif isinstance(value, list):
71+
key = 'structured_value'
72+
new_value = param.get(key, [])
73+
new_value.extend(value)
7074
else:
7175
key = 'value'
7276
new_value = value
@@ -167,7 +171,7 @@ def with_params(self, params: List[dict]) -> Builder:
167171
def with_param(
168172
self,
169173
param_id: str,
170-
value: Optional[Union[str, dict]] = None,
174+
value: Optional[Union[str, dict, list]] = None,
171175
value_error: Optional[str] = None,
172176
value_type: str = 'text',
173177
) -> Builder:
@@ -293,7 +297,7 @@ def with_asset_params(self, params: List[dict]) -> Builder:
293297
def with_asset_param(
294298
self,
295299
param_id: str,
296-
value: Optional[Union[str, dict]] = None,
300+
value: Optional[Union[str, dict, list]] = None,
297301
value_error: Optional[str] = None,
298302
value_type: str = 'text',
299303
) -> Builder:
@@ -392,7 +396,7 @@ def with_asset_configuration_params(self, params: List[dict]) -> Builder:
392396
def with_asset_configuration_param(
393397
self,
394398
param_id: str,
395-
value: Optional[Union[str, dict]] = None,
399+
value: Optional[Union[str, dict, list]] = None,
396400
value_error: Optional[str] = None,
397401
value_type: str = 'text',
398402
) -> Builder:
@@ -500,7 +504,7 @@ def with_tier_configuration_params(self, params: List[dict]) -> Builder:
500504
def with_tier_configuration_param(
501505
self,
502506
param_id: str,
503-
value: Optional[Union[str, dict]] = None,
507+
value: Optional[Union[str, dict, list]] = None,
504508
value_error: Optional[str] = None,
505509
value_type: str = 'text',
506510
) -> Builder:
@@ -523,7 +527,7 @@ def with_tier_configuration_param(
523527
def with_tier_configuration_configuration_param(
524528
self,
525529
param_id: str,
526-
value: Optional[Union[str, dict]] = None,
530+
value: Optional[Union[str, dict, list]] = None,
527531
value_error: Optional[str] = None,
528532
value_type: str = 'text',
529533
) -> Builder:

tests/test_request.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ def test_request_builder_should_build_successfully_a_valid_asset_request():
8080
request.with_asset_configuration_params([
8181
{'param_id': 'AS_CFG_ID_001', 'value': 'Cfg value', 'value_error': 'Cfg error value'},
8282
{'param_id': 'AS_CFG_ID_001', 'value': 'Cfg value updated', 'value_error': 'Cfg error value updated'},
83+
{'param_id': 'IS_A_LIST_001', 'value': [1, 2]},
84+
{'param_id': 'IS_A_LIST_001', 'value': [3, 4]},
8385
])
8486

8587
assert request.is_asset_request()
@@ -131,6 +133,9 @@ def test_request_builder_should_build_successfully_a_valid_asset_request():
131133
assert request['asset']['configuration']['params'][0]['value'] == 'Cfg value updated'
132134
assert request['asset']['configuration']['params'][0]['value_error'] == 'Cfg error value updated'
133135

136+
assert request['asset']['configuration']['params'][1]['id'] == 'IS_A_LIST_001'
137+
assert request['asset']['configuration']['params'][1]['structured_value'] == [1, 2, 3, 4]
138+
134139

135140
def test_request_builder_should_build_successfully_a_valid_tier_config_request():
136141
request = Builder()

0 commit comments

Comments
 (0)