"""Testing the USPhysicalRetailerView.""" from collections import OrderedDict import pytest from reporting.constants.field import LIMIT from reporting.models.us_physical_retailer_view import USPhysicalRetailerView def default_params(): """Get the default params.""" return { 'param_artist': [], 'param_inventory_data': True, 'param_product_name': [], 'param_retailer': [], 'param_product_type': [], 'param_sales_data': True, 'param_release_date': '', 'param_sub_label': [], 'param_vendor_id': [1], } def test_standard_query(): """Test the standard query.""" results = USPhysicalRetailerView.all(default_params()) expected = OrderedDict() expected['Retailer'] = 'Retailer1' expected['Retailer Code'] = 1 expected['Product Name'] = 'ProductName1' expected['Artist'] = 'Artist1' expected['Label Name'] = 'Label1' expected['Sub Label'] = 'SubLabel1' expected['Product Code'] = 'ProductCode1' expected['UPC/EAN'] = '1' expected['Release Date'] = '2016-01-01' expected['Product Type'] = 'CD1' expected['Format'] = 'Album' expected['Units Per Set'] = 1 expected['Display Configuration'] = '1 x CD Album' expected['Exclusive'] = 'N' expected['Open Orders'] = 1 expected['Backorders'] = 1 expected['First4WeekS#'] = 1 expected['5DayS#'] = 1 expected['5DayR#'] = 1 expected['Last4WkS#'] = 1 expected['Last4WkR#'] = 1 expected['MTDS#'] = 1 expected['MTDR#'] = 1 expected['CYTDS#'] = 1 expected['CYTDR#'] = 1 expected['CumTDS#'] = 1 expected['CumTDR#'] = 1 content = results.message['content'] row = next( r for r in content if r['Retailer Code'] == 1 and r['UPC/EAN'] == '1' ) assert row == expected assert len(content) == 2 def test_limit(): """Test limit.""" params = default_params() params[LIMIT] = 1 results = USPhysicalRetailerView.all(params) assert len(results.message['content']) == 1 @pytest.mark.parametrize( 'param,column_name,value', [ ('param_artist', 'Artist', 'Artist2'), ('param_product_type', 'Product Type', 'CD2'), ('param_product_name', 'Product Name', 'ProductName2'), ('param_sub_label', 'Sub Label', 'SubLabel2'), ('param_release_date', 'Release Date', '2016-01-02'), ('param_retailer', 'Retailer', 'Retailer2'), ], ) def test_filters(param, column_name, value): """Test filters.""" params = default_params() params[param] = [value] results = USPhysicalRetailerView.all(params) assert results.message['content'][0][column_name] == value assert len(results.message['content']) == 1 def test_vendor_id(): """Test vendor id.""" params = default_params() params['param_vendor_id'] = [2] results = USPhysicalRetailerView.all(params) assert results.message['content'][0]['Artist'] == 'Artist3' assert len(results.message['content']) == 1 def test_subaccount_id(): """Test vendor id.""" params = default_params() params['param_vendor_id'] = [1] params['param_subacct_id'] = [2] results = USPhysicalRetailerView.all(params) assert results.message['content'][0]['Artist'] == 'Artist2' assert len(results.message['content']) == 1 def test_get_filters(): """Test getting the filter values.""" vendor_id = 1 subaccount_id = None results = USPhysicalRetailerView.filter(vendor_id, subaccount_id) assert results.message == { 'artist': ['Artist1', 'Artist2'], 'product_name': ['ProductName1', 'ProductName2'], 'product_type': ['CD1', 'CD2'], 'sub_label': ['SubLabel1', 'SubLabel2'], 'retailer': ['Retailer1', 'Retailer2'], 'product_code': ['ProductCode1', 'ProductCode2'], 'upc_ean': ['1', '2'], } def test_get_filters_with_subaccount(): """Test getting the filter values with a sub-account.""" vendor_id = 1 subaccount_id = 2 results = USPhysicalRetailerView.filter(vendor_id, subaccount_id) assert results.message == { 'artist': ['Artist2'], 'product_name': ['ProductName2'], 'product_type': ['CD2'], 'sub_label': ['SubLabel2'], 'retailer': ['Retailer2'], 'product_code': ['ProductCode2'], 'upc_ean': ['2'], }