diff --git a/graphql_query/types.py b/graphql_query/types.py index d01ec40..a9e5a59 100644 --- a/graphql_query/types.py +++ b/graphql_query/types.py @@ -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: @@ -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) diff --git a/tests/test_argument/test_argument.py b/tests/test_argument/test_argument.py index 661f589..d3b154d 100644 --- a/tests/test_argument/test_argument.py +++ b/tests/test_argument/test_argument.py @@ -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: []'