Skip to content

Commit 4f3aad0

Browse files
authored
Merge pull request #38 from embabel/integration-test
Integration test
2 parents 555dff4 + bffbb53 commit 4f3aad0

2 files changed

Lines changed: 55 additions & 2 deletions

File tree

pom.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@
2626
<!-- Main Dependencies -->
2727
<dependency>
2828
<groupId>com.embabel.agent</groupId>
29-
<artifactId>embabel-agent-starter</artifactId>
29+
<artifactId>embabel-agent-starter-shell</artifactId>
3030
<version>${embabel-agent.version}</version>
3131
</dependency>
3232

3333
<dependency>
3434
<groupId>com.embabel.agent</groupId>
35-
<artifactId>embabel-agent-starter-shell</artifactId>
35+
<artifactId>embabel-agent-test</artifactId>
3636
<version>${embabel-agent.version}</version>
37+
<scope>test</scope>
3738
</dependency>
3839

3940

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.embabel.template.agent;
2+
3+
import com.embabel.agent.api.common.autonomy.AgentInvocation;
4+
import com.embabel.agent.domain.io.UserInput;
5+
import com.embabel.agent.testing.integration.EmbabelMockitoIntegrationTest;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.BeforeAll;
8+
9+
import static org.junit.jupiter.api.Assertions.*;
10+
11+
/**
12+
* Use framework superclass to test the complete workflow of writing and reviewing a story.
13+
* This will run under Spring Boot against an AgentPlatform instance
14+
* that has loaded all our agents.
15+
*/
16+
class WriteAndReviewAgentIntegrationTest extends EmbabelMockitoIntegrationTest {
17+
18+
@BeforeAll
19+
static void setUp() {
20+
// Set shell configuration to non-interactive mode
21+
System.setProperty("embabel.agent.shell.interactive.enabled", "false");
22+
}
23+
24+
@Test
25+
void shouldExecuteCompleteWorkflow() {
26+
var input = new UserInput("Write about artificial intelligence");
27+
28+
var story = new Story("AI will transform our world...");
29+
var reviewedStory = new ReviewedStory(story, "Excellent exploration of AI themes.", Personas.REVIEWER);
30+
31+
whenCreateObject(prompt -> prompt.contains("Craft a short story"), Story.class)
32+
.thenReturn(story);
33+
34+
// The second call uses generateText
35+
whenGenerateText(prompt -> prompt.contains("You will be given a short story to review"))
36+
.thenReturn(reviewedStory.review());
37+
38+
var invocation = AgentInvocation.create(agentPlatform, ReviewedStory.class);
39+
var reviewedStoryResult = invocation.invoke(input);
40+
41+
assertNotNull(reviewedStoryResult);
42+
assertTrue(reviewedStoryResult.getContent().contains(story.text()),
43+
"Expected story content to be present: " + reviewedStoryResult.getContent());
44+
assertEquals(reviewedStory, reviewedStoryResult,
45+
"Expected review to match: " + reviewedStoryResult);
46+
47+
verifyCreateObjectMatching(prompt -> prompt.contains("Craft a short story"), Story.class,
48+
llm -> llm.getLlm().getTemperature() == 0.7 && llm.getToolGroups().isEmpty());
49+
verifyGenerateTextMatching(prompt -> prompt.contains("You will be given a short story to review"));
50+
verifyNoMoreInteractions();
51+
}
52+
}

0 commit comments

Comments
 (0)