@@ -306,21 +306,24 @@ def system_prompt
306306
307307      fab! ( :llm_model )  {  Fabricate ( :fake_model )  } 
308308
309-       it  "will run the question consolidator"  do 
309+       fab! ( :custom_ai_persona )  do 
310+         Fabricate ( 
311+           :ai_persona , 
312+           name : "custom" , 
313+           rag_conversation_chunks : 3 , 
314+           allowed_group_ids : [ Group ::AUTO_GROUPS [ :trust_level_0 ] ] , 
315+           question_consolidator_llm_id : llm_model . id , 
316+         ) 
317+       end 
318+ 
319+       before  do 
310320        context_embedding  =  vector_def . dimensions . times . map  {  rand ( -1.0 ...1.0 )  } 
311321        EmbeddingsGenerationStubs . hugging_face_service ( consolidated_question ,  context_embedding ) 
312322
313-         custom_ai_persona  = 
314-           Fabricate ( 
315-             :ai_persona , 
316-             name : "custom" , 
317-             rag_conversation_chunks : 3 , 
318-             allowed_group_ids : [ Group ::AUTO_GROUPS [ :trust_level_0 ] ] , 
319-             question_consolidator_llm_id : llm_model . id , 
320-           ) 
321- 
322323        UploadReference . ensure_exist! ( target : custom_ai_persona ,  upload_ids : [ upload . id ] ) 
324+       end 
323325
326+       it  "will run the question consolidator"  do 
324327        custom_persona  = 
325328          DiscourseAi ::Personas ::Persona . find_by ( id : custom_ai_persona . id ,  user : user ) . new 
326329
@@ -343,6 +346,36 @@ def system_prompt
343346        expect ( message ) . to  include ( "the time is 1" ) 
344347        expect ( message ) . to  include ( "in france?" ) 
345348      end 
349+ 
350+       context  "when there are messages with uploads"  do 
351+         let ( :image100x100 )  {  plugin_file_from_fixtures ( "100x100.jpg" )  } 
352+         let ( :image_upload )  do 
353+           UploadCreator . new ( image100x100 ,  "image.jpg" ) . create_for ( Discourse . system_user . id ) 
354+         end 
355+ 
356+         it  "the question consolidator works"  do 
357+           custom_persona  = 
358+             DiscourseAi ::Personas ::Persona . find_by ( id : custom_ai_persona . id ,  user : user ) . new 
359+ 
360+           context . messages  =  [ 
361+             {  content : "Tell me the time" ,  type : :user  } , 
362+             {  content : "the time is 1" ,  type : :model  } , 
363+             {  content : [ "in france?" ,  {  upload_id : image_upload . id  } ] ,  type : :user  } , 
364+           ] 
365+ 
366+           DiscourseAi ::Completions ::Endpoints ::Fake . with_fake_content ( consolidated_question )  do 
367+             custom_persona . craft_prompt ( context ) . messages . first [ :content ] 
368+           end 
369+ 
370+           message  = 
371+             DiscourseAi ::Completions ::Endpoints ::Fake . last_call [ :dialect ] . prompt . messages . last [ 
372+               :content 
373+             ] 
374+           expect ( message ) . to  include ( "Tell me the time" ) 
375+           expect ( message ) . to  include ( "the time is 1" ) 
376+           expect ( message ) . to  include ( "in france?" ) 
377+         end 
378+       end 
346379    end 
347380
348381    context  "when a persona has RAG uploads"  do 
0 commit comments