"""Test logic.""" import unittest.mock import src.logic import src.utils from src import logic from tests.unit.conftest import get_sample_event @unittest.mock.patch.object(logic, 'download_from_s3_url') def test_download_and_process(download_from_s3_url_mock): """Test download_and_process.""" def run_side_effect(commands, *args, **kwargs): binary, input_file, output_file = commands with open(output_file, 'w') as file: file.write('{"status": "SUPER"}') with unittest.mock.patch.object( logic.subprocess, 'run', side_effect=run_side_effect) as run_mock: result = src.logic.download_and_process( bucket='abucket', key='some/path/filename.txt') assert download_from_s3_url_mock.call_args_list == [ unittest.mock.call( bucket='abucket', key='some/path/filename.txt', dir=unittest.mock.ANY) ] assert run_mock.called assert result == {'status': 'SUPER'} @unittest.mock.patch.object(logic, 'producer') def test_produce_kafka_event(producer_mock): """Test produce_kafka_event.""" sample_event = get_sample_event() asset_event = src.utils.FinalAsset(**sample_event) sample_data = {'k': 'val'} logic.produce_kafka_event(asset_event, sample_data) assert producer_mock.produce.call_args_list == [ unittest.mock.call( topic='stream.acousticBrainz.audioFeatures', event_key='asset-final-74562055', event_value='{"final_asset_id": 74562055, "asset_upload_id": 49105092, "bucket": "prod-orcd-mezzanine-assets", "filename": "6afc7e28_d140_4c29_abd8_9c8d06c8fe61.wav", "lowlevel_data": {"k": "val"}}', # noqa: E501 # noqa: E501 auto_flush=False)]