1
2
3
4
5 package com.jcabi.dynamo;
6
7 import org.junit.jupiter.api.Test;
8 import org.mockito.Mockito;
9 import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
10 import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
11 import software.amazon.awssdk.services.dynamodb.model.ConsumedCapacity;
12 import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest;
13 import software.amazon.awssdk.services.dynamodb.model.DeleteItemResponse;
14 import software.amazon.awssdk.services.dynamodb.model.DescribeTableRequest;
15 import software.amazon.awssdk.services.dynamodb.model.DescribeTableResponse;
16 import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement;
17 import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
18 import software.amazon.awssdk.services.dynamodb.model.PutItemResponse;
19 import software.amazon.awssdk.services.dynamodb.model.TableDescription;
20
21
22
23
24
25 final class AwsTableTest {
26
27
28
29
30 private static final String KEY = "key";
31
32 @Test
33 void savesItemToDynamo() throws Exception {
34 final Credentials credentials = Mockito.mock(Credentials.class);
35 final DynamoDbClient aws = Mockito.mock(DynamoDbClient.class);
36 Mockito.doReturn(aws).when(credentials).aws();
37 Mockito.doReturn(
38 PutItemResponse.builder().consumedCapacity(
39 ConsumedCapacity.builder().capacityUnits(1.0d).build()
40 ).build()
41 ).when(aws).putItem(Mockito.any(PutItemRequest.class));
42 Mockito.doReturn(
43 DescribeTableResponse.builder().table(
44 TableDescription.builder().keySchema(
45 KeySchemaElement.builder().attributeName(AwsTableTest.KEY).build()
46 ).build()
47 ).build()
48 ).when(aws).describeTable(Mockito.any(DescribeTableRequest.class));
49 final Table table = new AwsTable(
50 credentials, Mockito.mock(Region.class), "table-name"
51 );
52 table.put(
53 new Attributes().with(
54 "attribute-1",
55 AttributeValue.builder().s("value-1").build()
56 )
57 );
58 Mockito.verify(aws).putItem(Mockito.any(PutItemRequest.class));
59 }
60
61 @Test
62 void deletesItemFromDynamo() throws Exception {
63 final Credentials credentials = Mockito.mock(Credentials.class);
64 final DynamoDbClient aws = Mockito.mock(DynamoDbClient.class);
65 Mockito.doReturn(aws).when(credentials).aws();
66 Mockito.doReturn(
67 DeleteItemResponse.builder().consumedCapacity(
68 ConsumedCapacity.builder().capacityUnits(1.0d).build()
69 ).build()
70 ).when(aws).deleteItem(Mockito.any(DeleteItemRequest.class));
71 Mockito.doReturn(
72 DescribeTableResponse.builder().table(
73 TableDescription.builder().keySchema(
74 KeySchemaElement.builder().attributeName(AwsTableTest.KEY).build()
75 ).build()
76 ).build()
77 ).when(aws).describeTable(Mockito.any(DescribeTableRequest.class));
78 final Table table = new AwsTable(
79 credentials, Mockito.mock(Region.class), "table-name-2"
80 );
81 table.delete(
82 new Attributes().with(
83 "attribute-2",
84 AttributeValue.builder().s("value-2").build()
85 )
86 );
87 Mockito.verify(aws).deleteItem(Mockito.any(DeleteItemRequest.class));
88 }
89 }