"""Functional tests for the POST /v2/asset endpoint.""" from unittest.mock import MagicMock, patch from flask.testing import FlaskClient from assets.models import asset_upload as asset_upload_model @patch("assets.models.asset_upload.mysql.db_lock") def test_post_asset_handler_v2_success_with_metadata_sent( mocked_db_lock: MagicMock, db_fixture: None, fixture_client: FlaskClient, ) -> None: """Test test_post_asset_handler_v2 success with metadata sent.""" create_asset_upload_response = asset_upload_model.create_asset_upload( user_id="alw:12345", filename="some_filename", token="some_token", asset_upload_type_id=1, api_version=2, ) assert create_asset_upload_response initial_asset_upload = create_asset_upload_response metadata_to_set = { "product_id": 123, "upc": "123456789012", "track_unique_id": 456, "filename": "some_filename", "original_filename": "some_original_filename", "is_correction": False, } result = fixture_client.post( "/v2/asset", json=metadata_to_set, ) asset_upload = asset_upload_model.get_asset_upload_by_id(initial_asset_upload["id"]) assert asset_upload == { **initial_asset_upload, **metadata_to_set, } assert result.status_code == 200 assert result.json == {"status": "ok"} @patch("assets.models.asset_upload.mysql.db_lock") def test_post_asset_handler_v2_success_without_metadata_sent( mocked_db_lock: MagicMock, db_fixture: None, fixture_client: FlaskClient, ) -> None: """Test test_post_asset_handler_v2 success without metadata sent.""" create_asset_upload_with_context_response = ( asset_upload_model.create_asset_upload_with_context( user_id="alw:12345", asset_upload_type_id=1, token="some_token", filename="some_filename", product_id=123, upc=123456789012, track_unique_id=456, is_correction=False, original_filename="some_original_filename", ) ) assert create_asset_upload_with_context_response initial_asset_upload = create_asset_upload_with_context_response["asset_upload"] result = fixture_client.post( "/v2/asset", json={"filename": "some_filename"}, ) asset_upload = asset_upload_model.get_asset_upload_by_id(initial_asset_upload["id"]) assert asset_upload == initial_asset_upload assert result.status_code == 200 assert result.json == {"status": "ok"}