2022-08-16 10:09:25 +09:00

78 lines
2.3 KiB
Python

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)