From a19d501d9544103e4d99d11774cee7b0f24c17c6 Mon Sep 17 00:00:00 2001 From: Tran Ngoc Nhan Date: Fri, 3 Oct 2025 21:38:51 +0700 Subject: [PATCH] Use `assertThatExceptionOfType` Signed-off-by: Tran Ngoc Nhan --- .../coherence/CoherenceVectorStoreIT.java | 17 ++++++----------- .../ai/vectorstore/mariadb/MariaDBStoreIT.java | 18 +++++++----------- .../oracle/OracleVectorStoreIT.java | 16 ++++++---------- .../vectorstore/pgvector/PgVectorStoreIT.java | 18 +++++++----------- 4 files changed, 26 insertions(+), 43 deletions(-) diff --git a/vector-stores/spring-ai-coherence-store/src/test/java/org/springframework/ai/vectorstore/coherence/CoherenceVectorStoreIT.java b/vector-stores/spring-ai-coherence-store/src/test/java/org/springframework/ai/vectorstore/coherence/CoherenceVectorStoreIT.java index 2cb74d1bb29..7459f4e38ff 100644 --- a/vector-stores/spring-ai-coherence-store/src/test/java/org/springframework/ai/vectorstore/coherence/CoherenceVectorStoreIT.java +++ b/vector-stores/spring-ai-coherence-store/src/test/java/org/springframework/ai/vectorstore/coherence/CoherenceVectorStoreIT.java @@ -39,7 +39,6 @@ import com.oracle.bedrock.testsupport.junit.TestLogsExtension; import com.tangosol.net.Coherence; import com.tangosol.net.Session; -import org.junit.Assert; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; @@ -64,6 +63,7 @@ import org.springframework.util.CollectionUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; @Disabled("Crashes on github actions run") public class CoherenceVectorStoreIT { @@ -132,7 +132,7 @@ public void addAndSearch(CoherenceVectorStore.DistanceType distanceType, Coheren assertThat(resultDoc.getMetadata()).containsKeys("meta2", DocumentMetadata.DISTANCE.value()); // Remove all documents from the store - vectorStore.delete(this.documents.stream().map(doc -> doc.getId()).toList()); + vectorStore.delete(this.documents.stream().map(Document::getId).toList()); List results2 = vectorStore .similaritySearch(SearchRequest.builder().query("Great Depression").topK(1).build()); @@ -204,15 +204,10 @@ public void searchWithFilters(CoherenceVectorStore.DistanceType distanceType, assertThat(results).hasSize(1); assertThat(results.get(0).getId()).isEqualTo(bgDocument2.getId()); - - try { - vectorStore - .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build()); - Assert.fail("Invalid filter expression should have been cached!"); - } - catch (FilterExpressionTextParser.FilterExpressionParseException e) { - assertThat(e.getMessage()).contains("Line: 1:17, Error: no viable alternative at input 'NL'"); - } + assertThatExceptionOfType(FilterExpressionTextParser.FilterExpressionParseException.class) + .isThrownBy(() -> vectorStore + .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build())) + .withMessageContaining("Line: 1:17, Error: no viable alternative at input 'NL'"); // Remove all documents from the store truncateMap(context, ((CoherenceVectorStore) vectorStore).getMapName()); diff --git a/vector-stores/spring-ai-mariadb-store/src/test/java/org/springframework/ai/vectorstore/mariadb/MariaDBStoreIT.java b/vector-stores/spring-ai-mariadb-store/src/test/java/org/springframework/ai/vectorstore/mariadb/MariaDBStoreIT.java index 41764924b2b..96955dca876 100644 --- a/vector-stores/spring-ai-mariadb-store/src/test/java/org/springframework/ai/vectorstore/mariadb/MariaDBStoreIT.java +++ b/vector-stores/spring-ai-mariadb-store/src/test/java/org/springframework/ai/vectorstore/mariadb/MariaDBStoreIT.java @@ -31,7 +31,6 @@ import javax.sql.DataSource; import com.zaxxer.hikari.HikariDataSource; -import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; @@ -50,7 +49,7 @@ import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.filter.Filter; -import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser.FilterExpressionParseException; +import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -66,6 +65,7 @@ import org.springframework.util.CollectionUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; /** * @author Diego Dupin @@ -170,7 +170,7 @@ public void addAndSearch(String distanceType) { assertThat(resultDoc.getScore()).isBetween(0.0, 1.0); // Remove all documents from the store - vectorStore.delete(this.documents.stream().map(doc -> doc.getId()).toList()); + vectorStore.delete(this.documents.stream().map(Document::getId).toList()); List results2 = vectorStore .similaritySearch(SearchRequest.builder().query("Great Depression").topK(1).build()); @@ -282,14 +282,10 @@ public void searchWithFilters(String distanceType) { assertThat(results).hasSize(1); assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); - try { - vectorStore - .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build()); - Assert.fail("Invalid filter expression should have been cached!"); - } - catch (FilterExpressionParseException e) { - assertThat(e.getMessage()).contains("Line: 1:17, Error: no viable alternative at input 'NL'"); - } + assertThatExceptionOfType(FilterExpressionTextParser.FilterExpressionParseException.class) + .isThrownBy(() -> vectorStore + .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build())) + .withMessageContaining("Line: 1:17, Error: no viable alternative at input 'NL'"); // Remove all documents from the store dropTable(context); diff --git a/vector-stores/spring-ai-oracle-store/src/test/java/org/springframework/ai/vectorstore/oracle/OracleVectorStoreIT.java b/vector-stores/spring-ai-oracle-store/src/test/java/org/springframework/ai/vectorstore/oracle/OracleVectorStoreIT.java index 854b309e742..a9bca5631a7 100644 --- a/vector-stores/spring-ai-oracle-store/src/test/java/org/springframework/ai/vectorstore/oracle/OracleVectorStoreIT.java +++ b/vector-stores/spring-ai-oracle-store/src/test/java/org/springframework/ai/vectorstore/oracle/OracleVectorStoreIT.java @@ -30,7 +30,6 @@ import javax.sql.DataSource; import oracle.jdbc.pool.OracleDataSource; -import org.junit.Assert; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -65,6 +64,7 @@ import org.springframework.util.CollectionUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; @Testcontainers @Disabled("Oracle image is 2GB") @@ -155,7 +155,7 @@ public void addAndSearch(String distanceType) { assertThat(resultDoc.getMetadata()).containsKeys("meta2", DocumentMetadata.DISTANCE.value()); // Remove all documents from the store - vectorStore.delete(this.documents.stream().map(doc -> doc.getId()).toList()); + vectorStore.delete(this.documents.stream().map(Document::getId).toList()); List results2 = vectorStore .similaritySearch(SearchRequest.builder().query("Great Depression").topK(1).build()); @@ -237,14 +237,10 @@ public void searchWithFilters(String distanceType, int searchAccuracy) { assertThat(results).hasSize(1); assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); - try { - vectorStore - .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build()); - Assert.fail("Invalid filter expression should have been cached!"); - } - catch (FilterExpressionTextParser.FilterExpressionParseException e) { - assertThat(e.getMessage()).contains("Line: 1:17, Error: no viable alternative at input 'NL'"); - } + assertThatExceptionOfType(FilterExpressionTextParser.FilterExpressionParseException.class) + .isThrownBy(() -> vectorStore + .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build())) + .withMessageContaining("Line: 1:17, Error: no viable alternative at input 'NL'"); // Remove all documents from the store dropTable(context, ((OracleVectorStore) vectorStore).getTableName()); diff --git a/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/pgvector/PgVectorStoreIT.java b/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/pgvector/PgVectorStoreIT.java index 1cbfed0c7db..e8a75a00d2f 100644 --- a/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/pgvector/PgVectorStoreIT.java +++ b/vector-stores/spring-ai-pgvector-store/src/test/java/org/springframework/ai/vectorstore/pgvector/PgVectorStoreIT.java @@ -31,7 +31,6 @@ import javax.sql.DataSource; import com.zaxxer.hikari.HikariDataSource; -import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; import org.junit.jupiter.params.ParameterizedTest; @@ -51,7 +50,7 @@ import org.springframework.ai.test.vectorstore.BaseVectorStoreTests; import org.springframework.ai.vectorstore.SearchRequest; import org.springframework.ai.vectorstore.VectorStore; -import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser.FilterExpressionParseException; +import org.springframework.ai.vectorstore.filter.FilterExpressionTextParser; import org.springframework.ai.vectorstore.pgvector.PgVectorStore.PgIdType; import org.springframework.ai.vectorstore.pgvector.PgVectorStore.PgIndexType; import org.springframework.beans.factory.annotation.Value; @@ -69,6 +68,7 @@ import org.springframework.util.CollectionUtils; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; /** * @author Muthukumaran Navaneethakrishnan @@ -173,7 +173,7 @@ public void addAndSearch(String distanceType) { assertThat(resultDoc.getMetadata()).containsKeys("meta2", DocumentMetadata.DISTANCE.value()); // Remove all documents from the store - vectorStore.delete(this.documents.stream().map(doc -> doc.getId()).toList()); + vectorStore.delete(this.documents.stream().map(Document::getId).toList()); List results2 = vectorStore .similaritySearch(SearchRequest.builder().query("Great Depression").topK(1).build()); @@ -382,14 +382,10 @@ public void searchWithFilters(String distanceType) { assertThat(results).hasSize(1); assertThat(results.get(0).getId()).isEqualTo(bgDocument.getId()); - try { - vectorStore - .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build()); - Assert.fail("Invalid filter expression should have been cached!"); - } - catch (FilterExpressionParseException e) { - assertThat(e.getMessage()).contains("Line: 1:17, Error: no viable alternative at input 'NL'"); - } + assertThatExceptionOfType(FilterExpressionTextParser.FilterExpressionParseException.class) + .isThrownBy(() -> vectorStore + .similaritySearch(SearchRequest.from(searchRequest).filterExpression("country == NL").build())) + .withMessageContaining("Line: 1:17, Error: no viable alternative at input 'NL'"); // Remove all documents from the store dropTable(context);