"""Test validate contract.""" from unittest.mock import patch from adjustment.validate.contract import Contract @patch('adjustment.validate.contract.DataClass') def test_get_product_term_contract_by_upc(mock_data_class, mock_contract_product_terms): """Test get_product_term_contract_by_upc method.""" contract_id = '533565' upc = '196626383143' mock_data_class.product_terms = mock_contract_product_terms contract = Contract(contract_id, upc) result = contract.get_product_term_contract_by_upc(upc) assert result == mock_contract_product_terms[0] @patch('adjustment.validate.contract.DataClass') def test_get_product_term_contract_upc_not_exist(mock_data_class, mock_contract_product_terms): """Test get_product_term_contract_by_upc method when upc doesn't exist.""" contract_id = '533565' upc = '196626383167' mock_data_class.product_terms = mock_contract_product_terms contract = Contract(contract_id, upc) result = contract.get_product_term_contract_by_upc(upc) assert result == False @patch('adjustment.validate.contract.DataClass') def test_check_contract_has_upc_attached(mock_data_class, mock_contract_product_terms): """Test check_contract_has_upc_attached method.""" contract_id = '533565' upc = '196626383143' mock_data_class.product_terms = mock_contract_product_terms contract = Contract(contract_id, upc) result = contract.check_contract_has_upc_attached() assert result == mock_contract_product_terms[0] @patch('adjustment.validate.contract.DataClass') def test_check_contract_has_upc_attached_ignore_leading_zero( mock_data_class, mock_contract_product_terms ): """Test check_contract_has_upc_attached_ignore_leading_zero method.""" contract_id = '533565' upc = '0196626383143' mock_data_class.product_terms = mock_contract_product_terms contract = Contract(contract_id, upc) result = contract.check_contract_has_upc_attached_ignore_leading_zero() assert result == mock_contract_product_terms[0] @patch('adjustment.validate.contract.DataClass') def test_check_contract_has_upc_attached_all_ignore_leading_zero( mock_data_class, mock_contract_product_terms ): """Test check_contract_has_upc_attached_all_ignore_leading_zero method.""" contract_id = '533565' upc = '000196626383143' mock_data_class.product_terms = mock_contract_product_terms contract = Contract(contract_id, upc) result = contract.check_contract_has_upc_attached_all_ignore_leading_zero() assert result == mock_contract_product_terms[0] @patch('adjustment.validate.contract.DataClass') def test_check_upc_display_upc_mapping( mock_data_class, mock_upcs, mock_contract_product_terms ): """Test check_upc_display_upc_mapping method.""" contract_id = '533565' upc = '0028948107902' mock_data_class.upcs = mock_upcs mock_data_class.product_terms = mock_contract_product_terms contract = Contract(contract_id, upc) result = contract.check_upc_display_upc_mapping() assert result == mock_contract_product_terms[3] @patch('adjustment.validate.contract.DataClass') def test_get_label_term_for_contract(mock_data_class, mock_contract_label_terms): """Test get_label_term_for_contract method.""" contract_id = '533565' upc = '196626383141' mock_data_class.label_terms = mock_contract_label_terms contract = Contract(contract_id, upc) result = contract.get_label_term_for_contract() assert result == ['68952'] @patch('adjustment.validate.contract.DataClass') def test_check_contract_label_owns_upc(mock_data_class, mock_contract_label_terms): """Test check_contract_label_owns_upc method.""" contract_id = '533565' upc = '196626383141' mock_data_class.label_terms = mock_contract_label_terms mock_data_class.upc_labels = {'196626383141': '68952'} contract = Contract(contract_id, upc) result = contract.check_contract_label_owns_upc() assert result == True @patch('adjustment.validate.contract.DataClass') def test_check_contract_label_owns_upc_labels_not_exist(mock_data_class): """Test check_contract_label_owns_upc method when label term doesn't exist.""" contract_id = '533565' upc = '196626383141' mock_data_class.label_terms = [] contract = Contract(contract_id, upc) result = contract.check_contract_label_owns_upc() assert result == False @patch('adjustment.validate.contract.ARMysqlConnection') @patch('adjustment.validate.contract.DataClass') def test_check_label_ows_upc(mock_data_class, mock_ar_db_connection, mock_upc_labels): """Test check_label_ows_upc method if upc doesn't exist in data class.""" contract_id = '23567' label_id = '74211' upc = '20000000137103' mock_data_class.upc_labels = dict() mock_ar_db_connection.execute_sql_query.return_value = mock_upc_labels contract = Contract(contract_id, upc) result = contract.check_label_ows_upc(label_id, upc) assert result == True mock_ar_db_connection.execute_sql_query.assert_called_once() @patch('adjustment.validate.contract.ARMysqlConnection') @patch('adjustment.validate.contract.DataClass') def test_check_label_ows_upc_exist(mock_data_class, mock_ar_db_connection): """Test check_label_ows_upc method when upc exist in data class.""" contract_id = '23567' label_id = '74211' upc = '20000000137103' mock_data_class.upc_labels = {'20000000137103': '74211'} contract = Contract(contract_id, upc) result = contract.check_label_ows_upc(label_id, upc) assert result == True mock_ar_db_connection.execute_sql_query.assert_not_called() @patch('adjustment.validate.contract.ARMysqlConnection') @patch('adjustment.validate.contract.DataClass') def test_label_owns_upc_ignore_leading_zero( mock_data_class, mock_ar_db_connection, mock_contract_label_terms ): """Test label_owns_upc_ignore_leading_zero method.""" contract_id = '533565' label_id = '68952' upc = '0196626383141' mock_data_class.label_terms = mock_contract_label_terms mock_data_class.upc_labels = {'196626383141': '68952'} contract = Contract(contract_id, upc) result = contract.label_owns_upc_ignore_leading_zero(label_id, upc) assert result == True mock_ar_db_connection.execute_sql_query.assert_not_called() @patch('adjustment.validate.contract.ARMysqlConnection') @patch('adjustment.validate.contract.DataClass') def test_label_owns_upc_ignore_leading_zero_upc_not_exist( mock_data_class, mock_ar_db_connection, mock_contract_label_terms ): """Test label_owns_upc_ignore_leading_zero method for upc that doesn't exist in AR db.""" contract_id = '533565' label_id = '68952' upc = '00196626383141' mock_data_class.label_terms = mock_contract_label_terms mock_ar_db_connection.execute_sql_query.return_value = [] mock_data_class.upc_labels = {'196626383141': '68952'} contract = Contract(contract_id, upc) result = contract.label_owns_upc_ignore_leading_zero(label_id, upc) assert result == False mock_ar_db_connection.execute_sql_query.assert_called_once()