from unittest.mock import patch import pytest from freezegun import freeze_time from playlist.queries.fetch_queries import get_date_range def test_get_date_range_absolute_1(): assert get_date_range("streams", "2022-01-26", -7) == { "start_date": "2022-01-20", "end_date": "2022-01-26", } def test_get_date_range_absolute_2(): assert get_date_range("streams", "2022-01-20", 7) == { "start_date": "2022-01-20", "end_date": "2022-01-26", } def test_get_date_range_absolute_3(): assert get_date_range("positions", "2022-01-26", -7) == { "start_date": "2022-01-20", "end_date": "2022-01-26", } def test_get_date_range_absolute_4(): assert get_date_range("positions", "2022-01-20", 7) == { "start_date": "2022-01-20", "end_date": "2022-01-26", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_1(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", -7) == { "start_date": "2021-12-08", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_1(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", -7) == { "start_date": "2021-12-08", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_2(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", 7) == { "start_date": "2021-12-08", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_2(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", 7) == { "start_date": "2021-12-08", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_3(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", -28) == { "start_date": "2021-11-17", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_3(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", -28) == { "start_date": "2021-11-17", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_4(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", 28) == { "start_date": "2021-11-17", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_4(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", 28) == { "start_date": "2021-11-17", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_5(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", -183) == { "start_date": "2021-06-15", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_5(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", -183) == { "start_date": "2021-06-15", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_6(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", 183) == { "start_date": "2021-06-15", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_6(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", 183) == { "start_date": "2021-06-15", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_7(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", -365) == { "start_date": "2020-12-15", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_7(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", -365) == { "start_date": "2020-12-15", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_relative_streams_8(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("streams", "HIGHWATERMARK", 365) == { "start_date": "2020-12-15", "end_date": "2021-12-14", } @freeze_time("2021-12-16") def test_get_date_range_relative_positions_8(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): assert get_date_range("positions", "HIGHWATERMARK", 365) == { "start_date": "2020-12-15", "end_date": "2021-12-16", } @freeze_time("2021-12-16") def test_get_date_range_invalid(): with patch( "playlist.queries.fetch_queries.get_max_available_streaming_date", return_value="2021-12-14", ): with pytest.raises(ValueError): get_date_range("abcdef", "HIGHWATERMARK", 365)