diff --git a/ecs/crm-datafetch/src/parser/json_parse.py b/ecs/crm-datafetch/src/parser/json_parser.py similarity index 100% rename from ecs/crm-datafetch/src/parser/json_parse.py rename to ecs/crm-datafetch/src/parser/json_parser.py diff --git a/ecs/crm-datafetch/tests/parser/test_json_parser.py b/ecs/crm-datafetch/tests/parser/test_json_parser.py new file mode 100644 index 00000000..c343752b --- /dev/null +++ b/ecs/crm-datafetch/tests/parser/test_json_parser.py @@ -0,0 +1,77 @@ +import pytest +from src.parser.json_parser import JsonParser + + +class TestJsonParser(): + + def test_parse(self) -> dict: + """ + Cases: + - コメントアウトが記載されているJSONからコメントを取り除き、辞書型を返すこと + Arranges: + - JSON文字列を準備する + Expects: + - json.loadsされたファイルの内容が期待値と一致する + """ + + # Arranges + json_string = """{ + "aaaa": "aaaa", + # これはコメントです + "#これはコメントではありません": "#これはコメントではありません", + "bbb": false, + "hogehoge": [ + "ccc", + /これはコメントです + "/これはコメントではありません" + ] + }""" + + # Act + sut = JsonParser(json_string) + actual = sut.parse() + + # Expects + expected_value = { + "aaaa": "aaaa", + "#これはコメントではありません": "#これはコメントではありません", + "bbb": False, + "hogehoge": [ + "ccc", + "/これはコメントではありません" + ] + } + + assert actual == expected_value + + def test_raise_parse(self) -> dict: + """ + Cases: + - コメントアウト記号ではない文字をコメントアウトとしたときに、例外が発生すること + Arranges: + - JSON文字列を準備する + Expects: + - 例外が発生し期待値と一致する + """ + + # Arranges + json_string = """{ + "aaaa": "aaaa", + $ これはコメントです + "#これはコメントではありません": "#これはコメントではありません", + "bbb": false, + "hogehoge": [ + "ccc", + /これはコメントです + "/これはコメントではありません" + ] + }""" + + # Act + with pytest.raises(Exception) as e: + + sut = JsonParser(json_string) + sut.parse() + + # Expects + assert "Expecting property name enclosed in double quotes:" in str(e.value)