diff --git a/ecs/crm-datafetch/tests/test_backup_crm_csv_data_process.py b/ecs/crm-datafetch/tests/test_backup_crm_csv_data_process.py index 452f01b8..d66fe2de 100644 --- a/ecs/crm-datafetch/tests/test_backup_crm_csv_data_process.py +++ b/ecs/crm-datafetch/tests/test_backup_crm_csv_data_process.py @@ -153,17 +153,69 @@ class TestBackupCrmCsvDataProcess: execute_datetime = ExecuteDateTime() target_object = TargetObject(target_object_dict, execute_datetime) - with patch('src.backup_crm_csv_data_process.BackupBucket') as mock_backup_bucket: + with patch('src.backup_crm_csv_data_process.BackupBucket') as mock_backup_bucket, \ + patch('src.backup_crm_csv_data_process.CsvWriter') as mock_writer: mock_backup_bucket_inst = mock_backup_bucket.return_value mock_backup_bucket_inst.put_csv.side_effect = Exception('登録エラー') + + mock_writer_inst = mock_writer.return_value + mock_writer_inst.write.return_value = '' # Act with pytest.raises(FileUploadException) as e: backup_crm_csv_data_process(target_object, execute_datetime, '') # Assert + assert mock_writer_inst.write.called is True assert mock_backup_bucket_inst.put_csv.called is True assert e.value.error_id == 'E-CSVBK-01' assert e.value.func_name == CSVBK_JP_NAME assert e.value.args[0] == \ f'[Account] CSVデータのバックアップに失敗しました ファイル名:[CRM_Account_{execute_datetime.format_date()}.csv] エラー内容:[登録エラー]' + + def test_raise_put_csv_write_local_file(self, bucket_name, monkeypatch, caplog): + """ + Cases: + CSVデータをバックアップするための一時ファイルを書き込めない場合、エラーが発生すること + Arranges: + - オブジェクト情報ファイル取得処理で例外が発生するようにする + Expects: + - 例外が発生する + - ファイルが書き込めないエラーが返却される + """ + + # Arrange + target_object_dict = { + 'object_name': 'Account', + 'columns': [ + 'Id', + 'AccountNumber', + 'LastModifiedDate', + 'LastModifiedById', + 'SystemModstamp', + 'IsDeleted' + ] + } + + execute_datetime = ExecuteDateTime() + target_object = TargetObject(target_object_dict, execute_datetime) + + with patch('src.backup_crm_csv_data_process.BackupBucket') as mock_backup_bucket, \ + patch('src.backup_crm_csv_data_process.CsvWriter') as mock_writer: + mock_backup_bucket_inst = mock_backup_bucket.return_value + mock_backup_bucket_inst.put_csv.return_value = '' + + mock_writer_inst = mock_writer.return_value + mock_writer_inst.write.side_effect = Exception('書き込みエラー') + # Act + with pytest.raises(FileUploadException) as e: + backup_crm_csv_data_process(target_object, execute_datetime, '') + + # Assert + + assert mock_writer_inst.write.called is True + assert mock_backup_bucket_inst.put_response_json.called is False + assert e.value.error_id == 'E-CSVBK-01' + assert e.value.func_name == CSVBK_JP_NAME + assert e.value.args[0] == \ + f'[Account] CSVデータのバックアップに失敗しました ファイル名:[CRM_Account_{execute_datetime.format_date()}.csv] エラー内容:[書き込みエラー]' diff --git a/ecs/crm-datafetch/tests/test_backup_crm_data_process.py b/ecs/crm-datafetch/tests/test_backup_crm_data_process.py index 875e84ce..e98dd301 100644 --- a/ecs/crm-datafetch/tests/test_backup_crm_data_process.py +++ b/ecs/crm-datafetch/tests/test_backup_crm_data_process.py @@ -145,8 +145,8 @@ class TestBackupCrmDataProcess: # Assert - assert mock_backup_bucket_inst.put_response_json.called is True assert mock_writer_inst.write.called is True + assert mock_backup_bucket_inst.put_response_json.called is True def test_raise_put_response_json(self, bucket_name, monkeypatch, caplog): """ @@ -175,17 +175,69 @@ class TestBackupCrmDataProcess: execute_datetime = ExecuteDateTime() target_object = TargetObject(target_object_dict, execute_datetime) - with patch('src.backup_crm_data_process.BackupBucket') as mock_backup_bucket: + with patch('src.backup_crm_data_process.BackupBucket') as mock_backup_bucket, \ + patch('src.backup_crm_data_process.JsonWriter') as mock_writer: mock_backup_bucket_inst = mock_backup_bucket.return_value mock_backup_bucket_inst.put_response_json.side_effect = Exception('登録エラー') + + mock_writer_inst = mock_writer.return_value + mock_writer_inst.write.return_value = '' # Act with pytest.raises(FileUploadException) as e: backup_crm_data_process(target_object, {}, execute_datetime) # Assert + assert mock_writer_inst.write.called is True assert mock_backup_bucket_inst.put_response_json.called is True assert e.value.error_id == 'E-RESBK-01' assert e.value.func_name == RESBK_JP_NAME assert e.value.args[0] == \ f'[Account] 電文データのバックアップに失敗しました ファイル名:[CRM_Account_{execute_datetime.format_date()}.json] エラー内容:[登録エラー]' + + def test_raise_put_response_json_write_local_file(self, bucket_name, monkeypatch, caplog): + """ + Cases: + CRM電文データをS3に配置するための一時ファイルを書き込めない場合、エラーが発生すること + Arranges: + - オブジェクト情報ファイル取得処理で例外が発生するようにする + Expects: + - 例外が発生する + - ファイルが書き込めないエラーが返却される + """ + + # Arrange + target_object_dict = { + 'object_name': 'Account', + 'columns': [ + 'Id', + 'AccountNumber', + 'LastModifiedDate', + 'LastModifiedById', + 'SystemModstamp', + 'IsDeleted' + ] + } + + execute_datetime = ExecuteDateTime() + target_object = TargetObject(target_object_dict, execute_datetime) + + with patch('src.backup_crm_data_process.BackupBucket') as mock_backup_bucket, \ + patch('src.backup_crm_data_process.JsonWriter') as mock_writer: + mock_backup_bucket_inst = mock_backup_bucket.return_value + mock_backup_bucket_inst.put_response_json.return_value = '' + + mock_writer_inst = mock_writer.return_value + mock_writer_inst.write.side_effect = Exception('書き込みエラー') + # Act + with pytest.raises(FileUploadException) as e: + backup_crm_data_process(target_object, {}, execute_datetime) + + # Assert + + assert mock_writer_inst.write.called is True + assert mock_backup_bucket_inst.put_response_json.called is False + assert e.value.error_id == 'E-RESBK-01' + assert e.value.func_name == RESBK_JP_NAME + assert e.value.args[0] == \ + f'[Account] 電文データのバックアップに失敗しました ファイル名:[CRM_Account_{execute_datetime.format_date()}.json] エラー内容:[書き込みエラー]'