from typing import Any from unittest.mock import MagicMock, patch import pytest from assets.constants.error import ERROR_ASSET_FINAL_NOT_FOUND from assets.exceptions import AssetFinalNotFound from assets.logic.hive_ai_image_task import save_hive_ai_image_task_data @patch("assets.models.asset_final.get_asset_final_by_id") @patch("assets.models.hive_ai_image_task.create_hive_ai_image_task") def test_save_hive_ai_image_task_data( mock_create: MagicMock, asset_final_mock: MagicMock, valid_hive_ai_image_task_data: dict[str, Any], ) -> None: """Test save_hive_ai_image_task_data.""" mock_response = { "id": 1, **valid_hive_ai_image_task_data, } mock_create.return_value = mock_response result = save_hive_ai_image_task_data(**valid_hive_ai_image_task_data) mock_create.assert_called_once_with(**valid_hive_ai_image_task_data) assert result == mock_response @patch("assets.models.asset_final.get_asset_final_by_id") @patch("assets.models.hive_ai_image_task.create_hive_ai_image_task") def test_save_hive_ai_image_task_data_no_asset_final_id( mock_create: MagicMock, asset_final_mock: MagicMock, valid_hive_ai_image_task_data: dict[str, Any], ) -> None: """Test save_hive_ai_image_task_data when asset_final_id not found.""" payload = { **valid_hive_ai_image_task_data, "asset_final_id": 0, } asset_final_mock.side_effect = AssetFinalNotFound(ERROR_ASSET_FINAL_NOT_FOUND) with pytest.raises(AssetFinalNotFound) as exc: save_hive_ai_image_task_data(**payload) assert exc.value.description == ERROR_ASSET_FINAL_NOT_FOUND mock_create.assert_not_called()