"""Tests for asset_upload logic module.""" import flexmock from oto import response import pytest from assets.logic import asset_upload from assets.models import asset_upload as asset_upload_model @pytest.fixture def fixture_post_asset_mocks(): """Fixture with correct mocks for update_asset_upload call.""" return { 'get_asset_upload': response.Response(), 'update_asset_upload': response.Response() } @pytest.fixture def fixture_update_asset_upload__args(): """Fixture with correct update_asset_upload args.""" return { 'asset_type': 'TIF', 'upc': '54321', 'track_unique_id': 12321, 'filename': 'unique_filename.tif', 'product_id': 12345 } def test_update_asset_upload_success( fixture_update_asset_upload__args, fixture_post_asset_mocks): """Test for success of update_asset_upload logic layer.""" (flexmock(asset_upload_model) .should_receive('get_asset_upload') .with_args('unique_filename') .and_return(fixture_post_asset_mocks['get_asset_upload'])) update_asset_args = fixture_update_asset_upload__args.copy() update_asset_args['filename'] = 'unique_filename' (flexmock(asset_upload_model) .should_receive('update_asset_upload') .with_args(**update_asset_args) .and_return(fixture_post_asset_mocks['update_asset_upload'])) result = asset_upload.update_asset_upload( **fixture_update_asset_upload__args) assert result @pytest.mark.parametrize('failing_mock', [ 'get_asset_upload', 'update_asset_upload' ]) def test_update_asset_upload_failure( fixture_update_asset_upload__args, fixture_post_asset_mocks, failing_mock): """Test for failure of update_asset_upload logic layer.""" fixture_post_asset_mocks[failing_mock] = response.create_fatal_response( 'fatal_error' ) (flexmock(asset_upload_model) .should_receive('get_asset_upload') .and_return(fixture_post_asset_mocks['get_asset_upload'])) (flexmock(asset_upload_model) .should_receive('update_asset_upload') .and_return(fixture_post_asset_mocks['update_asset_upload'])) result = asset_upload.update_asset_upload( **fixture_update_asset_upload__args) assert not result