|
22 | 22 | import static java.util.stream.Collectors.toList;
|
23 | 23 | import static org.hamcrest.MatcherAssert.assertThat;
|
24 | 24 | import static org.hamcrest.Matchers.containsInAnyOrder;
|
| 25 | +import static org.hamcrest.Matchers.empty; |
25 | 26 | import static org.hamcrest.Matchers.is;
|
26 | 27 | import static org.hamcrest.Matchers.nullValue;
|
27 | 28 | import static org.hamcrest.Matchers.sameInstance;
|
|
36 | 37 | import static software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItemWithSort.createUniqueFakeItemWithSort;
|
37 | 38 |
|
38 | 39 | import java.util.Arrays;
|
| 40 | +import java.util.Collections; |
39 | 41 | import java.util.HashMap;
|
40 | 42 | import java.util.List;
|
41 | 43 | import java.util.Map;
|
@@ -94,13 +96,13 @@ public class BatchGetItemOperationTest {
|
94 | 96 | @Mock
|
95 | 97 | private DynamoDbEnhancedClientExtension mockExtension;
|
96 | 98 |
|
97 |
| - private DynamoDbEnhancedClient enhancedClient; |
98 | 99 | private DynamoDbTable<FakeItem> fakeItemMappedTable;
|
99 | 100 | private DynamoDbTable<FakeItemWithSort> fakeItemWithSortMappedTable;
|
100 | 101 |
|
101 | 102 | @Before
|
102 | 103 | public void setupMappedTables() {
|
103 |
| - enhancedClient = DynamoDbEnhancedClient.builder().dynamoDbClient(mockDynamoDbClient).extensions().build(); |
| 104 | + DynamoDbEnhancedClient enhancedClient = |
| 105 | + DynamoDbEnhancedClient.builder().dynamoDbClient(mockDynamoDbClient).extensions().build(); |
104 | 106 | fakeItemMappedTable = enhancedClient.table(TABLE_NAME, FakeItem.getTableSchema());
|
105 | 107 | fakeItemWithSortMappedTable = enhancedClient.table(TABLE_NAME_2, FakeItemWithSort.getTableSchema());
|
106 | 108 | }
|
@@ -296,6 +298,75 @@ public void transformResponse_multipleTables_multipleItems_noExtension() {
|
296 | 298 | assertThat(fakeItemWithSortResultsPage, containsInAnyOrder(FAKESORT_ITEMS.get(0)));
|
297 | 299 | }
|
298 | 300 |
|
| 301 | + @Test |
| 302 | + public void transformResponse_multipleTables_multipleItems_unprocessedKeys() { |
| 303 | + KeysAndAttributes keysAndAttributes1 = |
| 304 | + KeysAndAttributes.builder() |
| 305 | + .keys(Arrays.asList(FAKE_ITEM_MAPS.get(0), FAKE_ITEM_MAPS.get(1))) |
| 306 | + .build(); |
| 307 | + |
| 308 | + KeysAndAttributes keysAndAttributes2 = |
| 309 | + KeysAndAttributes.builder() |
| 310 | + .keys(Collections.singletonList(FAKESORT_ITEM_MAPS.get(0))) |
| 311 | + .build(); |
| 312 | + |
| 313 | + Map<String, KeysAndAttributes> keysAndAttributesMap = new HashMap<>(); |
| 314 | + keysAndAttributesMap.put(TABLE_NAME, keysAndAttributes1); |
| 315 | + keysAndAttributesMap.put(TABLE_NAME_2, keysAndAttributes2); |
| 316 | + |
| 317 | + BatchGetItemResponse fakeResponse = |
| 318 | + BatchGetItemResponse.builder() |
| 319 | + .unprocessedKeys(keysAndAttributesMap) |
| 320 | + .build(); |
| 321 | + |
| 322 | + BatchGetItemOperation operation = BatchGetItemOperation.create(emptyRequest()); |
| 323 | + |
| 324 | + BatchGetResultPage resultsPage = operation.transformResponse(fakeResponse, null); |
| 325 | + |
| 326 | + List<Key> fakeItemResults1 = resultsPage.unprocessedKeysForTable(fakeItemMappedTable); |
| 327 | + List<Key> fakeItemResults2 = resultsPage.unprocessedKeysForTable(fakeItemWithSortMappedTable); |
| 328 | + assertThat(fakeItemResults1, containsInAnyOrder(FAKE_ITEM_KEYS.get(0), FAKE_ITEM_KEYS.get(1))); |
| 329 | + assertThat(fakeItemResults2, containsInAnyOrder(FAKESORT_ITEM_KEYS.get(0))); |
| 330 | + } |
| 331 | + |
| 332 | + @Test |
| 333 | + public void transformResponse_multipleTables_multipleItems_no_unprocessedKeys() { |
| 334 | + BatchGetItemResponse fakeResponse = BatchGetItemResponse.builder().build(); |
| 335 | + |
| 336 | + BatchGetItemOperation operation = BatchGetItemOperation.create(emptyRequest()); |
| 337 | + |
| 338 | + BatchGetResultPage resultsPage = operation.transformResponse(fakeResponse, null); |
| 339 | + |
| 340 | + List<Key> fakeItemResults1 = resultsPage.unprocessedKeysForTable(fakeItemMappedTable); |
| 341 | + List<Key> fakeItemResults2 = resultsPage.unprocessedKeysForTable(fakeItemWithSortMappedTable); |
| 342 | + assertThat(fakeItemResults1, empty()); |
| 343 | + assertThat(fakeItemResults2, empty()); |
| 344 | + } |
| 345 | + |
| 346 | + @Test |
| 347 | + public void transformResponse_multipleTables_multipleItems_unprocessedKeys_tableNotExists() { |
| 348 | + KeysAndAttributes keysAndAttributes1 = |
| 349 | + KeysAndAttributes.builder() |
| 350 | + .keys(Arrays.asList(FAKE_ITEM_MAPS.get(0), FAKE_ITEM_MAPS.get(1))) |
| 351 | + .build(); |
| 352 | + |
| 353 | + |
| 354 | + Map<String, KeysAndAttributes> keysAndAttributesMap = new HashMap<>(); |
| 355 | + keysAndAttributesMap.put(TABLE_NAME, keysAndAttributes1); |
| 356 | + |
| 357 | + BatchGetItemResponse fakeResponse = |
| 358 | + BatchGetItemResponse.builder() |
| 359 | + .unprocessedKeys(keysAndAttributesMap) |
| 360 | + .build(); |
| 361 | + |
| 362 | + BatchGetItemOperation operation = BatchGetItemOperation.create(emptyRequest()); |
| 363 | + |
| 364 | + BatchGetResultPage resultsPage = operation.transformResponse(fakeResponse, null); |
| 365 | + |
| 366 | + List<Key> fakeItemResults = resultsPage.unprocessedKeysForTable(fakeItemWithSortMappedTable); |
| 367 | + assertThat(fakeItemResults, empty()); |
| 368 | + } |
| 369 | + |
299 | 370 | @Test
|
300 | 371 | public void transformResponse_multipleTables_multipleItems_extensionWithTransformation() {
|
301 | 372 | Map<String, List<Map<String, AttributeValue>>> page = new HashMap<>();
|
|
0 commit comments