feat: dict_checkerのテストコード追加
This commit is contained in:
parent
e534090034
commit
e10201c1f2
580
ecs/crm-datafetch/tests/util/test_dict_checker.py
Normal file
580
ecs/crm-datafetch/tests/util/test_dict_checker.py
Normal file
@ -0,0 +1,580 @@
|
||||
import pytest
|
||||
from src.util.dict_checker import DictChecker
|
||||
|
||||
|
||||
class TestDictChecker:
|
||||
|
||||
def test_is_empty_no_value(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値が''(空文字)の場合、Trueが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": ""
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is True
|
||||
|
||||
def test_is_empty_none(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値がNoneの場合、Trueが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": None
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is True
|
||||
|
||||
def test_is_empty_exist_value(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値が存在する場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_is_list_empty_no_value(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型のデータの対象のキーのリストの値が''(空文字)の場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": [
|
||||
""
|
||||
]
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_is_list_empty_none(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーのリストの値がNoneの場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": [
|
||||
None
|
||||
]
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_is_list_empty_blank(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーのリストの値が[](空)の場合、Trueが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": []
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is True
|
||||
|
||||
def test_is_list_empty_exist_string(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値に文字列が存在する場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_is_list_empty_exist_value(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーのリストの値が存在する場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": [
|
||||
"test_value"
|
||||
]
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.is_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_check_key_exist(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーが存在する、かつ値が存在する場合、Trueが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.check_key_exist("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is True
|
||||
|
||||
def test_check_key_exist_no_key(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーが存在しない場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.check_key_exist("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_check_key_exist_no_value(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値が存在しない場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": ""
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.check_key_exist("test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_check_data_type(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した型と一致した場合、Trueが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.check_data_type("test_key", str)
|
||||
|
||||
# Expects
|
||||
assert actual is True
|
||||
|
||||
def test_check_data_type_other_type(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した型と一致しない場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": 1
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
actual = sut.check_data_type("test_key", str)
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_check_match_pattern(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した正規表現と一致した場合、Trueが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
- 正規表現パターンの生成
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "2022-08-01T10:00:00.000Z"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
pattern = r'[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.000Z'
|
||||
|
||||
# Act
|
||||
actual = sut.check_match_pattern(pattern, "test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is True
|
||||
|
||||
def test_check_match_pattern_not_match(self) -> bool:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した正規表現と一致しない場合、Falseが返る
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
- 正規表現パターンの生成
|
||||
Expects:
|
||||
- 戻り値が期待値と一致する
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
pattern = r'[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.000Z'
|
||||
|
||||
# Act
|
||||
actual = sut.check_match_pattern(pattern, "test_key")
|
||||
|
||||
# Expects
|
||||
assert actual is False
|
||||
|
||||
def test_assert_key_exist(self) -> None:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値が存在する場合、例外が発生しないこと
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 例外が発生しないこと
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
sut.assert_key_exist("test_key")
|
||||
|
||||
# Expects
|
||||
pass
|
||||
|
||||
def test_raise_assert_key_exist(self) -> None:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値が存在しない場合、例外が発生すること
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 発生した例外が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": ""
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
with pytest.raises(Exception) as e:
|
||||
sut.assert_key_exist("test_key")
|
||||
|
||||
# Expects
|
||||
assert str(e.value) == '「test_key」キーは必須です'
|
||||
|
||||
def test_assert_data_type(self) -> None:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した型と一致した場合、例外が発生しないこと
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 例外が発生しないこと
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
sut.assert_data_type("test_key", str)
|
||||
|
||||
# Expects
|
||||
pass
|
||||
|
||||
def test_raise_assert_data_type(self) -> None:
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した型と一致しない場合、例外が発生すること
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 発生した例外が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": 1
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
with pytest.raises(Exception) as e:
|
||||
sut.assert_data_type("test_key", str)
|
||||
|
||||
# Expects
|
||||
assert str(e.value) == "「test_key」キーの値は「<class 'str'>」でなければなりません"
|
||||
|
||||
def test_assert_match_pattern(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した正規表現と一致した場合、例外が発生しないこと
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
- 正規表現パターンの生成
|
||||
Expects:
|
||||
- 例外が発生しないこと
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "2022-08-01T10:00:00.000Z"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
pattern = r'[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.000Z'
|
||||
|
||||
# Act
|
||||
sut.assert_match_pattern("test_key", pattern, 'YYYY-MM-DDTHH:MM:SS.000Z')
|
||||
|
||||
# Expects
|
||||
pass
|
||||
|
||||
def test_raise_assert_match_pattern(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーの値の型が指定した正規表現と一致しない場合、例外が発生すること
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
- 正規表現パターンの生成
|
||||
Expects:
|
||||
- 発生した例外が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": "test_value"
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
pattern = r'[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.000Z'
|
||||
|
||||
# Act
|
||||
with pytest.raises(Exception) as e:
|
||||
sut.assert_match_pattern("test_key", pattern, 'YYYY-MM-DDTHH:MM:SS.000Z')
|
||||
|
||||
assert str(e.value) == '「test_key」キーの値の正規表現チェックに失敗しました 「YYYY-MM-DDTHH:MM:SS.000Z」形式である必要があります'
|
||||
|
||||
def test_assert_list_empty(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーのリストの値が存在する場合、例外が発生しないこと
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 例外が発生しないこと
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": [
|
||||
"test_value"
|
||||
]
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
sut.assert_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
pass
|
||||
|
||||
def test_raise_assert_list_empty(self):
|
||||
"""
|
||||
Cases:
|
||||
辞書型データの対象のキーのリストの値が存在しない場合、例外が発生すること
|
||||
Arranges:
|
||||
- 辞書型のオブジェクト情報を準備する
|
||||
- 辞書型チェックインスタンスを生成する
|
||||
Expects:
|
||||
- 発生した例外が期待値と一致すること
|
||||
"""
|
||||
|
||||
# Arranges
|
||||
object_dict = {
|
||||
"test_key": [
|
||||
]
|
||||
}
|
||||
|
||||
sut = DictChecker(object_dict)
|
||||
|
||||
# Act
|
||||
with pytest.raises(Exception) as e:
|
||||
sut.assert_list_empty("test_key")
|
||||
|
||||
# Expects
|
||||
assert str(e.value) == '「test_key」キーのリストの値は必須です'
|
||||
Loading…
x
Reference in New Issue
Block a user