@@ -293,6 +293,21 @@ public void testValidateEmbeddingModelStateDeployed() {
293293        verify (booleanListener ).onResponse (true );
294294    }
295295
296+     @ Test 
297+     public  void  testValidateEmbeddingModelStatePartiallyDeployed () {
298+         when (mlModel .getModelState ()).thenReturn (MLModelState .PARTIALLY_DEPLOYED );
299+         
300+         doAnswer (invocation  -> {
301+             ActionListener <MLModel > listener  = invocation .getArgument (1 );
302+             listener .onResponse (mlModel );
303+             return  null ;
304+         }).when (mlModelManager ).getModel (eq ("model-123" ), any ());
305+ 
306+         helper .validateEmbeddingModelState ("model-123" , FunctionName .TEXT_EMBEDDING , booleanListener );
307+ 
308+         verify (booleanListener ).onResponse (true );
309+     }
310+ 
296311    @ Test 
297312    public  void  testValidateEmbeddingModelStateNotDeployed () {
298313        when (mlModel .getModelState ()).thenReturn (MLModelState .REGISTERED );
@@ -311,8 +326,46 @@ public void testValidateEmbeddingModelStateNotDeployed() {
311326        assertTrue (exceptionCaptor .getValue ().getMessage ().contains ("DEPLOYED" ));
312327    }
313328
329+     @ Test 
330+     public  void  testValidateEmbeddingModelStateDeploying () {
331+         when (mlModel .getModelState ()).thenReturn (MLModelState .DEPLOYING );
332+         
333+         doAnswer (invocation  -> {
334+             ActionListener <MLModel > listener  = invocation .getArgument (1 );
335+             listener .onResponse (mlModel );
336+             return  null ;
337+         }).when (mlModelManager ).getModel (eq ("model-123" ), any ());
338+ 
339+         helper .validateEmbeddingModelState ("model-123" , FunctionName .TEXT_EMBEDDING , booleanListener );
340+ 
341+         ArgumentCaptor <Exception > exceptionCaptor  = ArgumentCaptor .forClass (Exception .class );
342+         verify (booleanListener ).onFailure (exceptionCaptor .capture ());
343+         assertTrue (exceptionCaptor .getValue () instanceof  IllegalStateException );
344+         assertTrue (exceptionCaptor .getValue ().getMessage ().contains ("DEPLOYED" ));
345+     }
346+ 
314347    @ Test 
315348    public  void  testValidateEmbeddingModelStateRemoteModel () {
349+         // Set up a model that has REMOTE algorithm but any state (e.g., REGISTERED) 
350+         when (mlModel .getAlgorithm ()).thenReturn (FunctionName .REMOTE );
351+         when (mlModel .getModelState ()).thenReturn (MLModelState .REGISTERED );
352+         
353+         doAnswer (invocation  -> {
354+             ActionListener <MLModel > listener  = invocation .getArgument (1 );
355+             listener .onResponse (mlModel );
356+             return  null ;
357+         }).when (mlModelManager ).getModel (eq ("model-123" ), any ());
358+ 
359+         // Pass TEXT_EMBEDDING as modelType to avoid early return, but model itself is REMOTE 
360+         helper .validateEmbeddingModelState ("model-123" , FunctionName .TEXT_EMBEDDING , booleanListener );
361+         
362+         verify (booleanListener ).onResponse (true );
363+         verify (mlModelManager ).getModel (eq ("model-123" ), any ());
364+     }
365+ 
366+     @ Test 
367+     public  void  testValidateEmbeddingModelStateRemoteModelTypeEarlyReturn () {
368+         // Test the early return path when modelType itself is REMOTE 
316369        helper .validateEmbeddingModelState ("remote-model" , FunctionName .REMOTE , booleanListener );
317370        verify (booleanListener ).onResponse (true );
318371        verify (mlModelManager , never ()).getModel (any (), any ());
0 commit comments