"""Tests for sqs_message module.""" from typing import Any import botocore import pytest from flexmock import flexmock from owsresponse import response from transcoding.models import sqs_message @pytest.fixture def fixture_send_sqs_message_args() -> dict[str, Any]: """Return send_sqs_message call args.""" return { "queue_url": "sqs_queue_url", "message": {"key": "value"}, "message_group_id": "vendor-1", } def test_send_sqs_message_success( fixture_send_sqs_message_args: dict[str, Any], ) -> None: """Test for success of send_sqs_message.""" ( flexmock(botocore.client.BaseClient) .should_receive("_make_api_call") .with_args( "SendMessage", { "DelaySeconds": 0, "QueueUrl": "sqs_queue_url", "MessageBody": '{"key": "value"}', "MessageGroupId": "vendor-1", }, ) .and_return(response.Response("ok")) .once() ) result = sqs_message.send_sqs_message(**fixture_send_sqs_message_args) assert result def test_send_sqs_message_exception_failure( fixture_send_sqs_message_args: dict[str, Any], ) -> None: """Test for failure of send_sqs_message.""" ( flexmock(botocore.client.BaseClient) .should_receive("_make_api_call") .with_args( "SendMessage", { "DelaySeconds": 0, "QueueUrl": "sqs_queue_url", "MessageBody": '{"key": "value"}', "MessageGroupId": "vendor-1", }, ) .and_raise(Exception("fatal_exception")) .once() ) result = sqs_message.send_sqs_message(**fixture_send_sqs_message_args) assert not result assert result.status == 500