"""Testing the EUPointOfSaleByCountryView.""" from collections import OrderedDict import pytest from reporting.models.eu_point_of_sale_by_country_view import ( EUPointOfSaleByCountryView, ) def default_params(): """Get the default params.""" return { 'param_sub_label': [], 'param_vendor_id': [21989], 'param_subacct_id': [7551], 'param_first_day_of_release_week': '2018-08-17', } def test_multiple_release_weeks(): """Test results if quering for 2 release weeks.""" params = default_params() params['param_first_day_of_release_week'] = ['2018-08-10', '2018-08-17'] results = EUPointOfSaleByCountryView.all(params) assert results.message['content'][0]['Aggregated Scans'] == 3 assert ( results.message['content'][0]['Scans by Weeks'][0]['Date'] == '2018-08-10' ) assert ( results.message['content'][0]['Scans by Weeks'][0]['Weekly Scans'] == 1 ) assert ( results.message['content'][0]['Scans by Weeks'][1]['Date'] == '2018-08-17' ) assert ( results.message['content'][0]['Scans by Weeks'][1]['Weekly Scans'] == 2 ) assert len(results.message['content']) == 1 def test_standard_query(): """Test the standard query.""" results = EUPointOfSaleByCountryView.all(default_params()) expected = OrderedDict() expected['Sub Label'] = 'Captain Potato' expected['Country'] = 'France' expected['Aggregated Scans'] = 2 expected['All Time Scans'] = 12 fields = [ 'Sub Label', 'Country', 'Scans by Weeks', 'Aggregated Scans', 'All Time Scans', ] for field in fields: if field != 'Scans by Weeks': results.message['content'][0][field] = expected[field] else: results.message['content'][0]['Scans by Weeks'][0]['Date'] = ( '2018-08-17' ) results.message['content'][0]['Scans by Weeks'][0][ 'Weekly Scans' ] = 2 assert len(results.message['content']) == 1 @pytest.mark.parametrize( 'param,column_name,value', [ ('param_country', 'Country', 'France'), ( 'param_first_day_of_release_week', 'First Day of Release Week', '2018-08-17', ), ], ) def test_filters(param, column_name, value): """Test filters.""" params = default_params() params[param] = [value] results = EUPointOfSaleByCountryView.all(params) assert results.message['content'][0]['Country'] == 'France' assert ( results.message['content'][0]['Scans by Weeks'][0]['Date'] == '2018-08-17' ) assert len(results.message['content']) == 1 def test_only_max_first_day_of_release_week_by_default(): """Test the default request.""" params = default_params() del params['param_first_day_of_release_week'] results = EUPointOfSaleByCountryView.all(params) assert ( results.message['content'][0]['Scans by Weeks'][0]['Date'] == '2018-08-17' ) assert len(results.message['content'][0]['Scans by Weeks']) == 1 def test_vendor_id(): """Test vendor id.""" params = default_params() params['param_vendor_id'] = ['21989'] results = EUPointOfSaleByCountryView.all(params) assert results.message['content'][0]['Country'] == 'France' assert len(results.message['content']) == 1 def test_subaccount_id(): """Test vendor id.""" params = default_params() params['param_vendor_id'] = [21989] params['param_subacct_id'] = [7551] results = EUPointOfSaleByCountryView.all(params) assert results.message['content'][0]['Country'] == 'France' assert len(results.message['content']) == 1 def test_get_filters(): """Test getting the filter values.""" results = EUPointOfSaleByCountryView.filter(21989, None) assert results.message == { 'sub_label': ['Captain Potato'], 'country': ['France'], } def test_get_filters_with_subaccount(): """Test getting the filter values with a sub-account.""" vendor_id = 21989 subaccount_id = 7551 results = EUPointOfSaleByCountryView.filter(vendor_id, subaccount_id) assert results.message == { 'country': ['France'], 'sub_label': ['Captain Potato'], }