diff --git a/cognee/tests/unit/modules/ontology/test_ontology_adapter.py b/cognee/tests/unit/modules/ontology/test_ontology_adapter.py index 4757e2595..efb472c1e 100644 --- a/cognee/tests/unit/modules/ontology/test_ontology_adapter.py +++ b/cognee/tests/unit/modules/ontology/test_ontology_adapter.py @@ -331,3 +331,173 @@ def test_rdflib_ontology_resolver_default_matching_strategy(): resolver = RDFLibOntologyResolver() assert isinstance(resolver.matching_strategy, FuzzyMatchingStrategy) + + +def test_get_ontology_resolver_from_env_success(): + """Test get_ontology_resolver_from_env returns correct resolver with valid parameters.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + from cognee.modules.ontology.rdf_xml.RDFLibOntologyResolver import RDFLibOntologyResolver + from cognee.modules.ontology.matching_strategies import FuzzyMatchingStrategy + + resolver = get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="fuzzy", + ontology_file_path="/test/path.owl" + ) + + assert isinstance(resolver, RDFLibOntologyResolver) + assert isinstance(resolver.matching_strategy, FuzzyMatchingStrategy) + assert resolver.ontology_file == "/test/path.owl" + + +def test_get_ontology_resolver_from_env_unsupported_resolver(): + """Test get_ontology_resolver_from_env raises EnvironmentError for unsupported resolver.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env( + ontology_resolver="unsupported", + matching_strategy="fuzzy", + ontology_file_path="/test/path.owl" + ) + + assert "Unsupported ontology resolver: unsupported" in str(exc_info.value) + assert "Supported resolvers are: RdfLib with FuzzyMatchingStrategy" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_unsupported_strategy(): + """Test get_ontology_resolver_from_env raises EnvironmentError for unsupported strategy.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="unsupported", + ontology_file_path="/test/path.owl" + ) + + assert "Unsupported ontology resolver: rdflib" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_empty_file_path(): + """Test get_ontology_resolver_from_env raises EnvironmentError for empty file path.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="fuzzy", + ontology_file_path="" + ) + + assert "Unsupported ontology resolver: rdflib" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_none_file_path(): + """Test get_ontology_resolver_from_env raises EnvironmentError for None file path.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="fuzzy", + ontology_file_path=None + ) + + assert "Unsupported ontology resolver: rdflib" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_empty_resolver(): + """Test get_ontology_resolver_from_env raises EnvironmentError for empty resolver.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env( + ontology_resolver="", + matching_strategy="fuzzy", + ontology_file_path="/test/path.owl" + ) + + assert "Unsupported ontology resolver:" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_empty_strategy(): + """Test get_ontology_resolver_from_env raises EnvironmentError for empty strategy.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="", + ontology_file_path="/test/path.owl" + ) + + assert "Unsupported ontology resolver: rdflib" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_default_parameters(): + """Test get_ontology_resolver_from_env with default empty parameters raises EnvironmentError.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError) as exc_info: + get_ontology_resolver_from_env() + + assert "Unsupported ontology resolver:" in str(exc_info.value) + + +def test_get_ontology_resolver_from_env_case_sensitivity(): + """Test get_ontology_resolver_from_env is case sensitive.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + with pytest.raises(EnvironmentError): + get_ontology_resolver_from_env( + ontology_resolver="RDFLIB", + matching_strategy="fuzzy", + ontology_file_path="/test/path.owl" + ) + + with pytest.raises(EnvironmentError): + get_ontology_resolver_from_env( + ontology_resolver="RdfLib", + matching_strategy="fuzzy", + ontology_file_path="/test/path.owl" + ) + + +def test_get_ontology_resolver_from_env_with_actual_file(): + """Test get_ontology_resolver_from_env works with actual file path.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + from cognee.modules.ontology.rdf_xml.RDFLibOntologyResolver import RDFLibOntologyResolver + from cognee.modules.ontology.matching_strategies import FuzzyMatchingStrategy + + resolver = get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="fuzzy", + ontology_file_path="/path/to/ontology.owl" + ) + + assert isinstance(resolver, RDFLibOntologyResolver) + assert isinstance(resolver.matching_strategy, FuzzyMatchingStrategy) + assert resolver.ontology_file == "/path/to/ontology.owl" + + +def test_get_ontology_resolver_from_env_resolver_functionality(): + """Test that resolver created from env function works correctly.""" + from cognee.modules.ontology.get_default_ontology_resolver import get_ontology_resolver_from_env + + resolver = get_ontology_resolver_from_env( + ontology_resolver="rdflib", + matching_strategy="fuzzy", + ontology_file_path="/test/path.owl" + ) + + resolver.build_lookup() + assert isinstance(resolver.lookup, dict) + + result = resolver.find_closest_match("test", "individuals") + assert result is None # Should return None for non-existent entity + + nodes, relationships, start_node = resolver.get_subgraph("test", "individuals") + assert nodes == [] + assert relationships == [] + assert start_node is None