Skip to content

Commit eb5883c

Browse files
alxkmralla0405
authored andcommitted
Add comprehensive validation tests for MultiQueryExpander (spring-projects#4575)
Signed-off-by: Oleksandr Klymenko <[email protected]> Signed-off-by: logan-mac <[email protected]>
1 parent f2de9ef commit eb5883c

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

spring-ai-rag/src/test/java/org/springframework/ai/rag/preretrieval/query/expansion/MultiQueryExpanderTests.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,66 @@ void whenPromptTemplateIsNullThenUseDefault() {
8585
assertThat(queryExpander).isNotNull();
8686
}
8787

88+
@Test
89+
void whenPromptTemplateHasBothPlaceholdersThenBuild() {
90+
PromptTemplate validTemplate = new PromptTemplate("Generate {number} variations of: {query}");
91+
92+
MultiQueryExpander expander = MultiQueryExpander.builder()
93+
.chatClientBuilder(mock(ChatClient.Builder.class))
94+
.promptTemplate(validTemplate)
95+
.build();
96+
97+
assertThat(expander).isNotNull();
98+
}
99+
100+
@Test
101+
void whenPromptTemplateHasExtraPlaceholdersThenBuild() {
102+
PromptTemplate templateWithExtra = new PromptTemplate(
103+
"Generate {number} variations of: {query}. Context: {context}");
104+
105+
MultiQueryExpander expander = MultiQueryExpander.builder()
106+
.chatClientBuilder(mock(ChatClient.Builder.class))
107+
.promptTemplate(templateWithExtra)
108+
.build();
109+
110+
assertThat(expander).isNotNull();
111+
}
112+
113+
@Test
114+
void whenBuilderSetMultipleTimesThenUseLastValue() {
115+
ChatClient.Builder firstBuilder = mock(ChatClient.Builder.class);
116+
ChatClient.Builder secondBuilder = mock(ChatClient.Builder.class);
117+
118+
MultiQueryExpander expander = MultiQueryExpander.builder()
119+
.chatClientBuilder(firstBuilder)
120+
.chatClientBuilder(secondBuilder)
121+
.build();
122+
123+
assertThat(expander).isNotNull();
124+
}
125+
126+
@Test
127+
void whenPromptTemplateSetToNullAfterValidTemplateThenUseDefault() {
128+
PromptTemplate validTemplate = new PromptTemplate("Config: {number} values for {query}");
129+
130+
MultiQueryExpander expander = MultiQueryExpander.builder()
131+
.chatClientBuilder(mock(ChatClient.Builder.class))
132+
.promptTemplate(validTemplate)
133+
.promptTemplate(null)
134+
.build();
135+
136+
assertThat(expander).isNotNull();
137+
}
138+
139+
@Test
140+
void whenPromptTemplateHasPlaceholdersInDifferentCaseThenThrow() {
141+
PromptTemplate templateWithWrongCase = new PromptTemplate("Generate {NUMBER} variations of: {QUERY}");
142+
143+
assertThatThrownBy(() -> MultiQueryExpander.builder()
144+
.chatClientBuilder(mock(ChatClient.Builder.class))
145+
.promptTemplate(templateWithWrongCase)
146+
.build()).isInstanceOf(IllegalArgumentException.class)
147+
.hasMessageContaining("The following placeholders must be present in the prompt template");
148+
}
149+
88150
}

0 commit comments

Comments
 (0)