From 0e63f3b503047580a18a28a0f55a402712e9e680 Mon Sep 17 00:00:00 2001 From: John Oliver <1615532+johnoliver@users.noreply.github.com> Date: Sat, 8 Jul 2023 05:14:58 +0100 Subject: [PATCH] Java: Fix example12 test (#1892) Rename Example12SequentialPlanner to a test and add assertion --- ...va => Example12SequentialPlannerTest.java} | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) rename java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/{Example12SequentialPlanner.java => Example12SequentialPlannerTest.java} (88%) diff --git a/java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/Example12SequentialPlanner.java b/java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/Example12SequentialPlannerTest.java similarity index 88% rename from java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/Example12SequentialPlanner.java rename to java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/Example12SequentialPlannerTest.java index 08fbc56274..8ae6afaa09 100644 --- a/java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/Example12SequentialPlanner.java +++ b/java/semantickernel-core/src/test/java/com/microsoft/semantickernel/syntaxexamples/Example12SequentialPlannerTest.java @@ -19,12 +19,13 @@ import com.microsoft.semantickernel.skilldefinition.annotations.SKFunctionParame import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.mockito.Mockito; import reactor.util.function.Tuples; import java.io.IOException; -public class Example12SequentialPlanner { +public class Example12SequentialPlannerTest { @Test public void poetrySamplesAsync() { OpenAIAsyncClient client = @@ -71,6 +72,12 @@ public class Example12SequentialPlanner { } private static SequentialPlanner getSequentialPlanner(OpenAIAsyncClient client) { + Kernel kernel = getKernel(client); + + return new SequentialPlanner(kernel, null, null); + } + + private static Kernel getKernel(OpenAIAsyncClient client) { Kernel kernel = SKBuilders.kernel() .setKernelConfig( @@ -86,9 +93,7 @@ public class Example12SequentialPlanner { kernel.importSkillFromDirectory("SummarizeSkill", "../../samples/skills", "SummarizeSkill"); kernel.importSkillFromDirectory("WriterSkill", "../../samples/skills", "WriterSkill"); kernel.importSkill(new TextSkill(), "TextSkill"); - kernel.importSkill(new EmailSkill(), "email"); - - return new SequentialPlanner(kernel, null, null); + return kernel; } public static class EmailSkill { @@ -123,19 +128,21 @@ public class Example12SequentialPlanner { @Test public void emailSamplesAsync() throws IOException { + OpenAIAsyncClient client = mockCompletionOpenAIAsyncClient( Tuples.of( "Create an XML plan step by step", "\n" - + " \n" - + " \n" - + " \n" - + " \n" - + ""), + + " \n" + + " \n" + + " \n" + + " \n" + + ""), Tuples.of( "Summarize the following text in two sentences or less", "Once upon a time, in a faraway kingdom, there lived a kind and" @@ -162,7 +169,13 @@ public class Example12SequentialPlanner { + " young woman who saved them from the dragon."), Tuples.of("Translate the input below", "a poem translated to french")); - SequentialPlanner planner = getSequentialPlanner(client); + Kernel kernel = getKernel(client); + + EmailSkill email = Mockito.spy(new EmailSkill()); + + kernel.importSkill(email, "EmailSkill"); + + SequentialPlanner planner = new SequentialPlanner(kernel, null, null); Plan plan = planner.createPlanAsync( @@ -192,5 +205,10 @@ public class Example12SequentialPlanner { + " remembering Mira as the brave young woman who saved them from the dragon."; plan.invokeAsync(input).block(); + + Mockito.verify(email, Mockito.times(1)) + .sendEmail( + Mockito.matches("a poem translated to french"), + Mockito.matches("fake@example.com")); } }