Skip to content
69 changes: 33 additions & 36 deletions src/it/java/io/weaviate/integration/DataITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,14 @@
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
import io.weaviate.client6.v1.api.collections.VectorConfig;
import io.weaviate.client6.v1.api.collections.Vectors;
import io.weaviate.client6.v1.api.collections.WeaviateObject;
import io.weaviate.client6.v1.api.collections.data.BatchReference;
import io.weaviate.client6.v1.api.collections.data.DeleteManyResponse;
import io.weaviate.client6.v1.api.collections.data.Reference;
import io.weaviate.client6.v1.api.collections.data.WriteWeaviateObject;
import io.weaviate.client6.v1.api.collections.data.ObjectReference;
import io.weaviate.client6.v1.api.collections.query.Filter;
import io.weaviate.client6.v1.api.collections.query.Metadata;
import io.weaviate.client6.v1.api.collections.query.Metadata.MetadataField;
import io.weaviate.client6.v1.api.collections.query.QueryMetadata;
import io.weaviate.client6.v1.api.collections.query.QueryReference;
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
import io.weaviate.client6.v1.api.collections.tenants.Tenant;
import io.weaviate.containers.Container;

Expand Down Expand Up @@ -66,20 +64,20 @@ public void testCreateGetDelete() throws IOException {
Assertions.assertThat(object)
.as("object has correct properties").get()
.satisfies(obj -> {
Assertions.assertThat(obj.metadata().uuid())
Assertions.assertThat(obj.uuid())
.as("object id").isEqualTo(id);

Assertions.assertThat(obj.metadata().vectors().getSingle(VECTOR_INDEX))
Assertions.assertThat(obj.vectors().getSingle(VECTOR_INDEX))
.containsExactly(vector);

Assertions.assertThat(obj.properties())
.as("has expected properties")
.containsEntry("name", "john doe");

Assertions.assertThat(obj.metadata().creationTimeUnix())
.as("creationTimeUnix").isNotNull();
Assertions.assertThat(obj.metadata().lastUpdateTimeUnix())
.as("lastUpdateTimeUnix").isNotNull();
Assertions.assertThat(obj.createdAt())
.as("createdAt").isNotNull();
Assertions.assertThat(obj.lastUpdatedAt())
.as("lastUpdatedAt").isNotNull();
});

var deleted = artists.data.deleteById(id);
Expand Down Expand Up @@ -114,7 +112,7 @@ public void testBlobData() throws IOException {
cat -> cat.returnProperties("img"));

Assertions.assertThat(got).get()
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
.extractingByKey("img").isEqualTo(ragdollPng);
}

Expand Down Expand Up @@ -153,7 +151,7 @@ public void testReferences_AddReplaceDelete() throws IOException {
persons.data.referenceAdd(
john.uuid(),
"hasFriend",
Reference.object(albie));
ObjectReference.object(albie));

