From f182242dcd5e17e0720ca30b1d69d05b0f02675e Mon Sep 17 00:00:00 2001 From: Rod Johnson Date: Thu, 4 Sep 2025 10:54:51 +1000 Subject: [PATCH 1/3] Integration test --- pom.xml | 7 +++ .../WriteAndReviewAgentIntegrationTest.java | 45 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java diff --git a/pom.xml b/pom.xml index 8179704..2f0b759 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,13 @@ ${embabel-agent.version} + + com.embabel.agent + embabel-agent-test + ${embabel-agent.version} + test + + diff --git a/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java b/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java new file mode 100644 index 0000000..2b40c36 --- /dev/null +++ b/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java @@ -0,0 +1,45 @@ +package com.embabel.template.agent; + +import com.embabel.agent.api.common.autonomy.AgentInvocation; +import com.embabel.agent.domain.io.UserInput; +import com.embabel.agent.testing.integration.EmbabelMockitoIntegrationTest; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * Use framework superclass to test the complete workflow of writing and reviewing a story. + * This will run under Spring Boot against an AgentPlatform instance + * that has loaded all our agents. + */ +class WriteAndReviewAgentIntegrationTest extends EmbabelMockitoIntegrationTest { + + @Test + void shouldExecuteCompleteWorkflow() { + var input = new UserInput("Write about artificial intelligence"); + + var story = new Story("AI will transform our world..."); + var reviewedStory = new ReviewedStory(story, "Excellent exploration of AI themes.", Personas.REVIEWER); + + whenCreateObject(prompt -> prompt.contains("Craft a short story"), Story.class) + .thenReturn(story); + + // The second call uses generateText + whenGenerateText(prompt -> prompt.contains("You will be given a short story to review")) + .thenReturn(reviewedStory.review()); + + var invocation = AgentInvocation.create(agentPlatform, ReviewedStory.class); + var reviewedStoryResult = invocation.invoke(input); + + assertNotNull(reviewedStoryResult); + assertTrue(reviewedStoryResult.getContent().contains(story.text()), + "Expected story content to be present: " + reviewedStoryResult.getContent()); + assertEquals(reviewedStory, reviewedStoryResult, + "Expected review to match: " + reviewedStoryResult); + + verifyCreateObjectMatching(prompt -> prompt.contains("Craft a short story"), Story.class, + llm -> llm.getLlm().getTemperature() == 0.7 && llm.getToolGroups().isEmpty()); + verifyGenerateTextMatching(prompt -> prompt.contains("You will be given a short story to review")); + verifyNoMoreInteractions(); + } +} From 92230e29306b288d9b6aec776a37993086de8465 Mon Sep 17 00:00:00 2001 From: alexheifetz Date: Wed, 3 Sep 2025 22:46:10 -0400 Subject: [PATCH 2/3] No need to include embabel-starter-agent. --- pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pom.xml b/pom.xml index 2f0b759..62433dd 100644 --- a/pom.xml +++ b/pom.xml @@ -24,12 +24,6 @@ - - com.embabel.agent - embabel-agent-starter - ${embabel-agent.version} - - com.embabel.agent embabel-agent-starter-shell From 7f4de75c995b996cde8937dada9b1d950df8bd5c Mon Sep 17 00:00:00 2001 From: alexheifetz Date: Wed, 3 Sep 2025 22:47:52 -0400 Subject: [PATCH 3/3] Turn off interactive shell mode. --- .../template/agent/WriteAndReviewAgentIntegrationTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java b/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java index 2b40c36..5cc324f 100644 --- a/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java +++ b/src/test/java/com/embabel/template/agent/WriteAndReviewAgentIntegrationTest.java @@ -4,6 +4,7 @@ import com.embabel.agent.domain.io.UserInput; import com.embabel.agent.testing.integration.EmbabelMockitoIntegrationTest; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.BeforeAll; import static org.junit.jupiter.api.Assertions.*; @@ -14,6 +15,12 @@ */ class WriteAndReviewAgentIntegrationTest extends EmbabelMockitoIntegrationTest { + @BeforeAll + static void setUp() { + // Set shell configuration to non-interactive mode + System.setProperty("embabel.agent.shell.interactive.enabled", "false"); + } + @Test void shouldExecuteCompleteWorkflow() { var input = new UserInput("Write about artificial intelligence");