"""Unit tests for video metrics logic layer.""" from unittest.mock import MagicMock, patch import pytest from analytics.api import app from analytics.logic import video_metrics @pytest.fixture(autouse=True) def mock_context(): """Mock context.""" with app.test_request_context(): yield {} MOCK_SNOWFLAKE_ROW = { "video_id": "5bfseWNmlds", "content_type": "", "views": 831466, "premium_views": 7163, "average_view_duration_seconds": 138.726923563806, "average_view_duration_percentage": 64.524151133144, "watch_time_minutes": 2055708.31002, "premium_watch_time_minutes": 18306.22677, "impressions_ctr": 0.5, "estimated_partner_ad_revenue": 229288.545, "estimated_partner_premium_revenue": 1.0, "estimated_monetized_playbacks": 57082, "cpm": 1.96487999595, "rpm": 221.675325581588, "ad_fill_rate": 0.041527478809, "comments": 123, } @pytest.fixture def mock_store_availability(): """Mock store_availability.""" with patch( "analytics.logic.video_metrics.store_availability" ) as store_availability: store_availability.get_video_sources.return_value = [ {"id": 453, "name": "YouTube"} ] store_availability.get_video_store_ids.return_value = [453] yield store_availability def test_all_time_no_country_uses_rollup_table(mock_context, mock_store_availability): """Default (no country) uses VIEWS_BY_VIDEO_FEED_DISTRIBUTOR_ROLLUP.""" mock_result = MagicMock() mock_result.fetchone.return_value = MOCK_SNOWFLAKE_ROW with patch("analytics.logic.video_metrics.AllTimeVideoMetrics") as query_cls: query_cls.return_value.execute.return_value = mock_result response = video_metrics.get_all_time_video_metrics( { "video_id": "5bfseWNmlds", "country_ids": [], "store_ids": [], "distributors": ["theorchard"], }, { "permission_label_ids": [], "permission_artist_ids": [], "permission_subaccount_ids": [], "permission_label_participant_ids": [], }, ) init_params = query_cls.call_args.args[0] assert init_params["table_name"] == "VIEWS_BY_VIDEO_FEED_DISTRIBUTOR_ROLLUP" assert response.status == 200 metrics = response.message["all_time_video_metrics"] assert metrics["videoId"] == "5bfseWNmlds" assert metrics["views"] == 831466 def test_all_time_with_country_uses_country_rollup_table( mock_context, mock_store_availability ): """Country filter switches to VIEWS_BY_VIDEO_COUNTRY_FEED_DISTRIBUTOR_ROLLUP.""" mock_result = MagicMock() mock_result.fetchone.return_value = None with patch("analytics.logic.video_metrics.AllTimeVideoMetrics") as query_cls: query_cls.return_value.execute.return_value = mock_result video_metrics.get_all_time_video_metrics( { "video_id": "5bfseWNmlds", "country_ids": ["US"], "store_ids": [], "distributors": ["theorchard"], }, { "permission_label_ids": [], "permission_artist_ids": [], "permission_subaccount_ids": [], "permission_label_participant_ids": [], }, ) init_params = query_cls.call_args.args[0] assert ( init_params["table_name"] == "VIEWS_BY_VIDEO_COUNTRY_FEED_DISTRIBUTOR_ROLLUP" ) def test_all_time_non_label_profile_early_return(mock_context, mock_store_availability): """Non-label profile (e.g. artist) early-returns an empty payload.""" with patch("analytics.logic.video_metrics.AllTimeVideoMetrics") as query_cls: response = video_metrics.get_all_time_video_metrics( { "video_id": "5bfseWNmlds", "country_ids": [], "store_ids": [], "distributors": ["theorchard"], }, { "permission_label_ids": [], "permission_artist_ids": [42], "permission_subaccount_ids": [], "permission_label_participant_ids": [], }, ) query_cls.assert_not_called() assert response.message["all_time_video_metrics"] == {}