"""Test Handler Utility Functions.""" import flexmock import pytest from werkzeug import datastructures from analytics.models.streams import Store from analytics.utils import handlers as handler_utility START_DATE = '2017-02-01' END_DATE = '2017-02-28' ISRCS = '123ABC,456DEF' ARTIST_IDS = '1234,5678' @pytest.fixture def fake_request_arguments(): """Return a fake request.args dict for testing.""" return datastructures.ImmutableMultiDict([ ('stores', ''), ('to_date', END_DATE), ('from_date', START_DATE), ('isrcs', ISRCS), ('artist_ids', ARTIST_IDS)]) @pytest.fixture def fake_request_arguments_with_store(): """Return a fake request.args dict for testing.""" return datastructures.ImmutableMultiDict([ ('stores', '286,123'), ('to_date', END_DATE), ('isrcs', ISRCS), ('from_date', START_DATE), ('artist_ids', ARTIST_IDS)]) def test_parse_date_values(fake_request_arguments): """Test that date values are correctly parsed.""" start_date, end_date = handler_utility.parse_date_values( fake_request_arguments) assert start_date == START_DATE assert end_date == END_DATE def test_parse_artist_store_and_isrc_values(fake_request_arguments): """Test that isrcs and artist_ids are correctly parsed.""" expected_artist_ids = ['1234', '5678'] expected_isrcs = ['123ABC', '456DEF'] expected_store_ids = ['1', '286', '716'] artist_ids, storeids, isrcs = \ handler_utility.parse_artist_store_and_isrc_values( fake_request_arguments) assert artist_ids == expected_artist_ids assert isrcs == expected_isrcs assert storeids == expected_store_ids def test_parse_artist_store_and_isrc_values_with_store( fake_request_arguments_with_store): """Test that isrcs and artist_ids are correctly parsed.""" expected_artist_ids = ['1234', '5678'] expected_isrcs = ['123ABC', '456DEF'] expected_store_ids = ['286', '123'] artist_ids, store_ids, isrcs = \ handler_utility.parse_artist_store_and_isrc_values( fake_request_arguments_with_store) assert artist_ids == expected_artist_ids assert isrcs == expected_isrcs assert store_ids == expected_store_ids def test_parse_store_ids_when_blank(fake_request_arguments): """Test that store values are correctly parsed when no store passed.""" available_stores_list = ['1', '286'] expected_artist_ids = ['1234', '5678'] expected_isrcs = ['123ABC', '456DEF'] (flexmock(Store).should_receive( 'get_available_stores').and_return(available_stores_list)) artist_ids, store_ids, isrcs = handler_utility.\ parse_artist_store_and_isrc_values(fake_request_arguments) assert store_ids == available_stores_list assert artist_ids == expected_artist_ids assert isrcs == expected_isrcs