from unittest.mock import patch import pytest from marshmallow import ValidationError from analytics.connectors import redis from analytics.logic.sound_recording_timeseries import ( get_sound_recording_summary, get_sound_recording_timeseries, ) def test_get_sound_recording_timeseries_requires_isrc(): with pytest.raises(ValidationError): get_sound_recording_timeseries({"stream_sources": []}, {}) def test_get_sound_recording_summary_requires_isrc(): with pytest.raises(ValidationError): get_sound_recording_summary({"stream_sources": []}, {}) MOCK_COUNTRY_CODE_TIMESERIES_ROWS = [ { "date": "2022-02-23", "streams": 100, "skips": 30, "streams_with_skips": 30, "id": "GB", }, { "date": "2022-02-24", "streams": 100, "skips": 30, "streams_with_skips": 30, "id": "GB", }, { "date": "2022-02-23", "streams": 100, "skips": 30, "streams_with_skips": 30, "id": "DE", }, ] MOCK_COUNTRY_CODE_SUMMARY_ROWS = [ { "streams": 100, "skips": 30, "streams_with_skips": 30, "id": "GB", "total_count": 3, }, { "streams": 100, "skips": 30, "streams_with_skips": 30, "id": "GB", "total_count": 3, }, { "streams": 100, "skips": 30, "streams_with_skips": 30, "id": "DE", "total_count": 3, }, ] def test_get_sound_recording_timeseries_default(): with patch( "analytics.logic.sound_recording_timeseries" ".SoundRecordingStreamsTimeSeries" ".execute", return_value=MOCK_COUNTRY_CODE_TIMESERIES_ROWS, ): redis.client.flushall() # flush Fakeredis cache ts = get_sound_recording_timeseries({"isrc": "isrc", "stream_sources": []}, {}) assert len(ts) == 3 def test_get_sound_recording_summary_default(): with patch( "analytics.logic.sound_recording_timeseries" ".SoundRecordingSummary" ".execute", return_value=MOCK_COUNTRY_CODE_SUMMARY_ROWS, ): redis.client.flushall() # flush Fakeredis cache ts = get_sound_recording_summary({"isrc": "isrc", "stream_sources": []}, {}) assert len(ts["items"]) == 3 def test_get_sound_recording_summary_countries(): with patch( "analytics.logic.sound_recording_timeseries" ".SoundRecordingSummary" ".execute", return_value=MOCK_COUNTRY_CODE_SUMMARY_ROWS, ): redis.client.flushall() # flush Fakeredis cache ts = get_sound_recording_summary( { "isrc": "isrc", "type": "COUNTRY", "stream_sources": [], }, {}, ) assert len(ts["items"]) == 3