"""Video Asset logic tests.""" import pytest from pytest_mock import MockerFixture from video.exceptions import InvalidRequest from video.logic import video_asset as video_asset_logic from video.models.sql.classes import video_asset def test_upsert_video_asset(mocker: MockerFixture) -> None: """Test upsert_video_asset.""" new_video_asset = { "product_id": 1, "asset_path": "path", "asset_type": "video_image_S2", } upsert_mock = mocker.patch.object( video_asset, "upsert", return_value={"result": "ok"} ) result = video_asset_logic.upsert_video_asset(new_video_asset) upsert_mock.assert_called_once_with(new_video_asset) assert result == {"result": "ok"} def test_upsert_video_asset_with_tuid(mocker: MockerFixture) -> None: """Test upsert_video_asset.""" new_video_asset = { "product_id": 1, "asset_path": "asset_path", "asset_type": "video_master", "tuid": 123, } upsert_mock = mocker.patch.object( video_asset, "upsert", return_value={"result": "ok"} ) video_asset_logic.upsert_video_asset(new_video_asset) upsert_mock.assert_called_once_with(new_video_asset) def test_upsert_video_asset_bad_payload(mocker: MockerFixture) -> None: """Test upsert_video_asset with missing data.""" new_video_asset = {"product_id": 1, "asset_path": "path"} upsert_mock = mocker.patch.object(video_asset, "upsert", return_value=None) with pytest.raises(InvalidRequest): video_asset_logic.upsert_video_asset(new_video_asset) upsert_mock.assert_not_called() def test_bulk_upsert_video_asset(mocker: MockerFixture) -> None: """Test bulk_upsert_video_asset.""" new_video_assets = [ { "product_id": 3, "asset_type": "video_master", "asset_path": "/path/to/video1.mp4", }, {"product_id": 4, "asset_type": "H264_HD", "asset_path": "/path/to/video2.mp4"}, { "product_id": 5, "asset_type": "video_image_S5", "asset_path": "/path/to/image1.png", }, ] bulk_upsert_mock = mocker.patch.object( video_asset, "bulk_upsert_video_assets", return_value=[{"result": "ok"}] ) result = video_asset_logic.bulk_upsert_video_assets(new_video_assets) bulk_upsert_mock.assert_called_once_with(new_video_assets) assert result == [{"result": "ok"}] def test_bulk_upsert_video_asset_with_tuid(mocker: MockerFixture) -> None: """Test bulk_upsert_video_asset.""" new_video_assets = [ { "product_id": 1, "asset_type": "video_master", "asset_path": "/path/to/video1.mp4", "tuid": 212, }, { "product_id": 2, "asset_type": "H264_HD", "asset_path": "/path/to/video2.mp4", "tuid": 123, }, { "product_id": 3, "asset_type": "video_image_S5", "asset_path": "/path/to/image1.png", }, ] bulk_upsert_mock = mocker.patch.object( video_asset, "bulk_upsert_video_assets", return_value=[{"result": "ok"}] ) result = video_asset_logic.bulk_upsert_video_assets(new_video_assets) bulk_upsert_mock.assert_called_once_with(new_video_assets) assert result == [{"result": "ok"}] def test_bulk_upsert_video_assets_missing_keys(mocker: MockerFixture) -> None: """Test bulk_upsert_video_asset with missing keys.""" new_video_assets = [ { "product_id": 1, "asset_type": "video_master", "tuid": 1, }, { "product_id": 2, "asset_type": "H264_HD", }, {"product_id": 3, "tuid": 3, "asset_path": "/path/to/image1.png"}, ] bulk_upsert_mock = mocker.patch.object( video_asset, "bulk_upsert_video_assets", return_value=None ) with pytest.raises(InvalidRequest): video_asset_logic.bulk_upsert_video_assets(new_video_assets) bulk_upsert_mock.assert_not_called() def test_bulk_upsert_video_assets_invalid_asset_types(mocker: MockerFixture) -> None: """Test bulk_upsert_video_asset with missing keys.""" new_video_assets = [ {"product_id": 1, "asset_type": "abc", "asset_path": "/path/to/video1.mp4"}, { "product_id": 2, "asset_type": "invalid", "tuid": 2, "asset_path": "/path/to/video2.mp4", }, { "product_id": 3, "asset_type": "invalid_video_image_S5", "tuid": 3, "asset_path": "/path/to/image1.png", }, ] bulk_upsert_mock = mocker.patch.object( video_asset, "bulk_upsert_video_assets", return_value=None ) with pytest.raises(InvalidRequest): video_asset_logic.bulk_upsert_video_assets(new_video_assets) bulk_upsert_mock.assert_not_called()