|  | @@ -1,4 +1,5 @@
 | 
	
		
			
				|  |  |  import os
 | 
	
		
			
				|  |  | +from unittest.mock import MagicMock
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import pytest
 | 
	
		
			
				|  |  |  from _pytest.monkeypatch import MonkeyPatch
 | 
	
	
		
			
				|  | @@ -10,26 +11,31 @@ from pymochow.model.table import Table
 | 
	
		
			
				|  |  |  from requests.adapters import HTTPAdapter
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +class AttrDict(dict):
 | 
	
		
			
				|  |  | +    def __getattr__(self, item):
 | 
	
		
			
				|  |  | +        return self.get(item)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  class MockBaiduVectorDBClass:
 | 
	
		
			
				|  |  |      def mock_vector_db_client(
 | 
	
		
			
				|  |  |          self,
 | 
	
		
			
				|  |  |          config=None,
 | 
	
		
			
				|  |  |          adapter: HTTPAdapter = None,
 | 
	
		
			
				|  |  |      ):
 | 
	
		
			
				|  |  | -        self._conn = None
 | 
	
		
			
				|  |  | -        self._config = None
 | 
	
		
			
				|  |  | +        self.conn = MagicMock()
 | 
	
		
			
				|  |  | +        self._config = MagicMock()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def list_databases(self, config=None) -> list[Database]:
 | 
	
		
			
				|  |  |          return [
 | 
	
		
			
				|  |  |              Database(
 | 
	
		
			
				|  |  | -                conn=self._conn,
 | 
	
		
			
				|  |  | +                conn=self.conn,
 | 
	
		
			
				|  |  |                  database_name="dify",
 | 
	
		
			
				|  |  |                  config=self._config,
 | 
	
		
			
				|  |  |              )
 | 
	
		
			
				|  |  |          ]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def create_database(self, database_name: str, config=None) -> Database:
 | 
	
		
			
				|  |  | -        return Database(conn=self._conn, database_name=database_name, config=config)
 | 
	
		
			
				|  |  | +        return Database(conn=self.conn, database_name=database_name, config=config)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def list_table(self, config=None) -> list[Table]:
 | 
	
		
			
				|  |  |          return []
 | 
	
	
		
			
				|  | @@ -88,16 +94,18 @@ class MockBaiduVectorDBClass:
 | 
	
		
			
				|  |  |          read_consistency=ReadConsistency.EVENTUAL,
 | 
	
		
			
				|  |  |          config=None,
 | 
	
		
			
				|  |  |      ):
 | 
	
		
			
				|  |  | -        return {
 | 
	
		
			
				|  |  | -            "row": {
 | 
	
		
			
				|  |  | -                "id": "doc_id_001",
 | 
	
		
			
				|  |  | -                "vector": [0.23432432, 0.8923744, 0.89238432],
 | 
	
		
			
				|  |  | -                "text": "text",
 | 
	
		
			
				|  |  | -                "metadata": {"doc_id": "doc_id_001"},
 | 
	
		
			
				|  |  | -            },
 | 
	
		
			
				|  |  | -            "code": 0,
 | 
	
		
			
				|  |  | -            "msg": "Success",
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        return AttrDict(
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                "row": {
 | 
	
		
			
				|  |  | +                    "id": primary_key.get("id"),
 | 
	
		
			
				|  |  | +                    "vector": [0.23432432, 0.8923744, 0.89238432],
 | 
	
		
			
				|  |  | +                    "text": "text",
 | 
	
		
			
				|  |  | +                    "metadata": '{"doc_id": "doc_id_001"}',
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                "code": 0,
 | 
	
		
			
				|  |  | +                "msg": "Success",
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def delete(self, primary_key=None, partition_key=None, filter=None, config=None):
 | 
	
		
			
				|  |  |          return {"code": 0, "msg": "Success"}
 | 
	
	
		
			
				|  | @@ -111,22 +119,24 @@ class MockBaiduVectorDBClass:
 | 
	
		
			
				|  |  |          read_consistency=ReadConsistency.EVENTUAL,
 | 
	
		
			
				|  |  |          config=None,
 | 
	
		
			
				|  |  |      ):
 | 
	
		
			
				|  |  | -        return {
 | 
	
		
			
				|  |  | -            "rows": [
 | 
	
		
			
				|  |  | -                {
 | 
	
		
			
				|  |  | -                    "row": {
 | 
	
		
			
				|  |  | -                        "id": "doc_id_001",
 | 
	
		
			
				|  |  | -                        "vector": [0.23432432, 0.8923744, 0.89238432],
 | 
	
		
			
				|  |  | -                        "text": "text",
 | 
	
		
			
				|  |  | -                        "metadata": {"doc_id": "doc_id_001"},
 | 
	
		
			
				|  |  | -                    },
 | 
	
		
			
				|  |  | -                    "distance": 0.1,
 | 
	
		
			
				|  |  | -                    "score": 0.5,
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            ],
 | 
	
		
			
				|  |  | -            "code": 0,
 | 
	
		
			
				|  |  | -            "msg": "Success",
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +        return AttrDict(
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                "rows": [
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        "row": {
 | 
	
		
			
				|  |  | +                            "id": "doc_id_001",
 | 
	
		
			
				|  |  | +                            "vector": [0.23432432, 0.8923744, 0.89238432],
 | 
	
		
			
				|  |  | +                            "text": "text",
 | 
	
		
			
				|  |  | +                            "metadata": '{"doc_id": "doc_id_001"}',
 | 
	
		
			
				|  |  | +                        },
 | 
	
		
			
				|  |  | +                        "distance": 0.1,
 | 
	
		
			
				|  |  | +                        "score": 0.5,
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                ],
 | 
	
		
			
				|  |  | +                "code": 0,
 | 
	
		
			
				|  |  | +                "msg": "Success",
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        )
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  MOCK = os.getenv("MOCK_SWITCH", "false").lower() == "true"
 | 
	
	
		
			
				|  | @@ -146,6 +156,7 @@ def setup_baiduvectordb_mock(request, monkeypatch: MonkeyPatch):
 | 
	
		
			
				|  |  |          monkeypatch.setattr(Table, "rebuild_index", MockBaiduVectorDBClass.rebuild_index)
 | 
	
		
			
				|  |  |          monkeypatch.setattr(Table, "describe_index", MockBaiduVectorDBClass.describe_index)
 | 
	
		
			
				|  |  |          monkeypatch.setattr(Table, "delete", MockBaiduVectorDBClass.delete)
 | 
	
		
			
				|  |  | +        monkeypatch.setattr(Table, "query", MockBaiduVectorDBClass.query)
 | 
	
		
			
				|  |  |          monkeypatch.setattr(Table, "search", MockBaiduVectorDBClass.search)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      yield
 |