"""Test config for logic.""" import datetime import pytest @pytest.fixture def mock_downloads_store_model(): """Mock payload for downloads-by-store model.""" return [ {"store_id": 1, "date": datetime.date(2018, 6, 28), "downloads": 5}, {"store_id": 1, "date": datetime.date(2018, 6, 29), "downloads": 7}, {"store_id": 187, "date": datetime.date(2018, 6, 28), "downloads": 20}, {"store_id": 187, "date": datetime.date(2018, 6, 29), "downloads": 12}, ] @pytest.fixture def expected_payload_downloads_store(): """Return formatted downloads-by-store logic.""" return { "stores": [ { "id": 1, "name": "Apple Music", "items": [ {"downloads": 5, "date": "2018-06-28T00:00:00Z"}, {"downloads": 7, "date": "2018-06-29T00:00:00Z"}, ], }, { "id": 187, "name": "Amazon Music", "items": [ {"downloads": 20, "date": "2018-06-28T00:00:00Z"}, {"downloads": 12, "date": "2018-06-29T00:00:00Z"}, ], }, ] } @pytest.fixture() def expected_participant_payload_downloads_by_store(expected_payload_downloads_store): """Return expected downloads-by-store logic with GpId.""" expected_payload_downloads_store.update( {"global_participant_id": "f67b0892-f0bc-4575-b23e-59566ccb44bc"} ) return expected_payload_downloads_store @pytest.fixture() def expected_product_payload_downloads_by_store(expected_payload_downloads_store): """Return expected downloads-by-store logic with product_id.""" expected_payload_downloads_store.update({"product_id": "1"}) return expected_payload_downloads_store @pytest.fixture def mock_downloads_country_model(): """Mock payload for downloads-by-country model.""" return [ {"country_code": "US", "date": datetime.date(2018, 6, 28), "downloads": 5}, {"country_code": "US", "date": datetime.date(2018, 6, 29), "downloads": 7}, {"country_code": "GB", "date": datetime.date(2018, 6, 28), "downloads": 20}, {"country_code": "GB", "date": datetime.date(2018, 6, 29), "downloads": 12}, ] @pytest.fixture def expected_payload_downloads_country(): """Return formatted downloads-by-country logic.""" return { "countries": [ { "code": "GB", "items": [ {"downloads": 20, "date": "2018-06-28T00:00:00Z"}, {"downloads": 12, "date": "2018-06-29T00:00:00Z"}, ], }, { "code": "US", "items": [ {"downloads": 5, "date": "2018-06-28T00:00:00Z"}, {"downloads": 7, "date": "2018-06-29T00:00:00Z"}, ], }, ] } @pytest.fixture def expected_participant_payload_downloads_by_country( expected_payload_downloads_country, ): """Return expected downloads-by-country logic with GpId.""" expected_payload_downloads_country.update( {"global_participant_id": "f67b0892-f0bc-4575-b23e-59566ccb44bc"} ) return expected_payload_downloads_country @pytest.fixture def expected_product_payload_downloads_by_country(expected_payload_downloads_country): """Return expected downloads-by-country logic with GpId.""" expected_payload_downloads_country.update({"product_id": "1"}) return expected_payload_downloads_country @pytest.fixture def mock_downloads_all_model(): """Mock payload for participants downloads-all model.""" return [ {"date": datetime.date(2018, 6, 28), "downloads": 5}, {"date": datetime.date(2018, 6, 29), "downloads": 20}, ] @pytest.fixture def expected_payload_downloads_all(): """Return formatted downloads-all logic.""" return { "items": [ {"downloads": 5, "date": "2018-06-28T00:00:00Z"}, {"downloads": 20, "date": "2018-06-29T00:00:00Z"}, ] } @pytest.fixture def expected_participant_payload_downloads_all(expected_payload_downloads_all): """Return expected downloads-all logic with GpId.""" expected_payload_downloads_all.update( {"global_participant_id": "f67b0892-f0bc-4575-b23e-59566ccb44bc"} ) return expected_payload_downloads_all @pytest.fixture def expected_product_payload_downloads_all(expected_payload_downloads_all): """Return expected downloads-all logic with GpId.""" expected_payload_downloads_all.update({"product_id": "1"}) return expected_payload_downloads_all @pytest.fixture def mock_downloads_sound_recording_model(): """Mock payload for downloads-by-sound-recording model.""" return [ {"isrc": "QMFMF1589183", "date": datetime.date(2018, 6, 28), "downloads": 5}, {"isrc": "QMFMF1589183", "date": datetime.date(2018, 6, 29), "downloads": 7}, {"isrc": "QMFMG1593550", "date": datetime.date(2018, 6, 28), "downloads": 20}, {"isrc": "QMFMG1593550", "date": datetime.date(2018, 6, 29), "downloads": 12}, ] @pytest.fixture def expected_payload_downloads_sound_recording(): """Return formatted downloads-by-sound-recording logic.""" return { "sound_recordings": [ { "isrc": "QMFMG1593550", "items": [ {"downloads": 20, "date": "2018-06-28T00:00:00Z"}, {"downloads": 12, "date": "2018-06-29T00:00:00Z"}, ], }, { "isrc": "QMFMF1589183", "items": [ {"downloads": 5, "date": "2018-06-28T00:00:00Z"}, {"downloads": 7, "date": "2018-06-29T00:00:00Z"}, ], }, ] } @pytest.fixture def expected_participant_payload_downloads_sound_recording( expected_payload_downloads_sound_recording, ): """Return expected downloads-by-sound-recording logic with GpId.""" expected_payload_downloads_sound_recording.update( {"global_participant_id": "f67b0892-f0bc-4575-b23e-59566ccb44bc"} ) return expected_payload_downloads_sound_recording @pytest.fixture def mock_downloads_track_model(): """Mock payload for downloads-by-track model.""" return [ {"date": datetime.date(2018, 10, 15), "downloads": 1, "track_unique_id": 789}, {"date": datetime.date(2018, 10, 15), "downloads": 2, "track_unique_id": 987}, {"date": datetime.date(2018, 10, 16), "downloads": 2, "track_unique_id": 987}, {"date": datetime.date(2018, 10, 20), "downloads": 40, "track_unique_id": 789}, ] @pytest.fixture def expected_payload_downloads_track(): """Return formatted downloads-by-track logic.""" return { "downloads_by_track": [ { "track_unique_id": 987, "items": [ {"date": "2018-10-15T00:00:00Z", "downloads": 2}, {"date": "2018-10-16T00:00:00Z", "downloads": 2}, {"date": "2018-10-17T00:00:00Z", "downloads": 0}, {"date": "2018-10-18T00:00:00Z", "downloads": 0}, {"date": "2018-10-19T00:00:00Z", "downloads": 0}, {"date": "2018-10-20T00:00:00Z", "downloads": 0}, {"date": "2018-10-21T00:00:00Z", "downloads": 0}, ], }, { "track_unique_id": 789, "items": [ {"date": "2018-10-15T00:00:00Z", "downloads": 1}, {"date": "2018-10-16T00:00:00Z", "downloads": 0}, {"date": "2018-10-17T00:00:00Z", "downloads": 0}, {"date": "2018-10-18T00:00:00Z", "downloads": 0}, {"date": "2018-10-19T00:00:00Z", "downloads": 0}, {"date": "2018-10-20T00:00:00Z", "downloads": 40}, {"date": "2018-10-21T00:00:00Z", "downloads": 0}, ], }, ] }