"""Unit tests for streams utility functions.""" import datetime from sound_recordings.utils import streams as streams_util class TestGetStreamsForStore(object): """Test Get Streams for Store.""" def test_get_streams_for_store(self): """Test if result matches expected result.""" streams = [ { "date": datetime.date(2018, 10, 15), "streams": 1, "store_id": 286, "skips": 1, "streams_with_skips": 1, "saves": 1, }, { "date": datetime.date(2018, 10, 15), "streams": 2, "store_id": 1, "skips": None, "streams_with_skips": 0, "saves": None, }, { "date": datetime.date(2018, 10, 16), "streams": 2, "store_id": 1, "skips": 2, "streams_with_skips": 2, "saves": 2, }, { "date": datetime.date(2018, 10, 20), "streams": 40, "store_id": 286, "skips": 20, "streams_with_skips": 20, "saves": 10, }, ] result = streams_util.get_streams_for_store( streams, 1, datetime.date(2018, 10, 15), datetime.date(2018, 10, 21) ) expected = [ { "date": "2018-10-15", "streams": 2, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-16", "streams": 2, "streams_with_skips": 2, "skips": 2, "skip_rate": 0.5, "saves": 2, }, { "date": "2018-10-17", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-18", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-19", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-20", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-21", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, ] assert result == expected class TestGetEmptyStreamsForPeriod(object): """Test Get Empty Streams for Period.""" def test_get_empty_streams_for_period(self): """Test if result matches expected result.""" result = streams_util.get_empty_streams_for_period( datetime.date(2018, 10, 15), datetime.date(2018, 10, 16) ) expected = [ { "date": "2018-10-15", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-16", "streams": 0, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, ] assert result == expected class TestCalcSkipRate(object): """Test Calc Skip Rate.""" def test_calc_date_skip_rate(self): """Test if result matches expected result.""" result = streams_util.calc_date_skip_rate( { "date": datetime.date(2018, 10, 16), "streams": 4, "store_id": 1, "skips": 2, "streams_with_skips": 2, "saves": 2, } ) assert result == 0.5 class TestStreamsByStore(object): """Test get_streams_by_store.""" def test_get_streams_by_store(self): """Test if result matches expected result.""" streams = [ { "date": datetime.date(2018, 10, 15), "streams": 2, "store_id": 1, "skips": None, "streams_with_skips": 0, "saves": None, }, { "date": datetime.date(2018, 10, 16), "streams": 2, "store_id": 1, "skips": 2, "streams_with_skips": 2, "saves": 2, }, ] result = streams_util.get_streams_by_store( streams, datetime.date(2018, 10, 15), datetime.date(2018, 10, 16) ) expected = [ { "id": 1, "name": "Apple Music", "items": [ { "date": "2018-10-15", "streams": 2, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-16", "streams": 2, "streams_with_skips": 2, "skips": 2, "skip_rate": 0.5, "saves": 2, }, ], } ] assert result == expected class TestStreamsByTrack(object): """Test get_streams_by_track.""" def test_get_streams_by_track(self): """Test if result matches expected result.""" streams = [ { "date": datetime.date(2018, 10, 15), "streams": 2, "track_unique_id": 321, "skips": None, "streams_with_skips": 0, "saves": None, }, { "date": datetime.date(2018, 10, 16), "streams": 2, "track_unique_id": 321, "skips": None, "streams_with_skips": 0, "saves": 2, }, ] result = streams_util.get_streams_by_track( streams, datetime.date(2018, 10, 15), datetime.date(2018, 10, 16) ) expected = [ { "track_unique_id": 321, "items": [ { "date": "2018-10-15", "streams": 2, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": None, }, { "date": "2018-10-16", "streams": 2, "streams_with_skips": 0, "skips": None, "skip_rate": None, "saves": 2, }, ], } ] assert result == expected