@@ -3735,6 +3735,64 @@ defmodule Lightning.AiAssistantTest do
37353735 assert is_nil ( assistant_msg . job_id )
37363736 end
37373737
3738+ test "handles resolve_job_from_key with nil workflow_id" , % {
3739+ user: user ,
3740+ project: project
3741+ } do
3742+ # Session without a workflow (workflow_id is nil)
3743+ session =
3744+ insert ( :chat_session ,
3745+ user: user ,
3746+ project: project ,
3747+ workflow: nil ,
3748+ session_type: "workflow_template" ,
3749+ meta: % {
3750+ "message_options" => % {
3751+ "use_global_assistant" => true ,
3752+ "page" => "workflows/test/Some-job"
3753+ }
3754+ }
3755+ )
3756+
3757+ { :ok , session } =
3758+ AiAssistant . save_message ( session , % {
3759+ role: :user ,
3760+ content: "fix code" ,
3761+ user: user
3762+ } )
3763+
3764+ complete_payload =
3765+ Jason . encode! ( % {
3766+ "response" => "Fixed" ,
3767+ "attachments" => [
3768+ % {
3769+ "type" => "job_code" ,
3770+ "content" => "fn(state => state);" ,
3771+ "job_key" => "Some-job"
3772+ }
3773+ ] ,
3774+ "usage" => % { } ,
3775+ "meta" => % { }
3776+ } )
3777+
3778+ sse_stream = [ % { event: "complete" , data: complete_payload } ]
3779+
3780+ Mox . expect ( Lightning.Tesla.Mock , :call , fn _env , _opts ->
3781+ { :ok , % Tesla.Env { status: 200 , body: sse_stream } }
3782+ end )
3783+
3784+ { :ok , updated_session } =
3785+ AiAssistant . query_global_stream ( session , "fix code" ,
3786+ workflow_yaml: "name: test" ,
3787+ page: "workflows/test/Some-job"
3788+ )
3789+
3790+ assistant_msg = List . last ( updated_session . messages )
3791+ assert assistant_msg . code == "fn(state => state);"
3792+ # workflow_id is nil, so job can't be resolved
3793+ assert is_nil ( assistant_msg . job_id )
3794+ end
3795+
37383796 test "handles non-list attachments" , % {
37393797 user: user ,
37403798 project: project ,
0 commit comments