import pytest from src.util.dict_checker import DictChecker class TestDictChecker: @pytest.mark.parametrize('test_data,expect', [ ('', True), (None, True), ('test_data', False), ]) def test_is_empty(self, test_data, expect): """ Cases: 1. 辞書型データの対象のキーの値が''(空文字)の場合、Trueが返る 2. 辞書型データの対象のキーの値がNoneの場合、Trueが返る 3. 辞書型データの対象のキーの値が存在する場合、Falseが返る Arranges: - 辞書型のオブジェクト情報を準備する - 辞書型チェックインスタンスを生成する Expects: - 戻り値が期待値と一致する """ # Arranges object_dict = { "test_key": test_data } sut = DictChecker(object_dict) # Act actual = sut.is_empty("test_key") # Expects assert actual is expect @pytest.mark.parametrize('test_data,expect', [ ([''], False), ([None], False), (['test_value'], False), ([], True), ('test_value', False) ]) def test_is_list_empty(self, test_data, expect): """ Cases: 1. 辞書型のデータの対象のキーのリストの値が''(空文字)の場合、Falseが返る 2. 辞書型データの対象のキーのリストの値がNoneの場合、Falseが返る 3. 辞書型データの対象のキーのリストの値が存在する場合、Falseが返る 4. 辞書型データの対象のキーのリストの値が[](空)の場合、Trueが返る 5. 辞書型データの対象のキーの値に文字列が存在する場合、Falseが返る Arranges: - 辞書型のオブジェクト情報を準備する - 辞書型チェックインスタンスを生成する Expects: - 戻り値が期待値と一致する """ # Arranges object_dict = { "test_key": test_data } sut = DictChecker(object_dict) # Act actual = sut.is_list_empty("test_key") # Expects assert actual is expect @pytest.mark.parametrize('test_data,expect', [ ({"test_key": "test_value"}, True), ({}, False), ({"test_key": ""}, False), ]) def test_check_key_exist(self, test_data, expect) -> bool: """ Cases: 1. 辞書型データの対象のキーが存在する、かつ値が存在する場合、Trueが返る 2. 辞書型データの対象のキーが存在しない場合、Falseが返る 3. 辞書型データの対象のキーの値が存在しない場合、Falseが返る Arranges: - 辞書型のオブジェクト情報を準備する - 辞書型チェックインスタンスを生成する Expects: - 戻り値が期待値と一致する """ # Arranges object_dict = test_data sut = DictChecker(object_dict) # Act actual = sut.check_key_exist("test_key") # Expects assert actual is expect @pytest.mark.parametrize('test_data,test_type,expect', [ ({"test_key": "test_value"}, str, True), ({"test_key": 1}, str, False) ]) def test_check_data_type(self, test_data, test_type, expect) -> bool: """ Cases: 1. 辞書型データの対象のキーの値の型が指定した型と一致した場合、Trueが返る 2. 辞書型データの対象のキーの値の型が指定した型と一致しない場合、Falseが返る Arranges: - 辞書型のオブジェクト情報を準備する - 辞書型チェックインスタンスを生成する Expects: - 戻り値が期待値と一致する """ # Arranges object_dict = test_data sut = DictChecker(object_dict) # Act actual = sut.check_data_type("test_key", test_type) # Expects assert actual is expect @pytest.mark.parametrize('test_data,expect', [ ({"test_key": "2022-08-01T10:00:00.000Z"}, True), ({"test_key": "test_value"}, False) ]) def test_check_match_pattern(self, test_data, expect) -> bool: """ Cases: 1. 辞書型データの対象のキーの値の型が指定した正規表現と一致した場合、Trueが返る 2. 辞書型データの対象のキーの値の型が指定した正規表現と一致しない場合、Falseが返る Arranges: - 辞書型のオブジェクト情報を準備する - 辞書型チェックインスタンスを生成する - 正規表現パターンの生成 Expects: - 戻り値が期待値と一致する """ # Arranges object_dict = test_data 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 expect 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」キーの値は「」でなければなりません" 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」キーのリストの値は必須です'