from unittest.mock import MagicMock, patch import pytest from core.rag.datasource.vdb.oceanbase.oceanbase_vector import ( OceanBaseVector, OceanBaseVectorConfig, ) from tests.integration_tests.vdb.__mock.tcvectordb import setup_tcvectordb_mock from tests.integration_tests.vdb.test_vector_store import ( AbstractVectorTest, get_example_text, setup_mock_redis, ) @pytest.fixture def oceanbase_vector(): return OceanBaseVector( "dify_test_collection", config=OceanBaseVectorConfig( host="127.0.0.1", port="2881", user="root@test", database="test", password="test", ), ) class OceanBaseVectorTest(AbstractVectorTest): def __init__(self, vector: OceanBaseVector): super().__init__() self.vector = vector def search_by_vector(self): hits_by_vector = self.vector.search_by_vector(query_vector=self.example_embedding) assert len(hits_by_vector) == 0 def search_by_full_text(self): hits_by_full_text = self.vector.search_by_full_text(query=get_example_text()) assert len(hits_by_full_text) == 0 def text_exists(self): exist = self.vector.text_exists(self.example_doc_id) assert exist == True def get_ids_by_metadata_field(self): ids = self.vector.get_ids_by_metadata_field(key="document_id", value=self.example_doc_id) assert len(ids) == 0 @pytest.fixture def setup_mock_oceanbase_client(): with patch("core.rag.datasource.vdb.oceanbase.oceanbase_vector.ObVecClient", new_callable=MagicMock) as mock_client: yield mock_client @pytest.fixture def setup_mock_oceanbase_vector(oceanbase_vector): with patch.object(oceanbase_vector, "_client"): yield oceanbase_vector def test_oceanbase_vector( setup_mock_redis, setup_mock_oceanbase_client, setup_mock_oceanbase_vector, oceanbase_vector, ): OceanBaseVectorTest(oceanbase_vector).run_all_tests()