"""Test field manager.""" import pytest from sony_metadata import response from sony_metadata.models import field_manager @pytest.mark.parametrize('vendor_id', [0, 'abc', None]) def test_not_found_vendor_id(db_fixture, vendor_id): """Test HTTP 404 code returned when vendor_id not found in db.""" vendor_labels_response = field_manager.get_vendor_labels(vendor_id) assert isinstance(vendor_labels_response, response.Response) assert not vendor_labels_response assert vendor_labels_response.status == 404 @pytest.mark.parametrize('subaccount_id', [0, 'abc', None]) def test_not_found_subaccount_id(db_fixture, subaccount_id): """Test HTTP 404 code returned when subaccount_id not found in db.""" subaccount_labels_response = field_manager.get_subaccount_labels( subaccount_id) assert isinstance(subaccount_labels_response, response.Response) assert not subaccount_labels_response assert subaccount_labels_response.status == 404 def test_get_vendor_labels(db_fixture): """Test that model returns expected Response message based on db fixtures.""" expected_label_messages = { 1: { 'vendor_id': 1, 'financial_label_code': 'F848', 'financial_label_name': 'Silver Arrow Record1', 'rep_owner_code': 'F846', 'rep_owner_name': 'Silver Arrow Record2', 'gras_imprint_code': 'AAAA4042', 'gras_imprint_name': 'Silver Arrow Record3', 'sap_profit_center_code': 'SAP001', 'sap_profit_center_name': 'Silver Arrow Record4' }, 2: { 'vendor_id': 2, 'financial_label_code': 'Cooking Vinyl/MRI', 'financial_label_name': 'I705', 'rep_owner_code': None, 'rep_owner_name': None, 'gras_imprint_code': None, 'gras_imprint_name': None, 'sap_profit_center_code': None, 'sap_profit_center_name': None } } for key, message in expected_label_messages.items(): vendor_labels_response = field_manager.get_vendor_labels(key) expected_response = response.Response(message) assert isinstance(vendor_labels_response, response.Response) assert vendor_labels_response # todo(jpenner): update Response to support comparison assert vendor_labels_response.__dict__ == expected_response.__dict__ def test_get_subaccount_labels(db_fixture): """Test that model returns expected Response message based on db fixtures.""" expected_label_messages = { 1: { 'subaccount_id': 1, 'vendor_id': 21899, 'financial_label_code': 'F432', 'financial_label_name': 'Camera Record1', 'rep_owner_code': 'F432', 'rep_owner_name': 'Camera Record2', 'gras_imprint_code': 'AAAA3817', 'gras_imprint_name': 'Camera Record3', 'sap_profit_center_code': 'SAP002', 'sap_profit_center_name': 'Camera Record4' }, 2: { 'subaccount_id': 2, 'vendor_id': 21899, 'financial_label_code': 'Megaforce +', 'financial_label_name': 'G913', 'rep_owner_code': None, 'rep_owner_name': None, 'gras_imprint_code': None, 'gras_imprint_name': None, 'sap_profit_center_code': None, 'sap_profit_center_name': None } } for key, message in expected_label_messages.items(): subaccount_labels_response = field_manager.get_subaccount_labels(key) expected_response = response.Response(message) assert isinstance(subaccount_labels_response, response.Response) assert subaccount_labels_response # todo(jpenner): update Response to support comparison assert (subaccount_labels_response.__dict__ == expected_response.__dict__) def test_add_vendor_metadata(db_fixture): """Test that insert returns expected Response after adding the record.""" data = {'financial_label_code': 'Megaforce +', 'financial_label_name': 'G913', 'rep_owner_code': None, 'rep_owner_name': None, 'gras_imprint_code': None, 'gras_imprint_name': None, 'sap_profit_center_code': None, 'sap_profit_center_name': None} field_mgr_response = field_manager.add_update_vendor_metadata(7123, data) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response def test_update_vendor_metadata(db_fixture): """Test that update returns expected Response after updating model.""" data = {'financial_label_code': 'Megaforce +', 'financial_label_name': 'G913', 'rep_owner_code': None, 'rep_owner_name': None, 'gras_imprint_code': None, 'gras_imprint_name': None, 'sap_profit_center_code': None, 'sap_profit_center_name': None} field_mgr_response = field_manager.add_update_vendor_metadata(7123, data) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response.status == 200 data = {'financial_label_code': 'Megaforces', 'financial_label_name': 'G914', 'rep_owner_code': None, 'rep_owner_name': None, 'gras_imprint_code': 'Test123', 'gras_imprint_name': None, 'sap_profit_center_code': 'Test456', 'sap_profit_center_name': None} updated_response = field_manager.add_update_vendor_metadata(7123, data) assert isinstance(updated_response, response.Response) assert updated_response def test_delete_vendor_metadata(db_fixture): """Test that deletion returns expected Response after adding the record.""" data = {'financial_label_code': '', 'financial_label_name': '', 'rep_owner_code': '', 'rep_owner_name': '', 'gras_imprint_code': '', 'gras_imprint_name': '', 'sap_profit_center_code': '', 'sap_profit_center_name': ''} field_mgr_response = field_manager.add_update_vendor_metadata(7123, data) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response def test_update_missing_fields_vendor_metadata(db_fixture): """Test that insert returns expected Response after adding the record.""" data = {'financial_label_code': '', 'financial_label_name': 'test123', 'rep_owner_code': '', 'rep_owner_name': '', 'gras_imprint_code': '', 'gras_imprint_name': '', 'sap_profit_center_code': '', 'sap_profit_center_name': ''} field_mgr_response = field_manager.add_update_vendor_metadata(7123, data) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response def test_delete_vendor_from_db_metadata(db_fixture): """Test that deletion returns expected Response after deleting the record.""" rec_exists = field_manager.get_vendor_labels(1) assert rec_exists.status == 200 field_mgr_response = field_manager.delete_vendor_metadata(1) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response.status == 200 rec_exists = field_manager.get_vendor_labels(1) assert rec_exists.status == 404 def test_delete_vendor_with_subaccount_from_db_metadata(db_fixture): """Test that deletion returns expected Response after deleting the record.""" rec_exists = field_manager.get_subaccount_labels(1) assert rec_exists.status == 200 field_mgr_response = field_manager.delete_vendor_metadata(21899, 1) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response.status == 200 rec_exists = field_manager.get_subaccount_labels(1) assert rec_exists.status == 404 def test_delete_non_existent_vendor_subaccount_from_db_metadata(db_fixture): """Test that deletion returns expected Response after deleting the record.""" field_mgr_response = field_manager.delete_vendor_metadata(111, 1) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response.status == 200 field_mgr_response = field_manager.delete_vendor_metadata(111) assert isinstance(field_mgr_response, response.Response) assert field_mgr_response.status == 200