22from unittest .mock import MagicMock
33
44import dify_plugin
5+ from dify_plugin .core .entities .plugin .request import ModelInvokeTextEmbeddingRequest
56from dify_plugin .core .plugin_executor import PluginExecutor
67from dify_plugin .core .runtime import Session
78from dify_plugin .core .session_context import get_current_session
9+ from dify_plugin .entities .model import EmbeddingInputType
810from dify_plugin .interfaces .model .large_language_model import LargeLanguageModel
911from dify_plugin .interfaces .model .text_embedding_model import TextEmbeddingModel
1012
@@ -36,15 +38,18 @@ def _llm_data() -> MagicMock:
3638 return data
3739
3840
39- def _text_embedding_data () -> MagicMock :
40- data = MagicMock ()
41- data .provider = "provider"
42- data .model_type = "text-embedding"
43- data .model = "model"
44- data .credentials = {}
45- data .texts = ["hello" ]
46- data .user_id = "user"
47- return data
41+ def _text_embedding_data () -> ModelInvokeTextEmbeddingRequest :
42+ return ModelInvokeTextEmbeddingRequest .model_validate ({
43+ "type" : "model" ,
44+ "action" : "invoke_text_embedding" ,
45+ "user_id" : "user" ,
46+ "provider" : "provider" ,
47+ "model_type" : "text-embedding" ,
48+ "model" : "model" ,
49+ "credentials" : {},
50+ "texts" : ["hello" ],
51+ "input_type" : "query" ,
52+ })
4853
4954
5055def test_get_current_session_is_public () -> None :
@@ -71,10 +76,10 @@ def stream() -> Generator[str, None, None]:
7176 assert get_current_session () is None
7277
7378
74- def test_text_embedding_exposes_session_during_invoke () -> None :
79+ def test_text_embedding_forwards_input_type_and_exposes_session () -> None :
7580 seen : list [Session | None ] = []
7681
77- def invoke (* _args : object ) -> list [str ]:
82+ def invoke (* _args : object , ** _kwargs : object ) -> list [str ]:
7883 seen .append (get_current_session ())
7984 return ["embedding" ]
8085
@@ -87,3 +92,10 @@ def invoke(*_args: object) -> list[str]:
8792 assert seen [0 ] is not None
8893 assert seen [0 ].app_id == "app-1"
8994 assert get_current_session () is None
95+ model .invoke .assert_called_once_with (
96+ "model" ,
97+ {},
98+ ["hello" ],
99+ user = "user" ,
100+ input_type = EmbeddingInputType .QUERY ,
101+ )
0 commit comments