// Assert
var johnWithFriends = persons.query.fetchObjectById(john.uuid(),
Expand All @@ -163,18 +161,18 @@ public void testReferences_AddReplaceDelete() throws IOException {

Assertions.assertThat(johnWithFriends).get()
.as("friends after ADD")
.extracting(ReadWeaviateObject::references).extracting("hasFriend")
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.extracting(WeaviateObject::references).extracting("hasFriend")
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
.hasSize(1)
.first().extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
.first().extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
.returns("albie", friend -> friend.get("name"));

// Act: replace reference
var barbara = persons.data.insert(Map.of("name", "barbara"));
persons.data.referenceReplace(
john.uuid(),
"hasFriend",
Reference.object(barbara));
ObjectReference.object(barbara));

johnWithFriends = persons.query.fetchObjectById(john.uuid(),
query -> query.returnReferences(
Expand All @@ -183,17 +181,17 @@ public void testReferences_AddReplaceDelete() throws IOException {

Assertions.assertThat(johnWithFriends).get()
.as("friends after REPLACE")
.extracting(ReadWeaviateObject::references).extracting("hasFriend")
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.extracting(WeaviateObject::references).extracting("hasFriend")
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
.hasSize(1)
.first().extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
.first().extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
.returns("barbara", friend -> friend.get("name"));

// Act: delete reference
persons.data.referenceDelete(
john.uuid(),
"hasFriend",
Reference.object(barbara));
ObjectReference.object(barbara));

// Assert
johnWithFriends = persons.query.fetchObjectById(john.uuid(),
Expand All @@ -202,8 +200,8 @@ public void testReferences_AddReplaceDelete() throws IOException {

Assertions.assertThat(johnWithFriends).get()
.as("friends after DELETE")
.extracting(ReadWeaviateObject::references).extracting("hasFriend")
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.extracting(WeaviateObject::references).extracting("hasFriend")
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))
.isEmpty();
}

Expand All @@ -229,7 +227,7 @@ public void testReplace() throws IOException {

Assertions.assertThat(replacedIvanhoe).get()
.as("has ONLY year property")
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
.doesNotContain(Map.entry("title", "ivanhoe"))
.contains(Map.entry("year", 1819L));
}
Expand Down Expand Up @@ -265,7 +263,7 @@ public void testUpdate() throws IOException {
books.data.update(ivanhoe.uuid(),
update -> update
.properties(Map.of("year", 1819))
.reference("writtenBy", Reference.objects(walter))
.reference("writtenBy", ObjectReference.objects(walter))
.vectors(Vectors.of(vector)));

// Assert
Expand All @@ -279,21 +277,20 @@ public void testUpdate() throws IOException {
.satisfies(book -> {
Assertions.assertThat(book)
.as("has both year and title property")
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
.contains(Map.entry("title", "ivanhoe"), Map.entry("year", 1819L));

Assertions.assertThat(book)
.as("has reference to Authors")
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.MAP)
.extractingByKey("writtenBy", InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.extracting(WeaviateObject::references, InstanceOfAssertFactories.MAP)
.extractingByKey("writtenBy", InstanceOfAssertFactories.list(WeaviateObject.class))
.first()
.extracting(ReadWeaviateObject::properties, InstanceOfAssertFactories.MAP)
.extracting(WeaviateObject::properties, InstanceOfAssertFactories.MAP)
.contains(Map.entry("name", "walter scott"));

Assertions.assertThat(book)
.as("has a vector")
.extracting(ReadWeaviateObject::metadata)
.extracting(QueryMetadata::vectors)
.extracting(WeaviateObject::vectors)
.returns(vector, Vectors::getDefaultSingle);
});
}
Expand Down Expand Up @@ -386,7 +383,7 @@ public void testReferenceAddMany() throws IOException {

var alpha = airports.data.insert(Map.of()).uuid();
var goodburg = cities.data.insert(Map.of(), city -> city
.reference("hasAirports", Reference.uuids(alpha)));
.reference("hasAirports", ObjectReference.uuid(alpha)));

// Act
var newAirports = airports.data.insertMany(Map.of(), Map.of());
Expand All @@ -404,10 +401,10 @@ public void testReferenceAddMany() throws IOException {

Assertions.assertThat(goodburgAirports).get()
.as("Goodburg has 3 airports")
.extracting(ReadWeaviateObject::references)
.extracting(WeaviateObject::references)
.extracting(references -> references.get("hasAirports"),
InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.extracting(ReadWeaviateObject::uuid)
InstanceOfAssertFactories.list(WeaviateObject.class))
.extracting(WeaviateObject::uuid)
.contains(alpha, bravo, charlie);
}

Expand Down Expand Up @@ -485,7 +482,7 @@ public void testDataTypes() throws IOException {

// Assert
Assertions.assertThat(got).get()
.extracting(ReadWeaviateObject::properties)
.extracting(WeaviateObject::properties)
.asInstanceOf(InstanceOfAssertFactories.map(String.class, Object.class))
// Most of PhoneNumber fields are only present on read and are null on write.
.usingRecursiveComparison()
Expand Down Expand Up @@ -557,6 +554,6 @@ public void test_multiTenant() throws IOException {
var inserted = emails.data.insert(Map.of("subject", "McDonald's Xmas Bonanza"));

// Assert
Assertions.assertThat(inserted).returns(johndoe, WriteWeaviateObject::tenant);
Assertions.assertThat(inserted).returns(johndoe, WeaviateObject::tenant);
}
}
4 changes: 2 additions & 2 deletions src/it/java/io/weaviate/integration/ORMITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
import io.weaviate.client6.v1.api.collections.CollectionConfig;
import io.weaviate.client6.v1.api.collections.GeoCoordinates;
import io.weaviate.client6.v1.api.collections.PhoneNumber;
import io.weaviate.client6.v1.api.collections.WeaviateObject;
import io.weaviate.client6.v1.api.collections.annotations.Collection;
import io.weaviate.client6.v1.api.collections.annotations.Property;
import io.weaviate.client6.v1.api.collections.data.InsertManyResponse.InsertObject;
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
import io.weaviate.client6.v1.api.collections.query.Filter;
import io.weaviate.containers.Container;

Expand Down Expand Up @@ -358,7 +358,7 @@ public void test_partialScan() throws IOException {

// Assert
Assertions.assertThat(got).get()
.extracting(ReadWeaviateObject::properties)
.extracting(WeaviateObject::properties)
.returns("Dystopia", Song::title)
.returns(null, Song::album)
.returns(0, Song::year)
Expand Down
13 changes: 5 additions & 8 deletions src/it/java/io/weaviate/integration/PaginationITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@
import io.weaviate.client6.v1.api.WeaviateClient;
import io.weaviate.client6.v1.api.WeaviateException;
import io.weaviate.client6.v1.api.collections.Property;
import io.weaviate.client6.v1.api.collections.WeaviateObject;
import io.weaviate.client6.v1.api.collections.pagination.PaginationException;
import io.weaviate.client6.v1.api.collections.query.Metadata;
import io.weaviate.client6.v1.api.collections.query.QueryMetadata;
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
import io.weaviate.containers.Container;

public class PaginationITest extends ConcurrentTest {
Expand All @@ -46,8 +45,7 @@ public void testIterateAll() throws IOException {
var allThings = things.paginate();

// Act: stream
var gotStream = allThings.stream()
.map(ReadWeaviateObject::metadata).map(QueryMetadata::uuid).toList();
var gotStream = allThings.stream().map(WeaviateObject::uuid).toList();

// Assert
Assertions.assertThat(gotStream)
Expand All @@ -58,7 +56,7 @@ public void testIterateAll() throws IOException {
// Act: for-loop
var gotLoop = new ArrayList<String>();
for (var thing : allThings) {
gotLoop.add(thing.metadata().uuid());
gotLoop.add(thing.uuid());
}

// Assert
Expand Down Expand Up @@ -89,7 +87,7 @@ public void testResumePagination() throws IOException {

// Iterate over first 5 objects
String lastId = things.paginate(p -> p.pageSize(5)).stream()
.limit(5).map(thing -> thing.metadata().uuid())
.limit(5).map(thing -> thing.uuid())
.reduce((prev, next) -> next).get();

// Act
Expand Down Expand Up @@ -126,8 +124,7 @@ public void testWithQueryOptions() throws IOException {
.as("uuid=" + thing.uuid())
.doesNotContainKey("dont_fetch");

Assertions.assertThat(thing.metadata().creationTimeUnix())
.isNotNull();
Assertions.assertThat(thing.createdAt()).isNotNull();
}
}

Expand Down
26 changes: 13 additions & 13 deletions src/it/java/io/weaviate/integration/ReferencesITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
import io.weaviate.client6.v1.api.WeaviateClient;
import io.weaviate.client6.v1.api.collections.Property;
import io.weaviate.client6.v1.api.collections.ReferenceProperty;
import io.weaviate.client6.v1.api.collections.data.Reference;
import io.weaviate.client6.v1.api.collections.WeaviateObject;
import io.weaviate.client6.v1.api.collections.data.ObjectReference;
import io.weaviate.client6.v1.api.collections.query.QueryReference;
import io.weaviate.client6.v1.api.collections.query.ReadWeaviateObject;
import io.weaviate.containers.Container;

/**
Expand Down Expand Up @@ -72,9 +72,9 @@ public void testReferences() throws IOException {
var alex = artists.data.insert(
Map.of("name", "Alex"),
opt -> opt
.reference("hasAwards", Reference.uuids(
.reference("hasAwards", ObjectReference.uuids(
grammy_1.uuid(), oscar_1.uuid()))
.reference("hasAwards", Reference.objects(grammy_2, oscar_2)));
.reference("hasAwards", ObjectReference.objects(grammy_2, oscar_2)));

// Act: add one more reference
var nsMovies = ns("Movies");
Expand All @@ -99,9 +99,9 @@ public void testReferences() throws IOException {
.as("Artists: fetch by id including hasAwards references")

// Cast references to Map<String, List<QueryWeaviateObject>>
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
.as("hasAwards object reference").extractingByKey("hasAwards")
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))

.extracting(object -> object.uuid())
.containsOnly(
Expand Down Expand Up @@ -146,12 +146,12 @@ public void testNestedReferences() throws IOException {
var musicAcademy = academies.data.insert(Map.of("ceo", "Harvy Mason"));

var grammy_1 = grammies.data.insert(Map.of(),
opt -> opt.reference("presentedBy", Reference.objects(musicAcademy)));
opt -> opt.reference("presentedBy", ObjectReference.objects(musicAcademy)));

var alex = artists.data.insert(
Map.of("name", "Alex"),
opt -> opt
.reference("hasAwards", Reference.objects(grammy_1)));
.reference("hasAwards", ObjectReference.objects(grammy_1)));

// Assert: fetch nested references
var gotAlex = artists.query.fetchObjectById(alex.uuid(),
Expand All @@ -166,19 +166,19 @@ public void testNestedReferences() throws IOException {
.as("Artists: fetch by id including nested references")

// Cast references to Map<String, List<QueryWeaviateObject>>
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
.as("hasAwards object reference").extractingByKey("hasAwards")
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))

.hasSize(1).allSatisfy(award -> Assertions.assertThat(award)
.returns(grammy_1.uuid(), grammy -> grammy.uuid())

// Cast references to Map<String, List<QueryWeaviateObject>>
.extracting(ReadWeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
.extracting(WeaviateObject::references, InstanceOfAssertFactories.map(String.class, List.class))
.as("presentedBy object reference").extractingByKey("presentedBy")
.asInstanceOf(InstanceOfAssertFactories.list(ReadWeaviateObject.class))
.asInstanceOf(InstanceOfAssertFactories.list(WeaviateObject.class))

.hasSize(1).extracting(ReadWeaviateObject::properties)
.hasSize(1).extracting(WeaviateObject::properties)
.allSatisfy(properties -> Assertions.assertThat(properties)
.asInstanceOf(InstanceOfAssertFactories.map(String.class, Object.class))
.containsEntry("ceo", "Harvy Mason")));
Expand Down
Loading