feat: 取得データ件数が0件の場合にCSV出力しないように修正
This commit is contained in:
parent
c6f636d324
commit
81fc1ebeee
@ -139,6 +139,12 @@ def _fetch_crm_data_per_object(object_info: dict, execute_datetime: ExecuteDateT
|
||||
|
||||
crm_data_response = fetch_crm_data_process(target_object, last_fetch_datetime)
|
||||
|
||||
# 取得件数が0件の場合、次のオブジェクトの処理に移行する
|
||||
if len(crm_data_response) == 0:
|
||||
logger.info(
|
||||
f'I-CTRL-22 [{target_object_name}]のレコード件数が0件のため、ファイルアップロードをスキップします')
|
||||
return
|
||||
|
||||
# 7. 出力ファイル名をログ出力する
|
||||
logger.info(
|
||||
f'I-CTRL-10 [{target_object_name}] の出力ファイル名は [{target_object.upload_file_name}] となります')
|
||||
|
||||
@ -122,7 +122,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[{'Name': 'Test'}])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -241,7 +241,7 @@ class TestController:
|
||||
assert generate_log_message_tuple(log_message='I-CTRL-21 処理対象のデータが存在しませんでした') in caplog.record_tuples, '処理対象が存在しない旨を示すログメッセージが出力されていること'
|
||||
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||
|
||||
def test_do_not_call_upload_csv_process(self, caplog, run_control_process):
|
||||
def test_do_not_call_upload_csv_process_cause_is_skip_true(self, caplog, run_control_process):
|
||||
"""
|
||||
Cases:
|
||||
オブジェクト情報.is_skipがTrueの場合、CSVアップロード処理が実行されないこと
|
||||
@ -291,10 +291,10 @@ class TestController:
|
||||
assert generate_log_message_tuple(log_message='I-CTRL-07 [Account]のデータ取得処理をスキップします') in caplog.record_tuples
|
||||
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||
|
||||
def test_do_not_call_upload_csv_process_of_part(self, caplog, run_control_process):
|
||||
def test_do_not_call_upload_csv_process_cause_is_skip_true_in_loop(self, caplog, run_control_process):
|
||||
"""
|
||||
Cases:
|
||||
オブジェクト情報.is_skipがTrueのものが含まれる場合、CSVアップロード処理が実行されないこと
|
||||
オブジェクト情報.is_skipがTrueのものが含まれる場合、対象オブジェクトのCSVアップロード処理が実行されないこと
|
||||
Arranges:
|
||||
- データ取得準備処理で返される取得対象オブジェクト情報のうち、2つ目をis_skipをTrueにする
|
||||
- 各種プロセスメソッドと内部で使用している値オブジェクトをモック化する
|
||||
@ -331,7 +331,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(FetchTargetObjects(mock_check_object_infos), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock()
|
||||
self.mock_fetch_crm_data_process = MagicMock()
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{"Name": "Test"}], [{"Name": "Test"}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -365,6 +365,108 @@ class TestController:
|
||||
) in caplog.record_tuples, 'オブジェクト情報.is_skipがFalseのものはCSVアップロード処理のログメッセージが出力されていること'
|
||||
assert generate_log_message_tuple(log_message=f'I-CTRL-20 CRMデータ取得処理を終了します') in caplog.record_tuples
|
||||
|
||||
def test_do_not_call_upload_csv_process_cause_crm_data_empty(self, caplog, run_control_process):
|
||||
"""
|
||||
Cases:
|
||||
CRMデータ取得処理で取得できた件数が0件の場合、CSVアップロード処理が実行されないこと
|
||||
Arranges:
|
||||
- CRMデータ取得処理で返されるオブジェクトを空のリストにする
|
||||
- 各種プロセスメソッドと内部で使用している値オブジェクトをモック化する
|
||||
Expects:
|
||||
- CRM電文データバックアップ処理以降のプロセスが実行されないこと
|
||||
- 処理をスキップする旨を示すログメッセージが出力されていること
|
||||
"""
|
||||
mock_check_object_infos = {
|
||||
'objects': [
|
||||
{
|
||||
'object_name': 'Account',
|
||||
'columns': [],
|
||||
'is_skip': False
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
FetchTargetObjects(mock_check_object_infos)
|
||||
mock_return_values = [
|
||||
TargetObject(mock_check_object_infos['objects'][0], COMMON_EXECUTE_DATETIME)
|
||||
]
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(FetchTargetObjects(mock_check_object_infos), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock()
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
self.mock_copy_crm_csv_data_process = MagicMock()
|
||||
self.mock_upload_last_fetch_datetime_process = MagicMock()
|
||||
self.mock_upload_result_data_process = MagicMock()
|
||||
|
||||
run_control_process()
|
||||
# 実行回数の確認
|
||||
assert self.mock_prepare_data_fetch_process.called is True
|
||||
assert self.mock_prepare_data_fetch_process.call_count == 1
|
||||
assert self.mock_check_object_info_process.call_count == 1
|
||||
assert self.mock_set_datetime_period_process.call_count == 1
|
||||
assert self.mock_fetch_crm_data_process.call_count == 1
|
||||
# CRM電文データバックアップ処理以降のプロセスが実行されないこと
|
||||
assert self.mock_backup_crm_data_process.call_count == 0
|
||||
assert self.mock_convert_crm_csv_data_process.call_count == 0
|
||||
assert self.mock_backup_crm_csv_data_process.call_count == 0
|
||||
assert self.mock_copy_crm_csv_data_process.call_count == 0
|
||||
assert self.mock_upload_last_fetch_datetime_process.call_count == 0
|
||||
assert self.mock_upload_result_data_process.called is True
|
||||
assert self.mock_upload_result_data_process.call_count == 1
|
||||
|
||||
# ログ出力の確認
|
||||
assert generate_log_message_tuple(
|
||||
log_message='I-CTRL-22 [Account]のレコード件数が0件のため、ファイルアップロードをスキップします') in caplog.record_tuples, '処理をスキップする旨を示すログメッセージが出力されていること'
|
||||
|
||||
def test_do_not_call_upload_csv_process_cause_crm_data_empty_in_loop(self, caplog, run_control_process):
|
||||
"""
|
||||
Cases:
|
||||
CRMデータ取得処理で取得できた件数が0件のものが含まれる場合、対象オブジェクトのCSVアップロード処理が実行されないこと
|
||||
Arranges:
|
||||
- CRMデータ取得処理で返されるオブジェクトのうち、2つ目を空のリストにする
|
||||
- 各種プロセスメソッドと内部で使用している値オブジェクトをモック化する
|
||||
Expects:
|
||||
- CRMデータ取得処理が2回実行されること
|
||||
- 処理をスキップする旨を示すログメッセージが出力されていること
|
||||
- 取得オブジェクトが1件以上取れているものはCSVアップロード処理のログメッセージが出力されていること
|
||||
"""
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=[COMMON_TARGET_OBJECTS_1, COMMON_TARGET_OBJECTS_2, COMMON_TARGET_OBJECTS_3])
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{"Name": "Test"}], [], [{"Name": "Test"}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
self.mock_copy_crm_csv_data_process = MagicMock()
|
||||
self.mock_upload_last_fetch_datetime_process = MagicMock()
|
||||
self.mock_upload_result_data_process = MagicMock()
|
||||
|
||||
run_control_process()
|
||||
# 実行回数の確認
|
||||
assert self.mock_check_object_info_process.call_count == 3
|
||||
assert self.mock_set_datetime_period_process.call_count == 3
|
||||
assert self.mock_fetch_crm_data_process.call_count == 3
|
||||
# CRM電文データバックアップ処理以降のプロセスは件数があるもののみ実行されること
|
||||
assert self.mock_backup_crm_data_process.call_count == 2
|
||||
assert self.mock_convert_crm_csv_data_process.call_count == 2
|
||||
assert self.mock_backup_crm_csv_data_process.call_count == 2
|
||||
assert self.mock_copy_crm_csv_data_process.call_count == 2
|
||||
assert self.mock_upload_last_fetch_datetime_process.call_count == 2
|
||||
assert self.mock_upload_result_data_process.called is True
|
||||
assert self.mock_upload_result_data_process.call_count == 1
|
||||
|
||||
# ログ出力の確認
|
||||
assert generate_log_message_tuple(
|
||||
log_message='I-CTRL-14 [Account] CSVデータアップロード処理呼び出し') in caplog.record_tuples, '取得オブジェクトが1件以上取れているものはCSVアップロード処理のログメッセージが出力されていること'
|
||||
assert generate_log_message_tuple(
|
||||
log_message='I-CTRL-22 [Contact]のレコード件数が0件のため、ファイルアップロードをスキップします') in caplog.record_tuples, '処理をスキップする旨を示すログメッセージが出力されていること'
|
||||
assert generate_log_message_tuple(
|
||||
log_message='I-CTRL-14 [Call2_vod__c] CSVデータアップロード処理呼び出し'
|
||||
) in caplog.record_tuples, '取得オブジェクトが1件以上取れているものはCSVアップロード処理のログメッセージが出力されていること'
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'exception, message',
|
||||
[
|
||||
@ -418,7 +520,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[{'Name': 'Test'}])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -464,7 +566,7 @@ class TestController:
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(side_effect=[exception(
|
||||
'E-DATE-01', DATE_JP_NAME, '例外発生'), COMMON_LAST_FETCH_DATETIME, COMMON_LAST_FETCH_DATETIME])
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(return_value=[{'Name': 'Test'}])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -510,7 +612,7 @@ class TestController:
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[exception(
|
||||
'E-FETCH-01', FETCH_JP_NAME, '例外発生'), {}, {}])
|
||||
'E-FETCH-01', FETCH_JP_NAME, '例外発生'), [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -555,7 +657,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{'Name': 'Test'}], [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock(side_effect=[exception(
|
||||
'E-RESBK-01', RESBK_JP_NAME, '例外発生'), None, None])
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
@ -601,7 +703,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{'Name': 'Test'}], [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock(side_effect=[exception(
|
||||
'E-CONV-01', CONV_JP_NAME, '例外発生'), None, None])
|
||||
@ -647,7 +749,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{'Name': 'Test'}], [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock(side_effect=[exception(
|
||||
@ -693,7 +795,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{'Name': 'Test'}], [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -739,7 +841,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{'Name': 'Test'}], [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
@ -784,7 +886,7 @@ class TestController:
|
||||
self.mock_prepare_data_fetch_process = MagicMock(return_value=(deepcopy(COMMON_FETCH_TARGET_OBJECTS), COMMON_EXECUTE_DATETIME, {}))
|
||||
self.mock_check_object_info_process = MagicMock(side_effect=mock_return_values)
|
||||
self.mock_set_datetime_period_process = MagicMock(return_value=COMMON_LAST_FETCH_DATETIME)
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[{}, {}, {}])
|
||||
self.mock_fetch_crm_data_process = MagicMock(side_effect=[[{'Name': 'Test'}], [{'Name': 'Test'}], [{'Name': 'Test'}]])
|
||||
self.mock_backup_crm_data_process = MagicMock()
|
||||
self.mock_convert_crm_csv_data_process = MagicMock()
|
||||
self.mock_backup_crm_csv_data_process = MagicMock()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user