Skip to content

Commit

Permalink
support for simple str list ['123', '456'] and keep backward compatible
Browse files Browse the repository at this point in the history
  • Loading branch information
alon-p committed Jun 30, 2024
1 parent 7a93a51 commit 94fd258
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 3 deletions.
17 changes: 15 additions & 2 deletions graphql_query/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,20 @@ def _render_for_float(name: str, value: float) -> str:

@staticmethod
def _render_for_list_str(name: str, value: List[str]) -> str:
return _template_key_values.render(name=name, values=value)
clean_list = []
for item in value:
result = item.replace('"', '').split(',')
if type(result) is list:
trimmed_result = [i.strip() for i in result]
clean_list.extend(trimmed_result)
else:
clean_list.append(result)

return _template_key_values.render(name=name, values=[f"\"{v.replace('"', '')}\"" for v in clean_list])

@staticmethod
def _render_for_list_int(name: str, value: List[str]) -> str:
return _template_key_values.render(name=name, values=[str(v) for v in value])

@staticmethod
def _render_for_list_bool(name: str, value: List[bool]) -> str:
Expand Down Expand Up @@ -277,7 +290,7 @@ def render(self) -> str:
return self._render_for_list_float(self.name, self.value)

if self._check_is_list_of_int(self.value):
return self._render_for_list_str(self.name, [str(v) for v in self.value])
return self._render_for_list_int(self.name, self.value)

if self._check_is_list_of_arguments(self.value):
return self._render_for_list_argument(self.name, self.value)
Expand Down
13 changes: 12 additions & 1 deletion tests/test_argument/test_argument.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,23 @@ def test_value_is_float():
assert Argument(name="some", value=0.2).render() == 'some: 0.2'


def test_value_is_list_str():
def test_value_is_list_str_with_backward_compatible_workarounds():
assert Argument(name="someListArgument", value=['"123"']).render() == 'someListArgument: ["123"]'
assert Argument(name="someListArgument", value=[]).render() == 'someListArgument: []'
assert Argument(name="someListArgument", value=['"123", "456"']).render() == 'someListArgument: ["123", "456"]'


def test_value_is_list_str():
assert Argument(name="someListArgument", value=["123", "456"]).render() == 'someListArgument: ["123", "456"]'
assert Argument(name="someListArgument",
value=["hello", "world"]).render() == 'someListArgument: ["hello", "world"]'


def test_value_is_list_str_with_apostrophe():
assert Argument(name="someListArgument",
value=["you'r", "isn't"]).render() == 'someListArgument: ["you\'r", "isn\'t"]'


def test_value_is_list_int():
assert Argument(name="someListArgument", value=[123]).render() == 'someListArgument: [123]'
assert Argument(name="someListArgument", value=[]).render() == 'someListArgument: []'
Expand Down

0 comments on commit 94fd258

Please sign in to comment.