@@ -1148,3 +1148,65 @@ Hello!
11481148 t .Fatalf ("Failed to execute prompt: %v" , err )
11491149 }
11501150}
1151+
1152+ func TestMultiMessagesRenderPrompt (t * testing.T ) {
1153+ tempDir := t .TempDir ()
1154+
1155+ mockPromptFile := filepath .Join (tempDir , "example.prompt" )
1156+ mockPromptContent := `---
1157+ model: test/chat
1158+ description: A test prompt
1159+ ---
1160+ <<<dotprompt:role:system>>>
1161+
1162+ You are a pirate!
1163+
1164+ <<<dotprompt:role:user>>>
1165+ Hello!
1166+ `
1167+
1168+ if err := os .WriteFile (mockPromptFile , []byte (mockPromptContent ), 0644 ); err != nil {
1169+ t .Fatalf ("Failed to create mock prompt file: %v" , err )
1170+ }
1171+
1172+ prompt := LoadPrompt (registry .New (), tempDir , "example.prompt" , "multi-namespace-roles" )
1173+
1174+ actionOpts , err := prompt .Render (context .Background (), map [string ]any {})
1175+ if err != nil {
1176+ t .Fatalf ("Failed to execute prompt: %v" , err )
1177+ }
1178+
1179+ // Check that actionOpts is not nil
1180+ if actionOpts == nil {
1181+ t .Fatal ("Expected actionOpts to be non-nil" )
1182+ }
1183+
1184+ // Check that we have exactly 2 messages (system and user)
1185+ if len (actionOpts .Messages ) != 2 {
1186+ t .Fatalf ("Expected 2 messages, got %d" , len (actionOpts .Messages ))
1187+ }
1188+
1189+ // Check first message (system role)
1190+ systemMsg := actionOpts .Messages [0 ]
1191+ if systemMsg .Role != RoleSystem {
1192+ t .Errorf ("Expected first message role to be 'system', got '%s'" , systemMsg .Role )
1193+ }
1194+ if len (systemMsg .Content ) == 0 {
1195+ t .Fatal ("Expected system message to have content" )
1196+ }
1197+ if systemMsg .Content [0 ].Text != "You are a pirate!" {
1198+ t .Errorf ("Expected system message text to be 'You are a pirate!', got '%s'" , systemMsg .Content [0 ].Text )
1199+ }
1200+
1201+ // Check second message (user role)
1202+ userMsg := actionOpts .Messages [1 ]
1203+ if userMsg .Role != RoleUser {
1204+ t .Errorf ("Expected second message role to be 'user', got '%s'" , userMsg .Role )
1205+ }
1206+ if len (userMsg .Content ) == 0 {
1207+ t .Fatal ("Expected user message to have content" )
1208+ }
1209+ if userMsg .Content [0 ].Text != "Hello!" {
1210+ t .Errorf ("Expected user message text to be 'Hello!', got '%s'" , userMsg .Content [0 ].Text )
1211+ }
1212+ }
0 commit comments