11package apoc .vectordb ;
22
33import apoc .ml .Prompt ;
4- import apoc .util .ExtendedTestUtil ;
54import apoc .util .MapUtil ;
65import apoc .util .TestUtil ;
6+ import apoc .util .WeaviateTestUtil ;
77import org .junit .AfterClass ;
88import org .junit .Before ;
99import org .junit .BeforeClass ;
1515import org .neo4j .graphdb .GraphDatabaseService ;
1616import org .neo4j .graphdb .ResourceIterator ;
1717import org .neo4j .test .TestDatabaseManagementServiceBuilder ;
18- import org .testcontainers .weaviate .WeaviateContainer ;
1918
2019import java .util .List ;
2120import java .util .Map ;
2726import static apoc .util .TestUtil .testCallEmpty ;
2827import static apoc .util .TestUtil .testResult ;
2928import static apoc .util .Util .map ;
29+ import static apoc .util .WeaviateTestUtil .ADMIN_AUTHORIZATION ;
30+ import static apoc .util .WeaviateTestUtil .ADMIN_HEADER_CONF ;
31+ import static apoc .util .WeaviateTestUtil .ADMIN_KEY ;
32+ import static apoc .util .WeaviateTestUtil .COLLECTION_NAME ;
33+ import static apoc .util .WeaviateTestUtil .FIELDS ;
34+ import static apoc .util .WeaviateTestUtil .HOST ;
35+ import static apoc .util .WeaviateTestUtil .ID_1 ;
36+ import static apoc .util .WeaviateTestUtil .ID_2 ;
37+ import static apoc .util .WeaviateTestUtil .READONLY_AUTHORIZATION ;
38+ import static apoc .util .WeaviateTestUtil .WEAVIATE_CONTAINER ;
39+ import static apoc .util .WeaviateTestUtil .WEAVIATE_CREATE_COLLECTION_APOC ;
40+ import static apoc .util .WeaviateTestUtil .WEAVIATE_DELETE_COLLECTION_APOC ;
41+ import static apoc .util .WeaviateTestUtil .WEAVIATE_DELETE_VECTOR_APOC ;
42+ import static apoc .util .WeaviateTestUtil .WEAVIATE_QUERY_APOC ;
43+ import static apoc .util .WeaviateTestUtil .WEAVIATE_UPSERT_QUERY ;
3044import static apoc .vectordb .VectorDbHandler .Type .WEAVIATE ;
3145import static apoc .vectordb .VectorDbTestUtil .EntityType .FALSE ;
3246import static apoc .vectordb .VectorDbTestUtil .EntityType .NODE ;
3751import static apoc .vectordb .VectorDbTestUtil .assertReadOnlyProcWithMappingResults ;
3852import static apoc .vectordb .VectorDbTestUtil .assertRelsCreated ;
3953import static apoc .vectordb .VectorDbTestUtil .dropAndDeleteAll ;
40- import static apoc .vectordb .VectorDbTestUtil .getAuthHeader ;
4154import static apoc .vectordb .VectorDbTestUtil .ragSetup ;
4255import static apoc .vectordb .VectorEmbeddingConfig .ALL_RESULTS_KEY ;
4356import static apoc .vectordb .VectorEmbeddingConfig .FIELDS_KEY ;
4457import static apoc .vectordb .VectorEmbeddingConfig .MAPPING_KEY ;
45- import static apoc .vectordb .VectorMappingConfig .*;
58+ import static apoc .vectordb .VectorMappingConfig .EMBEDDING_KEY ;
59+ import static apoc .vectordb .VectorMappingConfig .ENTITY_KEY ;
60+ import static apoc .vectordb .VectorMappingConfig .METADATA_KEY ;
61+ import static apoc .vectordb .VectorMappingConfig .MODE_KEY ;
62+ import static apoc .vectordb .VectorMappingConfig .MappingMode ;
63+ import static apoc .vectordb .VectorMappingConfig .NODE_LABEL ;
64+ import static apoc .vectordb .VectorMappingConfig .NO_FIELDS_ERROR_MSG ;
65+ import static apoc .vectordb .VectorMappingConfig .REL_TYPE ;
4666import static org .assertj .core .api .Assertions .assertThat ;
4767import static org .junit .Assert .assertEquals ;
4868import static org .junit .Assert .assertFalse ;
5474
5575
5676public class WeaviateTest {
57- private static final List <String > FIELDS = List .of ("city" , "foo" );
58- private static final String ADMIN_KEY = "jane-secret-key" ;
59- private static final String READONLY_KEY = "ian-secret-key" ;
60- private static final String COLLECTION_NAME = "TestCollection" ;
61-
62- private static final WeaviateContainer WEAVIATE_CONTAINER = new WeaviateContainer ("semitechnologies/weaviate:1.24.5" )
63- .withEnv ("AUTHENTICATION_APIKEY_ENABLED" , "true" )
64- .withEnv ("AUTHENTICATION_APIKEY_ALLOWED_KEYS" , ADMIN_KEY + "," + READONLY_KEY )
65- .
withEnv (
"AUTHENTICATION_APIKEY_USERS" ,
"[email protected] ,ian-smith" )
66-
67- .withEnv ("AUTHORIZATION_ADMINLIST_ENABLED" , "true" )
68- .
withEnv (
"AUTHORIZATION_ADMINLIST_USERS" ,
"[email protected] ,[email protected] " )
69- .
withEnv (
"AUTHORIZATION_ADMINLIST_READONLY_USERS" ,
"ian-smith,[email protected] " );
70-
71- private static final Map <String , String > ADMIN_AUTHORIZATION = getAuthHeader (ADMIN_KEY );
72- private static final Map <String , String > READONLY_AUTHORIZATION = getAuthHeader (READONLY_KEY );
73- private static final Map <String , Object > ADMIN_HEADER_CONF = map (HEADERS_KEY , ADMIN_AUTHORIZATION );
74-
75- private static final String ID_1 = "8ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308" ;
76- private static final String ID_2 = "9ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308" ;
77-
78- private static String HOST ;
79-
77+
8078 @ ClassRule
8179 public static TemporaryFolder storeDir = new TemporaryFolder ();
8280
@@ -96,23 +94,14 @@ public static void setUp() throws Exception {
9694
9795 TestUtil .registerProcedure (db , Weaviate .class , VectorDb .class , Prompt .class );
9896
99- testCall (db , "CALL apoc.vectordb.weaviate.createCollection($host, 'TestCollection', 'cosine', 4, $conf)" ,
97+ testCall (db , WEAVIATE_CREATE_COLLECTION_APOC ,
10098 MapUtil .map ("host" , HOST , "conf" , ADMIN_HEADER_CONF ),
10199 r -> {
102100 Map value = (Map ) r .get ("value" );
103101 assertEquals ("TestCollection" , value .get ("class" ));
104102 });
105103
106- testResult (db , """
107- CALL apoc.vectordb.weaviate.upsert($host, 'TestCollection',
108- [
109- {id: $id1, vector: [0.05, 0.61, 0.76, 0.74], metadata: {city: "Berlin", foo: "one"}},
110- {id: $id2, vector: [0.19, 0.81, 0.75, 0.11], metadata: {city: "London", foo: "two"}},
111- {id: '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308', vector: [0.19, 0.81, 0.75, 0.11], metadata: {foo: "baz"}},
112- {id: '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309', vector: [0.19, 0.81, 0.75, 0.11], metadata: {foo: "baz"}}
113- ],
114- $conf)
115- """ ,
104+ testResult (db , WEAVIATE_UPSERT_QUERY ,
116105 MapUtil .map ("host" , HOST , "id1" , ID_1 , "id2" , ID_2 , "conf" , ADMIN_HEADER_CONF ),
117106 r -> {
118107 ResourceIterator <Map > values = r .columnAs ("value" );
@@ -124,9 +113,7 @@ public static void setUp() throws Exception {
124113 });
125114
126115 // -- delete vector
127- testCall (db , "CALL apoc.vectordb.weaviate.delete($host, 'TestCollection', " +
128- "['7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce308', '7ef2b3a7-1e56-4ddd-b8c3-2ca8901ce309']" +
129- ", $conf) " ,
116+ testCall (db , WEAVIATE_DELETE_VECTOR_APOC ,
130117 map ("host" , HOST , "conf" , ADMIN_HEADER_CONF ),
131118 r -> {
132119 List value = (List ) r .get ("value" );
@@ -136,7 +123,7 @@ public static void setUp() throws Exception {
136123
137124 @ AfterClass
138125 public static void tearDown () throws Exception {
139- testCallEmpty (db , "CALL apoc.vectordb.weaviate.deleteCollection($host, $collectionName, $conf)" ,
126+ testCallEmpty (db , WEAVIATE_DELETE_COLLECTION_APOC ,
140127 MapUtil .map ("host" , HOST , "collectionName" , COLLECTION_NAME , "conf" , ADMIN_HEADER_CONF )
141128 );
142129
@@ -209,20 +196,9 @@ public void getVectorsWithoutVectorResult() {
209196
210197 @ Test
211198 public void queryVectors () {
212- testResult (db , "CALL apoc.vectordb.weaviate.query($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) " +
213- " YIELD score, vector, id, metadata RETURN * ORDER BY id" ,
199+ testResult (db , WEAVIATE_QUERY_APOC ,
214200 map ("host" , HOST , "conf" , map (ALL_RESULTS_KEY , true , FIELDS_KEY , FIELDS , HEADERS_KEY , ADMIN_AUTHORIZATION )),
215- r -> {
216- Map <String , Object > row = r .next ();
217- assertBerlinResult (row , ID_1 , FALSE );
218- assertNotNull (row .get ("score" ));
219- assertNotNull (row .get ("vector" ));
220-
221- row = r .next ();
222- assertLondonResult (row , ID_2 , FALSE );
223- assertNotNull (row .get ("score" ));
224- assertNotNull (row .get ("vector" ));
225- });
201+ WeaviateTestUtil ::queryVectorsAssertions );
226202 }
227203
228204 @ Test
@@ -585,7 +561,7 @@ private static void assertQueryVectorsWithSystemDbStorage(String keyConfig, Stri
585561 db ,
586562 query ,
587563 params ,
588- "Caused by: java.io.FileNotFoundException: http://127.0.0.1:" + HOST .split (":" )[1 ] + "/v3/graphql"
564+ "Caused by: java.io.FileNotFoundException: http://127.0.0.1:" + HOST .split (":" )[1 ] + "/v3/graphql"
589565 );
590566 return ;
591567 }
@@ -634,7 +610,7 @@ MAPPING_KEY, map(EMBEDDING_KEY, "vect",
634610 HEADERS_KEY , ADMIN_AUTHORIZATION ));
635611 String query = "CALL apoc.vectordb.weaviate.query($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) " +
636612 " YIELD score, vector, id, metadata RETURN * ORDER BY id" ;
637- ExtendedTestUtil . assertFails (db , query , params , NO_FIELDS_ERROR_MSG );
613+ assertFails (db , query , params , NO_FIELDS_ERROR_MSG );
638614 }
639615
640616 @ Test
@@ -662,6 +638,6 @@ MAPPING_KEY, map(EMBEDDING_KEY, "vect",
662638 NODE_LABEL , "Test" ,
663639 ENTITY_KEY , "myId" )));
664640 String query = "CALL apoc.vectordb.weaviate.queryAndUpdate($host, 'TestCollection', [0.2, 0.1, 0.9, 0.7], null, 5, $conf) YIELD score, vector, id, metadata, node RETURN * ORDER BY id" ;
665- ExtendedTestUtil . assertFails (db , query , params , NO_FIELDS_ERROR_MSG );
641+ assertFails (db , query , params , NO_FIELDS_ERROR_MSG );
666642 }
667643}
0 commit comments