"""Test SFN Utils.""" from unittest.mock import Mock, patch import pytest from freezegun import freeze_time from product_review.util import sfn @freeze_time("2020-01-01 00:30:00") @pytest.mark.parametrize( "complete_review_v2_enabled,expected_arn", [(False, "arn:foo"), (True, "arn:bar")], ) @patch("product_review.util.sfn.is_enabled_complete_review_v2") @patch("product_review.util.sfn.ows_product_model") @patch("product_review.util.sfn.sfn_connector") @patch("product_review.util.sfn.config") def test_create_complete_review_sfn_execution( mock_config, mock_sfn_connector, mock_ows_product_model, mock_is_enabled_complete_review_v2, complete_review_v2_enabled, expected_arn, ): """Test create execution util.""" mock_config.SFN_COMPLETE_REVIEW_ARN = "arn:foo" mock_config.SFN_COMPLETE_REVIEW_V2_ARN = "arn:bar" mock_sfn_connector.trigger_sfn.return_value = ("bar", None) mock_ows_product_model.get_product.return_value = {"vendor_id": 123} mock_is_enabled_complete_review_v2.return_value = complete_review_v2_enabled mock_item = Mock() mock_item.review_queue_id = 1 mock_item.product_id = 2 actual = sfn.create_complete_review_sfn_execution(mock_item, "baz", "qux", "zok") mock_ows_product_model.get_product.assert_called_once_with(2) mock_is_enabled_complete_review_v2.assert_called_once_with(123) mock_sfn_connector.trigger_sfn.assert_called_once_with( expected_arn, "complete-review-1", { "review_queue_id": 1, "product_id": 2, "resolution": "baz", "user_uuid": "qux", "created_datetime": "2020-01-01T00:30:00.000000+00:00", "note": "zok", "will_not_deliver": False, }, ) assert actual == "bar"