78 lines
2.3 KiB
Python
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)
|