99import org .assertj .core .api .Assertions ;
1010import org .assertj .core .api .InstanceOfAssertFactories ;
1111import org .junit .BeforeClass ;
12+ import org .junit .Ignore ;
1213import org .junit .Test ;
1314
1415import io .weaviate .ConcurrentTest ;
2021import io .weaviate .client6 .v1 .api .collections .ReferenceProperty ;
2122import io .weaviate .client6 .v1 .api .collections .VectorConfig ;
2223import io .weaviate .client6 .v1 .api .collections .Vectors ;
23- import io .weaviate .client6 .v1 .api .collections .WeaviateObject ;
2424import io .weaviate .client6 .v1 .api .collections .data .BatchReference ;
2525import io .weaviate .client6 .v1 .api .collections .data .DeleteManyResponse ;
2626import io .weaviate .client6 .v1 .api .collections .data .Reference ;
27+ import io .weaviate .client6 .v1 .api .collections .data .WriteWeaviateObject ;
2728import io .weaviate .client6 .v1 .api .collections .query .Filter ;
2829import io .weaviate .client6 .v1 .api .collections .query .Metadata ;
2930import io .weaviate .client6 .v1 .api .collections .query .Metadata .MetadataField ;
3031import io .weaviate .client6 .v1 .api .collections .query .QueryMetadata ;
3132import io .weaviate .client6 .v1 .api .collections .query .QueryReference ;
33+ import io .weaviate .client6 .v1 .api .collections .query .ReadWeaviateObject ;
34+ import io .weaviate .client6 .v1 .api .collections .tenants .Tenant ;
3235import io .weaviate .containers .Container ;
3336
3437public class DataITest extends ConcurrentTest {
@@ -86,6 +89,7 @@ public void testCreateGetDelete() throws IOException {
8689 .as ("object not exists after deletion" ).isFalse ();
8790
8891 deleted = artists .data .deleteById (id );
92+
8993 // TODO: Change to isFalse() after fixed in Weaviate server
9094 Assertions .assertThat (deleted )
9195 .as ("object wasn't deleted" ).isTrue ();
@@ -106,11 +110,11 @@ public void testBlobData() throws IOException {
106110 "breed" , "ragdoll" ,
107111 "img" , ragdollPng ));
108112
109- var got = cats .query .fetchObjectById (ragdoll .metadata (). uuid (),
113+ var got = cats .query .fetchObjectById (ragdoll .uuid (),
110114 cat -> cat .returnProperties ("img" ));
111115
112116 Assertions .assertThat (got ).get ()
113- .extracting (WeaviateObject ::properties , InstanceOfAssertFactories .MAP )
117+ .extracting (ReadWeaviateObject ::properties , InstanceOfAssertFactories .MAP )
114118 .extractingByKey ("img" ).isEqualTo (ragdollPng );
115119 }
116120
@@ -147,59 +151,59 @@ public void testReferences_AddReplaceDelete() throws IOException {
147151
148152 // Act: add reference
149153 persons .data .referenceAdd (
150- john .metadata (). uuid (),
154+ john .uuid (),
151155 "hasFriend" ,
152156 Reference .object (albie ));
153157
154158 // Assert
155- var johnWithFriends = persons .query .fetchObjectById (john .metadata (). uuid (),
159+ var johnWithFriends = persons .query .fetchObjectById (john .uuid (),
156160 query -> query .returnReferences (
157161 QueryReference .single ("hasFriend" ,
158162 friend -> friend .returnProperties ("name" ))));
159163
160164 Assertions .assertThat (johnWithFriends ).get ()
161165 .as ("friends after ADD" )
162- .extracting (WeaviateObject ::references ).extracting ("hasFriend" )
163- .asInstanceOf (InstanceOfAssertFactories .list (WeaviateObject .class ))
166+ .extracting (ReadWeaviateObject ::references ).extracting ("hasFriend" )
167+ .asInstanceOf (InstanceOfAssertFactories .list (ReadWeaviateObject .class ))
164168 .hasSize (1 )
165- .first ().extracting (WeaviateObject ::properties , InstanceOfAssertFactories .MAP )
169+ .first ().extracting (ReadWeaviateObject ::properties , InstanceOfAssertFactories .MAP )
166170 .returns ("albie" , friend -> friend .get ("name" ));
167171
168172 // Act: replace reference
169173 var barbara = persons .data .insert (Map .of ("name" , "barbara" ));
170174 persons .data .referenceReplace (
171- john .metadata (). uuid (),
175+ john .uuid (),
172176 "hasFriend" ,
173177 Reference .object (barbara ));
174178
175- johnWithFriends = persons .query .fetchObjectById (john .metadata (). uuid (),
179+ johnWithFriends = persons .query .fetchObjectById (john .uuid (),
176180 query -> query .returnReferences (
177181 QueryReference .single ("hasFriend" ,
178182 friend -> friend .returnProperties ("name" ))));
179183
180184 Assertions .assertThat (johnWithFriends ).get ()
181185 .as ("friends after REPLACE" )
182- .extracting (WeaviateObject ::references ).extracting ("hasFriend" )
183- .asInstanceOf (InstanceOfAssertFactories .list (WeaviateObject .class ))
186+ .extracting (ReadWeaviateObject ::references ).extracting ("hasFriend" )
187+ .asInstanceOf (InstanceOfAssertFactories .list (ReadWeaviateObject .class ))
184188 .hasSize (1 )
185- .first ().extracting (WeaviateObject ::properties , InstanceOfAssertFactories .MAP )
189+ .first ().extracting (ReadWeaviateObject ::properties , InstanceOfAssertFactories .MAP )
186190 .returns ("barbara" , friend -> friend .get ("name" ));
187191
188192 // Act: delete reference
189193 persons .data .referenceDelete (
190- john .metadata (). uuid (),
194+ john .uuid (),
191195 "hasFriend" ,
192196 Reference .object (barbara ));
193197
194198 // Assert
195- johnWithFriends = persons .query .fetchObjectById (john .metadata (). uuid (),
199+ johnWithFriends = persons .query .fetchObjectById (john .uuid (),
196200 query -> query .returnReferences (
197201 QueryReference .single ("hasFriend" )));
198202
199203 Assertions .assertThat (johnWithFriends ).get ()
200204 .as ("friends after DELETE" )
201- .extracting (WeaviateObject ::references ).extracting ("hasFriend" )
202- .asInstanceOf (InstanceOfAssertFactories .list (WeaviateObject .class ))
205+ .extracting (ReadWeaviateObject ::references ).extracting ("hasFriend" )
206+ .asInstanceOf (InstanceOfAssertFactories .list (ReadWeaviateObject .class ))
203207 .isEmpty ();
204208 }
205209
@@ -217,15 +221,15 @@ public void testReplace() throws IOException {
217221 var ivanhoe = books .data .insert (Map .of ("title" , "ivanhoe" ));
218222
219223 // Act
220- books .data .replace (ivanhoe .metadata (). uuid (),
224+ books .data .replace (ivanhoe .uuid (),
221225 replace -> replace .properties (Map .of ("year" , 1819 )));
222226
223227 // Assert
224- var replacedIvanhoe = books .query .fetchObjectById (ivanhoe .metadata (). uuid ());
228+ var replacedIvanhoe = books .query .fetchObjectById (ivanhoe .uuid ());
225229
226230 Assertions .assertThat (replacedIvanhoe ).get ()
227231 .as ("has ONLY year property" )
228- .extracting (WeaviateObject ::properties , InstanceOfAssertFactories .MAP )
232+ .extracting (ReadWeaviateObject ::properties , InstanceOfAssertFactories .MAP )
229233 .doesNotContain (Map .entry ("title" , "ivanhoe" ))
230234 .contains (Map .entry ("year" , 1819L ));
231235 }
@@ -258,15 +262,15 @@ public void testUpdate() throws IOException {
258262 var ivanhoe = books .data .insert (Map .of ("title" , "ivanhoe" ));
259263
260264 // Act
261- books .data .update (ivanhoe .metadata (). uuid (),
265+ books .data .update (ivanhoe .uuid (),
262266 update -> update
263267 .properties (Map .of ("year" , 1819 ))
264268 .reference ("writtenBy" , Reference .objects (walter ))
265269 .vectors (Vectors .of (vector )));
266270
267271 // Assert
268272 var updIvanhoe = books .query .fetchObjectById (
269- ivanhoe .metadata (). uuid (),
273+ ivanhoe .uuid (),
270274 query -> query
271275 .includeVector ()
272276 .returnReferences (QueryReference .single ("writtenBy" )));
@@ -275,20 +279,20 @@ public void testUpdate() throws IOException {
275279 .satisfies (book -> {
276280 Assertions .assertThat (book )
277281 .as ("has both year and title property" )
278- .extracting (WeaviateObject ::properties , InstanceOfAssertFactories .MAP )
282+ .extracting (ReadWeaviateObject ::properties , InstanceOfAssertFactories .MAP )
279283 .contains (Map .entry ("title" , "ivanhoe" ), Map .entry ("year" , 1819L ));
280284
281285 Assertions .assertThat (book )
282286 .as ("has reference to Authors" )
283- .extracting (WeaviateObject ::references , InstanceOfAssertFactories .MAP )
284- .extractingByKey ("writtenBy" , InstanceOfAssertFactories .list (WeaviateObject .class ))
287+ .extracting (ReadWeaviateObject ::references , InstanceOfAssertFactories .MAP )
288+ .extractingByKey ("writtenBy" , InstanceOfAssertFactories .list (ReadWeaviateObject .class ))
285289 .first ()
286- .extracting (WeaviateObject ::properties , InstanceOfAssertFactories .MAP )
290+ .extracting (ReadWeaviateObject ::properties , InstanceOfAssertFactories .MAP )
287291 .contains (Map .entry ("name" , "walter scott" ));
288292
289293 Assertions .assertThat (book )
290294 .as ("has a vector" )
291- .extracting (WeaviateObject ::metadata )
295+ .extracting (ReadWeaviateObject ::metadata )
292296 .extracting (QueryMetadata ::vectors )
293297 .returns (vector , Vectors ::getDefaultSingle );
294298 });
@@ -305,8 +309,8 @@ public void testDeleteMany() throws IOException {
305309
306310 var things = client .collections .use (nsThings );
307311 things .data .insert (Map .of ("last_used" , 1 ));
308- var delete_1 = things .data .insert (Map .of ("last_used" , 5 )).metadata (). uuid ();
309- var delete_2 = things .data .insert (Map .of ("last_used" , 9 )).metadata (). uuid ();
312+ var delete_1 = things .data .insert (Map .of ("last_used" , 5 )).uuid ();
313+ var delete_2 = things .data .insert (Map .of ("last_used" , 9 )).uuid ();
310314
311315 // Act (dry run)
312316 things .data .deleteMany (
@@ -394,15 +398,16 @@ public void testReferenceAddMany() throws IOException {
394398 // Assert
395399 Assertions .assertThat (response .errors ()).isEmpty ();
396400
397- var goodburgAirports = cities .query .fetchObjectById (goodburg .metadata (). uuid (),
401+ var goodburgAirports = cities .query .fetchObjectById (goodburg .uuid (),
398402 city -> city .returnReferences (
399403 QueryReference .single ("hasAirports" )));
400404
401405 Assertions .assertThat (goodburgAirports ).get ()
402406 .as ("Goodburg has 3 airports" )
403- .extracting (WeaviateObject ::references )
404- .extracting (references -> references .get ("hasAirports" ), InstanceOfAssertFactories .list (WeaviateObject .class ))
405- .extracting (WeaviateObject ::uuid )
407+ .extracting (ReadWeaviateObject ::references )
408+ .extracting (references -> references .get ("hasAirports" ),
409+ InstanceOfAssertFactories .list (ReadWeaviateObject .class ))
410+ .extracting (ReadWeaviateObject ::uuid )
406411 .contains (alpha , bravo , charlie );
407412 }
408413
@@ -480,7 +485,7 @@ public void testDataTypes() throws IOException {
480485
481486 // Assert
482487 Assertions .assertThat (got ).get ()
483- .extracting (WeaviateObject ::properties )
488+ .extracting (ReadWeaviateObject ::properties )
484489 .asInstanceOf (InstanceOfAssertFactories .map (String .class , Object .class ))
485490 // Most of PhoneNumber fields are only present on read and are null on write.
486491 .usingRecursiveComparison ()
@@ -535,4 +540,23 @@ public void testNestedProperties_insertMany() throws IOException {
535540 // Assert
536541 Assertions .assertThat (result .errors ()).isEmpty ();
537542 }
543+
544+ @ Ignore ("Making Emails collection multi-tenant causes ReferencesITest::testNestedReferences to fail" )
545+ @ Test
546+ public void test_multiTenant () throws IOException {
547+ // Arrange
548+ var nsEmails = ns ("Emails" );
549+ var emails = client .collections .create (nsEmails ,
550+ c -> c .multiTenancy (mt -> mt .enabled (true )));
551+
552+ var johndoe = "john-doe" ;
553+ emails .tenants .create (Tenant .active (johndoe ));
554+ emails = emails .withTenant (johndoe );
555+
556+ // Act
557+ var inserted = emails .data .insert (Map .of ("subject" , "McDonald's Xmas Bonanza" ));
558+
559+ // Assert
560+ Assertions .assertThat (inserted ).returns (johndoe , WriteWeaviateObject ::tenant );
561+ }
538562}
0 commit comments