"""conftest for unit tests.""" import datetime from unittest.mock import MagicMock from pytest import fixture @fixture def mock_s3_response(): """Mock sample s3 client response.""" return { 'IsTruncated': False, 'MaxKeys': 1000, 'KeyCount': 2, 'Contents': [ { 'ETag': '"d9b52c8c0a8d30d0391b25e6dc67fcf3"', 'Key': 'file1.json', 'LastModified': datetime.datetime(2024, 10, 29, 10, 9, 17), 'Size': 22412, 'StorageClass': 'STANDARD' }, { 'ETag': '"0421d795da16cfe4777531d1fc4e00a1"', 'Key': 'file2.json', 'LastModified': datetime.datetime(2024, 9, 17, 14, 55, 44), 'Size': 43175, 'StorageClass': 'STANDARD'}, ] } @fixture def mock_s3_versions_response(): """Mock sample s3 client response when getting key versions.""" return { 'IsTruncated': False, 'KeyMarker': '', 'VersionIdMarker': '', 'Versions': [ { 'ETag': '"28f88ca1d0071ba8e571da4980e3e17b"', 'ChecksumAlgorithm': ['CRC64NVME'], 'ChecksumType': 'FULL_OBJECT', 'Size': 10665, 'StorageClass': 'STANDARD', 'Key': 'processed/791090_ziann.json', 'VersionId': '3ungq_45pmZ3NnfpBOwwad4IwY0uNBMn', 'IsLatest': True, 'LastModified': datetime.datetime(2025, 3, 14, 11, 41, 22), 'Owner': { 'DisplayName': 'devit', 'ID': 'owner_id_123' } }, { 'ETag': '"28f88ca1d0071ba8e571da4980e3e17b"', 'ChecksumAlgorithm': ['CRC64NVME'], 'ChecksumType': 'FULL_OBJECT', 'Size': 10665, 'StorageClass': 'STANDARD', 'Key': 'processed/791090_ziann.json', 'VersionId': '.Gd9eQjNU8fdhKwO0JZWRv9mOtwO1tdG', 'IsLatest': False, 'LastModified': datetime.datetime(2025, 3, 11, 14, 45, 36), 'Owner': { 'DisplayName': 'devit', 'ID': 'owner_id_123' }}], 'Name': 'dev-slaposhko-abacus-json-contract-import', 'Prefix': 'processed/791090_ziann.json', 'MaxKeys': 1000, 'EncodingType': 'url' } @fixture def mock_s3_response_with_not_json_files(): """Mock sample s3 client response.""" return { 'IsTruncated': False, 'MaxKeys': 1000, 'KeyCount': 2, 'Contents': [ { 'ETag': '"d9b52c8c0a8d30d0391b25e6dc67fcf3"', 'Key': 'file1.json', 'LastModified': datetime.datetime(2024, 10, 29, 10, 9, 17), 'Size': 22412, 'StorageClass': 'STANDARD' }, { 'ETag': '"0421d795da16cfe4777531d1fc4e00a1"', 'Key': 'file2.csv', 'LastModified': datetime.datetime(2024, 9, 17, 14, 55, 44), 'Size': 43175, 'StorageClass': 'STANDARD'}, ] } @fixture def mock_s3_response_with_no_files(): """Mock sample s3 client response with no files.""" return { 'IsTruncated': False, 'MaxKeys': 1000, 'KeyCount': 0, } @fixture def mock_s3_response_with_file_in_directory(): """Mock sample s3 client response when file in test1 directory.""" return { 'IsTruncated': False, 'MaxKeys': 1000, 'KeyCount': 1, 'Contents': [ { 'ETag': '"d9b52c8c0a8d30d0391b25e6dc67fcf3"', 'Key': 'test1/file1.json', 'LastModified': datetime.datetime(2024, 10, 29, 10, 9, 17), 'Size': 22412, 'StorageClass': 'STANDARD' }, ] } @fixture def mock_json_contract_file(): """Mock sample JSON file with contract info.""" return """ { "account_id": 2486, "account_name": "MANITOMAL S.L.", "contract_name": "Zahara Distribution Agreement", "contract_id": -1, "account_currency": "EUR", "account_status": "signed", "payment_minimum": 250, "payment_schedule": "90_days_after_month_end", "term_start": "2015-02-23", "term_end": null, "contract_terms": [ { "contract_term": { "contract_term_name": "Santa", "attachments": [ "UPC8445162776431" ], "attachments_relations": { "label_ids": [ "789468" ] }, "term_type": "product", "term_conditions": [ { "conditions": { "countries": [], "transaction_types": [ "UN", "UP" ] }, "contract_term_condition_name": "Conexos Santa", "term_rate": 80, "commission": 20, "priority": 1 } ] } } ] } """ @fixture def mock_json_contract_term_label_conditions(): """JSON conditions for label contract term.""" return [ { 'conditions': { 'countries': [], 'stores': [], 'transaction_types': [] }, 'contract_term_condition_name': 'base label', 'priority': 9, 'term_rate': 80 }, { 'conditions': { 'countries': [], 'stores': [], 'transaction_types': [ 'PS', 'RE' ] }, 'contract_term_condition_name': 'transaction type conditions', 'priority': 5, 'term_rate': 80 }, { 'conditions': { 'countries': [], 'stores': [], 'transaction_types': [ 'SC' ] }, 'contract_term_condition_name': 'transaction type conditions', 'priority': 5, 'term_rate': 50 }, { 'conditions': { 'countries': [], 'stores': [], 'transaction_types': [ 'DB', 'SB' ] }, 'contract_term_condition_name': 'transaction type conditions', 'priority': 5, 'term_rate': 75 }, { 'conditions': { 'countries': [], 'stores': [ '570', '705' ], 'transaction_types': [] }, 'contract_term_condition_name': 'store conditions', 'priority': 7, 'term_rate': 100 }, { 'conditions': { 'countries': [], 'stores': [], 'transaction_types': [ 'FP', 'FS' ] }, 'contract_term_condition_name': 'transaction type conditions', 'priority': 5, 'term_rate': 100 } ] @fixture def mock_json_contract_term_product_conditions(): """JSON conditions for product contract term.""" return [ { 'conditions': { 'countries': [ 'USA' ], 'stores': [], 'transaction_types': [] }, 'contract_term_condition_name': 'product/country term conditions', 'priority': 2, 'term_rate': 90 } ] @fixture def mock_json_contract_file_parsed(): """Mock parsed content from JSON file.""" return { 'account_currency': 'EUR', 'account_id': 2486, 'account_name': 'MANITOMAL S.L.', 'account_status': 'signed', 'contract_id': -1, 'contract_name': 'Zahara Distribution Agreement', 'contract_terms': [ { 'contract_term': { 'attachments': ['UPC8445162776431'], 'attachments_relations': { 'label_ids': [ '789468' ] }, 'contract_term_name': 'Santa', 'term_conditions': [ { 'commission': 20, 'conditions': { 'countries': [], 'transaction_types': ['UN', 'UP'], }, 'contract_term_condition_name': 'Conexos Santa', 'priority': 1, 'term_rate': 80, } ], 'term_type': 'product', } } ], 'payment_minimum': 250, 'payment_schedule': '90_days_after_month_end', 'term_end': None, 'term_start': '2015-02-23', } @fixture def mock_json_contract_file_parsed_with_paid_by(): """Mock parsed content from JSON file with paid by.""" return { 'account_currency': 'EUR', 'account_id': 2486, 'account_name': 'MANITOMAL S.L.', 'account_status': 'signed', 'contract_id': -1, 'contract_name': 'Zahara Distribution Agreement', 'contract_terms': [ { 'contract_term': { 'attachments': ['UPC8445162776431'], 'attachments_relations': { 'label_ids': [ '789468' ] }, 'contract_term_name': 'Santa', 'term_conditions': [ { 'commission': 20, 'conditions': { 'countries': [], 'transaction_types': ['UN', 'UP'], }, 'contract_term_condition_name': 'Conexos Santa', 'priority': 1, 'term_rate': 80, } ], 'term_type': 'product', } } ], 'payment_minimum': 250, 'paid_by': 6, 'payment_schedule': '90_days_after_month_end', 'term_end': None, 'term_start': '2015-02-23', } @fixture def mock_json_contract_file_parsed_with_reserves(): """Mock parsed content from JSON file with reserves.""" return { 'account_currency': 'EUR', 'account_id': 2486, 'account_name': 'MANITOMAL S.L.', 'account_status': 'signed', 'contract_id': -1, 'contract_name': 'Zahara Distribution Agreement', 'contract_additional_notes': 'Some general note.', 'contract_reference_signing_entity': 11, 'contract_terms': [ { 'contract_term': { 'attachments': ['UPC8445162776431'], 'attachments_relations': { 'label_ids': [ '789468' ] }, 'contract_term_name': 'Santa', 'term_conditions': [ { 'commission': 20, 'conditions': { 'countries': [], 'transaction_types': ['UN', 'UP'], }, 'contract_term_condition_name': 'Conexos Santa', 'priority': 1, 'term_rate': 80, } ], 'term_type': 'product', } } ], 'payment_minimum': 250, 'payment_schedule': '90_days_after_month_end', 'contract_execution_date': '2015-02-23', 'contract_initial_start_date': '2015-04-23', 'reserves': { 'reserve_conditions': { 'transaction_types': [ 'PS', 'RE' ] }, 'reserve_installments_in_months': 1, 'reserve_rate': 20, 'reserve_release_offset_in_months': 3, 'reserve_release_schedule': [ 1 ] } } @fixture def mock_json_contract_file_parsed_with_reserves_and_contract_id(): """Mock parsed content from JSON file with reserves and contract id.""" return { 'account_currency': 'EUR', 'account_id': 2486, 'account_name': 'MANITOMAL S.L.', 'account_status': 'signed', 'contract_id': 100, 'contract_run_controller': 30, 'contract_name': 'Zahara Distribution Agreement', 'contract_additional_notes': 'Some general note.', 'contract_reference_signing_entity': 11, 'contract_terms': [ { 'contract_term': { 'attachments': ['UPC8445162776431'], 'attachments_relations': { 'label_ids': [ '789468' ] }, 'contract_term_name': 'Santa', 'term_conditions': [ { 'commission': 20, 'conditions': { 'countries': [], 'transaction_types': ['UN', 'UP'], }, 'contract_term_condition_name': 'Conexos Santa', 'priority': 1, 'term_rate': 80, } ], 'term_type': 'product', } } ], 'payment_minimum': 250, 'payment_schedule': '90_days_after_month_end', 'contract_execution_date': '2015-02-23', 'contract_initial_start_date': '2015-04-23', 'reserves': { 'reserve_conditions': { 'transaction_types': [ 'PS', 'RE' ] }, 'reserve_installments_in_months': 1, 'reserve_rate': 20, 'reserve_release_offset_in_months': 3, 'reserve_release_schedule': [ 1 ] }, 'mechanical_deductions': [ { 'territory': 'USA', 'admin_fee': 15.5, 'admin_type': 'business', 'mechanical_type': ['digital'] } ], 'contract_lifecycle': [ { 'lifecycle_term_start_date': '2025-01-01', 'lifecycle_schedule': { 'termination_notice_detail_interval': 90, 'termination_notice_detail_type': 'day', 'renewal_type': 'continuously_active' } } ] } @fixture def mock_transaction_types_response(): """Mock parsed content from JSON file.""" response = MagicMock() response.json.return_value = [{ 'txn_type_code': 'VS', 'txn_type_id': 30, 'txn_type_name': 'Video Seasons' }, { 'txn_type_code': 'CV', 'txn_type_id': 34, 'txn_type_name': 'Visual UGC Matches' }] response.status_code = 201 return response