"""TSV Parser tests.""" from oto import response from product_configuration.models import supply_chain from product_configuration.supply_chain import supply_chain_configuration_schemas as config_schema # noqa def test_parse(proper_supply_chain_configurations, mock_tsv_path): """Test parsing of tsv rows to list of dicts.""" result = supply_chain.parse(mock_tsv_path) assert result == proper_supply_chain_configurations def test_get_supply_chain_path_exists(): """Test retrieving path of supply chain data by supply chain id.""" result_path = supply_chain.get_supply_chain_path(1) assert 'gras.tsv' in result_path def test_get_configurations( proper_supply_chain_configurations, mocker, mock_tsv_path): """Test retrieving configurations list with a supply chain id.""" mocker.patch.dict( supply_chain.SUPPLY_CHAIN_MAPPING, {1: mock_tsv_path}, clear=True) result = supply_chain.get_configurations(1) assert result.status == 200 assert result.message == proper_supply_chain_configurations def test_get_configuration_schemas(): """Test retrieving supply chains configuration schema.""" result = supply_chain.get_configuration_schemas() assert result.status == 200 assert result.message == config_schema.SUPPLY_CHAIN_CONFIGURATION_SCHEMAS def test_is_supply_chain_id_valid_is_valid( proper_supply_chain_configurations, mocker, mock_tsv_path): """Test validity of supply chain id against supply chain mapping.""" mocker.patch.dict( supply_chain.SUPPLY_CHAIN_MAPPING, {1: mock_tsv_path}, clear=True) is_valid = supply_chain.is_supply_chain_id_valid(1) assert is_valid def test_is_supply_chain_id_valid_invalid( proper_supply_chain_configurations, mocker, mock_tsv_path): """Test validity of supply chain id against supply chain mapping.""" mocker.patch.dict( supply_chain.SUPPLY_CHAIN_MAPPING, {1: mock_tsv_path}, clear=True) is_valid = supply_chain.is_supply_chain_id_valid(1000) assert not is_valid def test_get_configuration_by_distribution_format_success( proper_supply_chain_configurations, mocker): """Test retrieving a configuration by distribution_format_id.""" mocker.patch.object( supply_chain, 'get_configurations', return_value=response.Response( message=proper_supply_chain_configurations)) mocker.patch.object( supply_chain, 'is_supply_chain_id_valid', return_value=True) supply_chain_id, distribution_format_id = (1, 1) configuration = supply_chain.get_configuration_by_distribution_format( supply_chain_id, distribution_format_id) assert configuration.status == 200 assert configuration.message == proper_supply_chain_configurations[0] def test_get_configuration_by_distribution_format_failure( proper_supply_chain_configurations, mocker): """Test retrieving a configuration by distribution_format_id.""" mocker.patch.object( supply_chain, 'get_configurations', return_value=response.Response( message=proper_supply_chain_configurations)) mocker.patch.object( supply_chain, 'is_supply_chain_id_valid', return_value=True) supply_chain_id, distribution_format_id = (1, 100) configuration = supply_chain.get_configuration_by_distribution_format( supply_chain_id, distribution_format_id) assert configuration.status == 404