diff --git a/.changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-d29ad20.json b/.changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-d29ad20.json new file mode 100644 index 000000000000..230e9a99fd8c --- /dev/null +++ b/.changes/next-release/bugfix-AmazonDynamoDBEnhancedClient-d29ad20.json @@ -0,0 +1,6 @@ +{ + "type": "bugfix", + "category": "Amazon DynamoDB Enhanced Client", + "contributor": "", + "description": "Returning correct operation name for DeleteTableOperation" +} diff --git a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperation.java b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperation.java index bce282bdb241..2a4b1dc3d3ad 100644 --- a/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperation.java +++ b/services-custom/dynamodb-enhanced/src/main/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperation.java @@ -38,7 +38,7 @@ public static DeleteTableOperation create() { @Override public OperationName operationName() { - return OperationName.DELETE_ITEM; + return OperationName.DELETE_TABLE; } @Override diff --git a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperationTest.java b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperationTest.java index 234eaf446206..461c12397d16 100644 --- a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperationTest.java +++ b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/DeleteTableOperationTest.java @@ -15,6 +15,13 @@ package software.amazon.awssdk.enhanced.dynamodb.internal.operations; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.is; +import static org.mockito.ArgumentMatchers.same; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.concurrent.CompletableFuture; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -24,14 +31,10 @@ import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItem; import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItemWithIndices; import software.amazon.awssdk.enhanced.dynamodb.functionaltests.models.FakeItemWithSort; -import software.amazon.awssdk.enhanced.dynamodb.model.CreateTableEnhancedRequest; +import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.mockito.ArgumentMatchers.same; -import static org.mockito.Mockito.verify; +import software.amazon.awssdk.services.dynamodb.model.DeleteTableResponse; @RunWith(MockitoJUnitRunner.class) public class DeleteTableOperationTest { @@ -46,6 +49,14 @@ public class DeleteTableOperationTest { @Mock private DynamoDbClient mockDynamoDbClient; + @Mock + private DynamoDbAsyncClient mockDynamoDbAsyncClient; + + @Test + public void operationName_returnsDeleteTable() { + DeleteTableOperation operation = DeleteTableOperation.create(); + assertThat(operation.operationName(), is(OperationName.DELETE_TABLE)); + } @Test public void getServiceCall_makesTheRightCall() { @@ -55,11 +66,26 @@ public void getServiceCall_makesTheRightCall() { verify(mockDynamoDbClient).deleteTable(same(deleteTableRequest)); } + @Test + public void getAsyncServiceCall_makesTheRightCallAndReturnsResponse() { + DeleteTableOperation operation = DeleteTableOperation.create(); + DeleteTableRequest deleteTableRequest = DeleteTableRequest.builder().build(); + CompletableFuture expectedResponse = + CompletableFuture.completedFuture(DeleteTableResponse.builder().build()); + + when(mockDynamoDbAsyncClient.deleteTable(same(deleteTableRequest))).thenReturn(expectedResponse); + + CompletableFuture response = operation.asyncServiceCall(mockDynamoDbAsyncClient) + .apply(deleteTableRequest); + + assertThat(response, is(expectedResponse)); + verify(mockDynamoDbAsyncClient).deleteTable(same(deleteTableRequest)); + } @Test public void generateRequest_from_deleteTableOperation() { DeleteTableOperation deleteTableOperation = DeleteTableOperation.create(); - final DeleteTableRequest deleteTableRequest = deleteTableOperation + DeleteTableRequest deleteTableRequest = deleteTableOperation .generateRequest(FakeItemWithSort.getTableSchema(), PRIMARY_CONTEXT, null); @@ -72,4 +98,16 @@ public void generateRequest_doesNotWorkForIndex() { operation.generateRequest(FakeItemWithIndices.getTableSchema(), GSI_1_CONTEXT, null); } + @Test + public void transformResponse_returnsNull() { + DeleteTableOperation operation = DeleteTableOperation.create(); + + Void response = operation.transformResponse(DeleteTableResponse.builder().build(), + FakeItem.getTableSchema(), + PRIMARY_CONTEXT, + null); + + assertThat(response, is((Void) null)); + } + } diff --git a/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/OperationNameTest.java b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/OperationNameTest.java new file mode 100644 index 000000000000..f79ce5a1649a --- /dev/null +++ b/services-custom/dynamodb-enhanced/src/test/java/software/amazon/awssdk/enhanced/dynamodb/internal/operations/OperationNameTest.java @@ -0,0 +1,66 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.enhanced.dynamodb.internal.operations; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + +import org.junit.Test; + +public class OperationNameTest { + + @Test + public void values_returnsExpectedConstantsInDeclarationOrder() { + assertArrayEquals(new OperationName[] { + OperationName.NONE, + OperationName.BATCH_GET_ITEM, + OperationName.BATCH_WRITE_ITEM, + OperationName.CREATE_TABLE, + OperationName.DELETE_ITEM, + OperationName.DELETE_TABLE, + OperationName.DESCRIBE_TABLE, + OperationName.GET_ITEM, + OperationName.QUERY, + OperationName.PUT_ITEM, + OperationName.SCAN, + OperationName.TRANSACT_GET_ITEMS, + OperationName.TRANSACT_WRITE_ITEMS, + OperationName.UPDATE_ITEM + }, OperationName.values()); + } + + @Test + public void label_returnsExpectedLabelForEachConstant() { + int operationNameCount = OperationName.values().length; + assertEquals(14, operationNameCount); + + assertNull(OperationName.NONE.label()); + assertEquals("BatchGetItem", OperationName.BATCH_GET_ITEM.label()); + assertEquals("BatchWriteItem", OperationName.BATCH_WRITE_ITEM.label()); + assertEquals("CreateTable", OperationName.CREATE_TABLE.label()); + assertEquals("DeleteItem", OperationName.DELETE_ITEM.label()); + assertEquals("DeleteTable", OperationName.DELETE_TABLE.label()); + assertEquals("DescribeTable", OperationName.DESCRIBE_TABLE.label()); + assertEquals("GetItem", OperationName.GET_ITEM.label()); + assertEquals("Query", OperationName.QUERY.label()); + assertEquals("PutItem", OperationName.PUT_ITEM.label()); + assertEquals("Scan", OperationName.SCAN.label()); + assertEquals("TransactGetItems", OperationName.TRANSACT_GET_ITEMS.label()); + assertEquals("TransactWriteItems", OperationName.TRANSACT_WRITE_ITEMS.label()); + assertEquals("UpdateItem", OperationName.UPDATE_ITEM.label()); + } +}