Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -557,180 +557,4 @@ public void testContains() throws IOException {
|| document.toJson().contains("\"id\":\"testKey3\""));
});
}

@Test
public void test_bulkOperationOnArrayValue_addOperation() throws Exception {
datastore.createCollection(COLLECTION_NAME, null);
Collection collection = datastore.getCollection(COLLECTION_NAME);
Key key1 = new SingleValueKey("default", "testKey1");
Document key1InsertedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey1"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey1",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(ImmutablePair.of("value", Map.of("string", "Label1"))))))));
Document key1ExpectedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey1"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey1",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(
ImmutablePair.of("value", Map.of("string", "Label1")),
ImmutablePair.of("value", Map.of("string", "Label2")),
ImmutablePair.of("value", Map.of("string", "Label3"))))))));
collection.upsert(key1, key1InsertedDocument);

Key key2 = new SingleValueKey("default", "testKey2");
Document key2InsertedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey2"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey2",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(ImmutablePair.of("value", Map.of("string", "Label2"))))))));
Document key2ExpectedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey2"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey2",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(
ImmutablePair.of("value", Map.of("string", "Label2")),
ImmutablePair.of("value", Map.of("string", "Label3"))))))));
collection.upsert(key2, key2InsertedDocument);

Key key3 = new SingleValueKey("default", "testKey3");
Document key3InsertedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey3"),
ImmutablePair.of("attributes", Map.of("name", "testKey3")));
Document key3ExpectedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey3"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey3",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(
ImmutablePair.of("value", Map.of("string", "Label2")),
ImmutablePair.of("value", Map.of("string", "Label3"))))))));
collection.upsert(key3, key3InsertedDocument);

Key key4 = new SingleValueKey("default", "testKey4");
Document key4InsertedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey4"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey4",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(
ImmutablePair.of("value", Map.of("string", "Label1")),
ImmutablePair.of("value", Map.of("string", "Label2")),
ImmutablePair.of("value", Map.of("string", "Label3"))))))));
Document key4ExpectedDocument =
Utils.createDocument(
ImmutablePair.of("id", "testKey4"),
ImmutablePair.of(
"attributes",
Map.of(
"name",
"testKey4",
"labels",
ImmutablePair.of(
"valueList",
ImmutablePair.of(
"values",
List.of(
ImmutablePair.of("value", Map.of("string", "Label1")),
ImmutablePair.of("value", Map.of("string", "Label2")),
ImmutablePair.of("value", Map.of("string", "Label3"))))))));
collection.upsert(key4, key4InsertedDocument);

Document label2Document =
Utils.createDocument(ImmutablePair.of("value", Map.of("string", "Label2")));
Document label3Document =
Utils.createDocument(ImmutablePair.of("value", Map.of("string", "Label3")));
List<Document> subDocuments = List.of(label2Document, label3Document);

BulkArrayValueUpdateRequest bulkArrayValueUpdateRequest =
new BulkArrayValueUpdateRequest(
Set.of(key1, key2, key3, key4),
"attributes.labels.valueList.values",
ADD,
subDocuments);
BulkUpdateResult bulkUpdateResult =
collection.bulkOperationOnArrayValue(bulkArrayValueUpdateRequest);
assertEquals(4, bulkUpdateResult.getUpdatedCount());

// get all documents
Query query = new Query();
Iterator<Document> results = collection.search(query);
List<Document> documents = new ArrayList<>();
while (results.hasNext()) {
documents.add(results.next());
}

assertEquals(4, documents.size());

Map<String, JsonNode> actualDocs = convertToMap(documents, "id");
Map<String, JsonNode> expectedDocs =
convertToMap(
List.of(
key1ExpectedDocument,
key2ExpectedDocument,
key3ExpectedDocument,
key4ExpectedDocument),
"id");

// Verify that the documents returned are as expected
for (Map.Entry<String, JsonNode> entry : actualDocs.entrySet()) {
String key = entry.getKey();
JsonNode attributesJsonNode = entry.getValue().get("attributes");
JsonNode expectedAttributesJsonNode = expectedDocs.get(key).get("attributes");
assertEquals(expectedAttributesJsonNode, attributesJsonNode);
}
}
}