83 lines
4.8 KiB
Python
83 lines
4.8 KiB
Python
from unittest.mock import MagicMock, patch
|
|
|
|
from src import controller
|
|
from src.config.objects import (FetchTargetObjects, LastFetchDatetime,
|
|
TargetObject)
|
|
from src.util.execute_datetime import ExecuteDateTime
|
|
|
|
|
|
class TestController:
|
|
def test_controller_call_all_processes(self, s3_client, monkeypatch):
|
|
"""
|
|
Cases:
|
|
コントローラー処理からすべてのプロセスが呼ばれること
|
|
Arranges:
|
|
- 各種プロセスメソッドと内部で使用している値オブジェクトをモック化する
|
|
Expects:
|
|
- データ取得準備処理が1回のみ実行されること
|
|
- オブジェクト情報形式チェック処理が複数回実行されること
|
|
- データ取得期間設定処理が複数回実行されること
|
|
- CRMデータ取得処理が複数回実行されること
|
|
- CRM電文データバックアップ処理が複数回実行されること
|
|
- CSV変換処理が複数回実行されること
|
|
- CSVバックアップ処理が複数回実行されること
|
|
- CSVアップロード処理が複数回実行されること
|
|
- 前回取得日次ファイル更新処理が複数回実行されること
|
|
- 取得処理実施結果アップロード処理が1回のみ実行されること
|
|
"""
|
|
monkeypatch.setattr(FetchTargetObjects, '_FetchTargetObjects__validate', lambda x: None)
|
|
# monkeypatch.setattr(ExecuteDateTime, '__str__', lambda x: 'YYYY-MM-DDTHH:MM:SS.000Z')
|
|
monkeypatch.setattr(TargetObject, '_TargetObject__validate', lambda x: None)
|
|
monkeypatch.setattr(LastFetchDatetime, '_LastFetchDatetime__validate', lambda x: None)
|
|
mock_execute_datetime = ExecuteDateTime()
|
|
mock_target_objects = FetchTargetObjects({
|
|
'objects': [
|
|
{
|
|
'object_name': 'Account'
|
|
},
|
|
{
|
|
'object_name': 'Contact'
|
|
},
|
|
{
|
|
'object_name': 'Call2_vod__c'
|
|
}
|
|
]
|
|
})
|
|
mock_target_object = TargetObject({'object_name': 'Account'}, mock_execute_datetime)
|
|
mock_last_fetch_datetime = LastFetchDatetime({
|
|
'last_fetch_datetime_from': '1900-01-01T00:00:00.000Z',
|
|
'last_fetch_datetime_to': '9999-12-31T59:59:59.000Z'
|
|
}, mock_execute_datetime)
|
|
mock_prepare_data_fetch_process = MagicMock(return_value=(mock_target_objects, mock_execute_datetime, {}))
|
|
mock_check_object_info_process = MagicMock(return_value=mock_target_object)
|
|
mock_set_datetime_period_process = MagicMock(return_value=mock_last_fetch_datetime)
|
|
mock_fetch_crm_data_process = MagicMock(return_value=[{}])
|
|
mock_backup_crm_data_process = MagicMock()
|
|
mock_convert_crm_csv_data_process = MagicMock()
|
|
mock_backup_crm_csv_data_process = MagicMock()
|
|
mock_copy_crm_csv_data_process = MagicMock()
|
|
mock_upload_last_fetch_datetime_process = MagicMock()
|
|
mock_upload_result_data_process = MagicMock()
|
|
with patch('src.controller.prepare_data_fetch_process', mock_prepare_data_fetch_process),\
|
|
patch('src.controller.check_object_info_process', mock_check_object_info_process),\
|
|
patch('src.controller.set_datetime_period_process', mock_set_datetime_period_process),\
|
|
patch('src.controller.fetch_crm_data_process', mock_fetch_crm_data_process),\
|
|
patch('src.controller.backup_crm_data_process', mock_backup_crm_data_process),\
|
|
patch('src.controller.convert_crm_csv_data_process', mock_convert_crm_csv_data_process),\
|
|
patch('src.controller.backup_crm_csv_data_process', mock_backup_crm_csv_data_process),\
|
|
patch('src.controller.copy_crm_csv_data_process', mock_copy_crm_csv_data_process),\
|
|
patch('src.controller.upload_last_fetch_datetime_process', mock_upload_last_fetch_datetime_process),\
|
|
patch('src.controller.upload_result_data_process', mock_upload_result_data_process):
|
|
controller.controller()
|
|
|
|
mock_prepare_data_fetch_process.assert_called_once()
|
|
assert mock_check_object_info_process.call_count == 3
|
|
assert mock_set_datetime_period_process.call_count == 3
|
|
assert mock_fetch_crm_data_process.call_count == 3
|
|
assert mock_backup_crm_data_process.call_count == 3
|
|
assert mock_convert_crm_csv_data_process.call_count == 3
|
|
assert mock_backup_crm_csv_data_process.call_count == 3
|
|
assert mock_copy_crm_csv_data_process.call_count == 3
|
|
assert mock_upload_last_fetch_datetime_process.call_count == 3
|
|
mock_upload_result_data_process.assert_called_once()
|