"""Tests for status module.""" from unittest.mock import patch import pytest from src import status @patch('src.status.ows_assets') @pytest.mark.parametrize( 'function,status_name,filename,error_code,description,bucket,' 'input_params,result_details,expected_message', [ ( 'function', 'success_status', 'filename.ext', None, None, None, None, None, { 'function': 'function', 'status': 'success_status', 'input': { 'key': 'filename.ext' } } ), ( 'function', 'error_status', 'filename.ext', 'code', None, None, None, None, { 'function': 'function', 'status': 'error_status', 'error_code': 'code', 'input': { 'key': 'filename.ext' } } ), ( 'function', 'error_status', 'filename.ext', 'code', 'Some description', None, None, None, { 'function': 'function', 'status': 'error_status', 'error_code': 'code', 'description': 'Some description', 'input': { 'key': 'filename.ext' } } ), ( 'function', 'error_status', 'filename.ext', 'code', 'Some description', 'bucket_name', None, None, { 'function': 'function', 'status': 'error_status', 'error_code': 'code', 'description': 'Some description', 'input': { 'key': 'filename.ext', 'bucket': 'bucket_name' } } ), ( 'function', 'error_status', 'filename.ext', 'code', 'Some description', 'bucket_name', {'input_foo': 'input_bar'}, None, { 'function': 'function', 'status': 'error_status', 'error_code': 'code', 'description': 'Some description', 'input': { 'key': 'filename.ext', 'bucket': 'bucket_name', 'input_foo': 'input_bar' } } ), ( 'function', 'error_status', 'filename.ext', 'code', 'Some description', 'bucket_name', {'input_foo': 'input_bar'}, {'result_foo': 'result_bar'}, { 'function': 'function', 'status': 'error_status', 'error_code': 'code', 'description': 'Some description', 'input': { 'key': 'filename.ext', 'bucket': 'bucket_name', 'input_foo': 'input_bar' }, 'result': { 'result_foo': 'result_bar' } } ) ] ) def test_send_general_status( ows_assets, function, status_name, filename, error_code, description, bucket, input_params, result_details, expected_message): """Test sending general status.""" status.send_general_status( function, status_name, filename, error_code, description, bucket, input_params, result_details) expected_description = description if description is not None else '' ows_assets.post_asset_status.assert_called_once_with(filename, status_name, expected_description, expected_message) @patch('src.status.ows_assets') @pytest.mark.parametrize( 'status_name, filename, bucket, details, result_assets, expected_message', [ ( 'success_status', 'filename.ext', 'test_bucket', None, [ { 'key': 'key.ext', 'bucket': 'test_bucket' } ], { 'status': 'success_status', 'status_details': '', 'result_assets': [ { 'key': 'key.ext', 'bucket': 'test_bucket' } ], 'input': { 'bucket': 'test_bucket', 'key': 'filename.ext' } } ), ( 'error_status', 'key.ext', 'test_bucket', 'some_details', None, { 'status': 'error_status', 'result_assets': [], 'status_details': 'some_details', 'input': { 'bucket': 'test_bucket', 'key': 'key.ext' } } ) ] ) def test_send_encoding_status( ows_assets, status_name, filename, bucket, details, expected_message, result_assets): """Test sending encoding status.""" status.send_encoding_status( status_name, filename, bucket, status_details=details, result_assets=result_assets) expected_description = details if details is not None else '' expected_result_assets = result_assets if result_assets is not None else [] ows_assets.post_asset_final_status.assert_called_once_with( filename, status_name, expected_description, expected_result_assets, expected_message)