"""Unit tests for video metrics bulk logic layer.""" from unittest.mock import patch from analytics.logic import video_metrics as video_metrics MOCK_QUERY_RESPONSE = [ { "result": """{ "AGGREGATE": { "AD_FILL_RATE": 0.532787, "AVERAGE_VIEW_DURATION_PERCENTAGE": 76.112568690048, "AVERAGE_VIEW_DURATION_SECONDS": 117.213355341266, "COMMENTS": 200, "CONTENT_TYPE": 0, "CPM": 1.94268966587, "DOWNLOAD_ACTIVITY_DATE": "2024-11-04", "ESTIMATED_MONETIZED_PLAYBACKS": 2389011, "ESTIMATED_PARTNER_AD_REVENUE": 2889.157, "ESTIMATED_PARTNER_PREMIUM_REVENUE": 11539.105, "IMPRESSIONS_CTR": 0, "PREMIUM_VIEWS": 3889149, "PREMIUM_WATCH_TIME_MINUTES": 7618461.53239, "RPM": 0.64432741, "VIDEO_ID": "O5NThwtEg5w", "VIEWS": 8373138, "WATCH_TIME_MINUTES": 16357393.34618 }, "TIMESERIES": [ { "AD_FILL_RATE": 0.639329, "AVERAGE_VIEW_DURATION_PERCENTAGE": 79.025428692871, "AVERAGE_VIEW_DURATION_SECONDS": 130.391955502601, "COMMENTS": 54, "CONTENT_TYPE": "PARTNER_UPLOADED", "CPM": 2.45957, "DOWNLOAD_ACTIVITY_DATE": "2024-11-15", "ESTIMATED_MONETIZED_PLAYBACKS": 664629, "ESTIMATED_PARTNER_AD_REVENUE": 1171.281, "ESTIMATED_PARTNER_PREMIUM_REVENUE": 328.774, "IMPRESSIONS_CTR": 0, "PREMIUM_VIEWS": 71757, "PREMIUM_WATCH_TIME_MINUTES": 161175.18714, "RPM": 1.12669541, "VIDEO_ID": "F3UVBS1V3U4", "VIEWS": 1111329, "WATCH_TIME_MINUTES": 2415139.41642 }, { "AD_FILL_RATE": 0.741732, "AVERAGE_VIEW_DURATION_PERCENTAGE": 84.223225309782, "AVERAGE_VIEW_DURATION_SECONDS": 138.968322736824, "COMMENTS": 30, "CONTENT_TYPE": "PARTNER_UPLOADED", "CPM": 1.49534, "DOWNLOAD_ACTIVITY_DATE": "2024-11-21", "ESTIMATED_MONETIZED_PLAYBACKS": 537117, "ESTIMATED_PARTNER_AD_REVENUE": 578.736, "ESTIMATED_PARTNER_PREMIUM_REVENUE": 324.311, "IMPRESSIONS_CTR": 0, "PREMIUM_VIEWS": 72792, "PREMIUM_WATCH_TIME_MINUTES": 164258.32165, "RPM": 0.79920568, "VIDEO_ID": "F3UVBS1V3U4", "VIEWS": 796931, "WATCH_TIME_MINUTES": 1845802.74346 } ]}""" }, { "result": """{ "AGGREGATE": { "AD_FILL_RATE": 0.671085, "AVERAGE_VIEW_DURATION_PERCENTAGE": 79.625628893143, "AVERAGE_VIEW_DURATION_SECONDS": 131.382286011426, "COMMENTS": 1274, "CONTENT_TYPE": "PARTNER_UPLOADED", "CPM": 2.22500583198, "DOWNLOAD_ACTIVITY_DATE": "2024-11-17", "ESTIMATED_MONETIZED_PLAYBACKS": 18457931, "ESTIMATED_PARTNER_AD_REVENUE": 29625.748, "ESTIMATED_PARTNER_PREMIUM_REVENUE": 10268.361, "IMPRESSIONS_CTR": 0, "PREMIUM_VIEWS": 2126224, "PREMIUM_WATCH_TIME_MINUTES": 4740484.60934, "RPM": 1.07711999, "VIDEO_ID": "F3UVBS1V3U4", "VIEWS": 29630818, "WATCH_TIME_MINUTES": 64882731.44196 }, "TIMESERIES": [ { "AD_FILL_RATE": 0.639329, "AVERAGE_VIEW_DURATION_PERCENTAGE": 79.025428692871, "AVERAGE_VIEW_DURATION_SECONDS": 130.391955502601, "COMMENTS": 54, "CONTENT_TYPE": "PARTNER_UPLOADED", "CPM": 2.45957, "DOWNLOAD_ACTIVITY_DATE": "2024-11-15", "ESTIMATED_MONETIZED_PLAYBACKS": 664629, "ESTIMATED_PARTNER_AD_REVENUE": 1171.281, "ESTIMATED_PARTNER_PREMIUM_REVENUE": 328.774, "IMPRESSIONS_CTR": 0, "PREMIUM_VIEWS": 71757, "PREMIUM_WATCH_TIME_MINUTES": 161175.18714, "RPM": 1.12669541, "VIDEO_ID": "F3UVBS1V3U4", "VIEWS": 1111329, "WATCH_TIME_MINUTES": 2415139.41642 }, { "AD_FILL_RATE": 0.741732, "AVERAGE_VIEW_DURATION_PERCENTAGE": 84.223225309782, "AVERAGE_VIEW_DURATION_SECONDS": 138.968322736824, "COMMENTS": 30, "CONTENT_TYPE": "PARTNER_UPLOADED", "CPM": 1.49534, "DOWNLOAD_ACTIVITY_DATE": "2024-11-21", "ESTIMATED_MONETIZED_PLAYBACKS": 537117, "ESTIMATED_PARTNER_AD_REVENUE": 578.736, "ESTIMATED_PARTNER_PREMIUM_REVENUE": 324.311, "IMPRESSIONS_CTR": 0, "PREMIUM_VIEWS": 72792, "PREMIUM_WATCH_TIME_MINUTES": 164258.32165, "RPM": 0.79920568, "VIDEO_ID": "F3UVBS1V3U4", "VIEWS": 796931, "WATCH_TIME_MINUTES": 1845802.74346 }]}""" }, ] EXPECTED_RESULT = { "F3UVBS1V3U4": { "aggregate_video_metrics": { "ad_fill_rate": 0.671085, "average_view_duration_percentage": 79.625628893143, "average_view_duration_seconds": 131.382286011426, "comments": 1274, "content_type": "PARTNER_UPLOADED", "cpm": 2.22500583198, "download_activity_date": "2024-11-17", "estimated_monetized_playbacks": 18457931, "estimated_partner_ad_revenue": 29625.748, "estimated_partner_premium_revenue": 10268.361, "impressions_ctr": 0, "premium_views": 2126224, "premium_watch_time_minutes": 4740484.60934, "rpm": 1.07711999, "video_id": "F3UVBS1V3U4", "views": 29630818, "watch_time_minutes": 64882731.44196, }, "sources": [ { "id": 453, "name": "YouTube", }, ], "video_metrics": [ { "ad_fill_rate": 0.639329, "average_view_duration_percentage": 79.025428692871, "average_view_duration_seconds": 130.391955502601, "comments": 54, "content_type": "PARTNER_UPLOADED", "cpm": 2.45957, "download_activity_date": "2024-11-15", "estimated_monetized_playbacks": 664629, "estimated_partner_ad_revenue": 1171.281, "estimated_partner_premium_revenue": 328.774, "impressions_ctr": 0, "premium_views": 71757, "premium_watch_time_minutes": 161175.18714, "rpm": 1.12669541, "video_id": "F3UVBS1V3U4", "views": 1111329, "watch_time_minutes": 2415139.41642, }, { "ad_fill_rate": 0.741732, "average_view_duration_percentage": 84.223225309782, "average_view_duration_seconds": 138.968322736824, "comments": 30, "content_type": "PARTNER_UPLOADED", "cpm": 1.49534, "download_activity_date": "2024-11-21", "estimated_monetized_playbacks": 537117, "estimated_partner_ad_revenue": 578.736, "estimated_partner_premium_revenue": 324.311, "impressions_ctr": 0, "premium_views": 72792, "premium_watch_time_minutes": 164258.32165, "rpm": 0.79920568, "video_id": "F3UVBS1V3U4", "views": 796931, "watch_time_minutes": 1845802.74346, }, ], }, "O5NThwtEg5w": { "aggregate_video_metrics": { "ad_fill_rate": 0.532787, "average_view_duration_percentage": 76.112568690048, "average_view_duration_seconds": 117.213355341266, "comments": 200, "content_type": 0, "cpm": 1.94268966587, "download_activity_date": "2024-11-04", "estimated_monetized_playbacks": 2389011, "estimated_partner_ad_revenue": 2889.157, "estimated_partner_premium_revenue": 11539.105, "impressions_ctr": 0, "premium_views": 3889149, "premium_watch_time_minutes": 7618461.53239, "rpm": 0.64432741, "video_id": "O5NThwtEg5w", "views": 8373138, "watch_time_minutes": 16357393.34618, }, "sources": [ { "id": 453, "name": "YouTube", }, ], "video_metrics": [], }, } def test_video_metrics_bulk(): with patch( "analytics.logic.video_metrics.VideoMetrics.execute", return_value=MOCK_QUERY_RESPONSE, ) as execute: res = video_metrics.get_video_metrics_bulk( { "video_ids": ["F3UVBS1V3U4", "O5NThwtEg5w"], "days": -1, "start_date": "2024-11-04", "country_ids": ["US", "MX"], }, {}, ) assert execute.call_count == 1 assert res == EXPECTED_RESULT