mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Add next speaker validation test
Agent-Logs-Url: https://github.com/microsoft/agent-framework/sessions/322c9e2d-59bc-42ad-9a1e-f6fd4c866b26 Co-authored-by: lokitoth <6936551+lokitoth@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
Unverified
parent
cd7e8c8822
commit
00a132a095
@@ -142,6 +142,45 @@ public class MagenticOrchestrationTests
|
||||
planEvent.FullTaskLedger.Should().NotBeNull();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task NextSpeaker_Invalid_Triggers_FinalAnswer()
|
||||
{
|
||||
// Arrange: ProgressLedger returns invalid next_speaker
|
||||
List<ChatMessage> factsResponse = CreatePlanResponse("Facts about the task");
|
||||
List<ChatMessage> planResponse = CreatePlanResponse("Step 1: Execute");
|
||||
List<ChatMessage> invalidNextSpeakerLedger = CreateProgressLedgerResponse(
|
||||
isRequestSatisfied: false,
|
||||
isInLoop: false,
|
||||
isProgressBeingMade: true,
|
||||
nextSpeaker: "NonExistentAgent", // Invalid - doesn't match any team member
|
||||
instructionOrQuestion: "Continue");
|
||||
List<ChatMessage> finalAnswer = CreateFinalAnswerResponse("Forced to conclude due to invalid speaker");
|
||||
|
||||
TestReplayAgent manager = new(
|
||||
[factsResponse, planResponse, invalidNextSpeakerLedger, finalAnswer],
|
||||
name: "Manager");
|
||||
TestEchoAgent worker = new(name: "Worker");
|
||||
|
||||
List<WorkflowEvent> collectedEvents = [];
|
||||
|
||||
Workflow workflow = new MagenticWorkflowBuilder(manager)
|
||||
.AddParticipants(worker)
|
||||
.RequirePlanSignoff(false)
|
||||
.Build();
|
||||
|
||||
// Act
|
||||
WorkflowRunResult runResult = await RunMagenticWorkflowAsync(
|
||||
workflow,
|
||||
[new ChatMessage(ChatRole.User, "Do task")],
|
||||
eventCollector: collectedEvents);
|
||||
|
||||
// Assert: Warning should be emitted and final answer prepared
|
||||
collectedEvents.OfType<WorkflowWarningEvent>()
|
||||
.Should().Contain(e => e.Data != null && e.Data.ToString()!.Contains("Invalid next speaker"));
|
||||
runResult.Result.Should().NotBeNull();
|
||||
runResult.Result![0].Text.Should().Contain("Forced to conclude");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ProgressLedger_Updated_Event_Emitted()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user