Skip to content

Commit b25872a

Browse files
Sebastian JustSebastian Just
Sebastian Just
authored and
Sebastian Just
committed
Started unit tests
1 parent 369259c commit b25872a

File tree

5 files changed

+140
-3
lines changed

5 files changed

+140
-3
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![Build Status](https://travis-ci.org/derjust/spring-data-dynamodb.svg?branch=master)](https://travis-ci.org/derjust/spring-data-dynamodb)
2+
13
# Spring Data DynamoDB ( Work in Progress ) #
24

35
The primary goal of the [Spring Data](http://www.springsource.org/spring-data) project is to make it easier to build Spring-powered applications that use data access technologies. This module deals with enhanced support for Amazon DynamoDB based data access layers.

checkstyle.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
<property name="format" value="\.printStackTrace"/>
3737
</module>
3838
<!-- Deprecated DynamoDB paramters -->
39+
<!--
3940
<module name="RegexpSinglelineJava">
4041
<property name="format" value="setKeyConditions"/>
4142
</module>
@@ -54,6 +55,6 @@
5455
<module name="RegexpSinglelineJava">
5556
<property name="format" value="withScanFilter"/>
5657
</module>
57-
58+
-->
5859
</module>
5960
</module>

pom.xml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3-
43
<modelVersion>4.0.0</modelVersion>
54
<groupId>com.github.derjust</groupId>
65
<artifactId>spring-data-dynamodb</artifactId>
@@ -19,12 +18,13 @@
1918
<properties>
2019
<spring.version>4.2.0.RELEASE</spring.version>
2120
<hibernate-validator.version>5.2.2.Final</hibernate-validator.version>
22-
<aws-java-sdk.version>1.10.39</aws-java-sdk.version>
21+
<aws-java-sdk.version>1.10.43</aws-java-sdk.version>
2322
<mockito.version>1.10.19</mockito.version>
2423
<maven.cobertura.plugin.version>2.7</maven.cobertura.plugin.version>
2524

2625
<cdi>1.2</cdi>
2726
<commons.lang>3.4</commons.lang>
27+
<logback>1.1.3</logback>
2828

2929
<maven.compiler.source>1.7</maven.compiler.source>
3030
<maven.compiler.target>1.7</maven.compiler.target>
@@ -134,6 +134,14 @@
134134
<artifactId>mockito-core</artifactId>
135135
<scope>test</scope>
136136
</dependency>
137+
138+
<dependency>
139+
<groupId>ch.qos.logback</groupId>
140+
<artifactId>logback-classic</artifactId>
141+
<version>${logback}</version>
142+
<scope>test</scope>
143+
</dependency>
144+
137145
</dependencies>
138146

139147
<build>
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package org.socialsignin.spring.data.dynamodb.core;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNotNull;
5+
import static org.mockito.Mockito.mock;
6+
import static org.mockito.Mockito.verify;
7+
import static org.mockito.Mockito.when;
8+
9+
import java.util.HashMap;
10+
import java.util.Map;
11+
12+
import org.junit.Before;
13+
import org.junit.Test;
14+
import org.junit.runner.RunWith;
15+
import org.mockito.InjectMocks;
16+
import org.mockito.Mock;
17+
import org.mockito.runners.MockitoJUnitRunner;
18+
import org.socialsignin.spring.data.dynamodb.domain.sample.Playlist;
19+
import org.socialsignin.spring.data.dynamodb.mapping.event.DynamoDBMappingEvent;
20+
import org.springframework.context.ApplicationContext;
21+
22+
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
23+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig;
24+
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapperConfig.TableNameOverride;
25+
import com.amazonaws.services.dynamodbv2.datamodeling.PaginatedQueryList;
26+
import com.amazonaws.services.dynamodbv2.model.AttributeValue;
27+
import com.amazonaws.services.dynamodbv2.model.QueryRequest;
28+
import com.amazonaws.services.dynamodbv2.model.QueryResult;
29+
import com.amazonaws.services.dynamodbv2.model.Select;
30+
31+
@RunWith(MockitoJUnitRunner.class)
32+
public class DynamoDBTemplateTest {
33+
34+
@Mock
35+
AmazonDynamoDB amazonDynamoDB;
36+
@Mock
37+
DynamoDBMapperConfig dynamoDBMapperConfig;
38+
39+
@InjectMocks
40+
private DynamoDBTemplate underTest;
41+
42+
@Before
43+
public void setUp() {
44+
}
45+
46+
@Test
47+
public void testQuery() {
48+
QueryRequest queryRequest = mock(QueryRequest.class);
49+
QueryResult queryResult = mock(QueryResult.class);
50+
when(amazonDynamoDB.query(queryRequest)).thenReturn(queryResult);
51+
52+
PaginatedQueryList<Playlist> actual = underTest.query(Playlist.class, queryRequest);
53+
54+
assertNotNull(actual);
55+
verify(dynamoDBMapperConfig).getPaginationLoadingStrategy();
56+
}
57+
58+
@Test
59+
public void testCount() {
60+
QueryRequest queryRequest = mock(QueryRequest.class);
61+
QueryResult queryResult1 = mock(QueryResult.class);
62+
when(queryResult1.getCount()).thenReturn(23);
63+
Map<String, AttributeValue> lastEvaluatedKey = new HashMap<String, AttributeValue>();
64+
when(queryResult1.getLastEvaluatedKey()).thenReturn(lastEvaluatedKey);
65+
QueryResult queryResult2 = mock(QueryResult.class);
66+
when(queryResult2.getCount()).thenReturn(42);
67+
when(queryResult2.getLastEvaluatedKey()).thenReturn(null);
68+
when(amazonDynamoDB.query(queryRequest)).thenReturn(queryResult1, queryResult2);
69+
70+
int actual = underTest.count(Object.class, queryRequest);
71+
72+
verify(queryRequest).setSelect(Select.COUNT);
73+
assertEquals(23+42, actual);
74+
}
75+
76+
@Test
77+
public void testGetOverriddenTableName() {
78+
String tableName = "narfzot42";
79+
assertEquals(tableName, underTest.getOverriddenTableName(tableName));
80+
81+
String tableNameOverride = "narfzot23";
82+
TableNameOverride tableNameReplacement = TableNameOverride.withTableNameReplacement(tableNameOverride);
83+
when(dynamoDBMapperConfig.getTableNameOverride()).thenReturn(tableNameReplacement);
84+
assertEquals(tableNameOverride, underTest.getOverriddenTableName(tableName));
85+
86+
TableNameOverride tableNamePrefix = TableNameOverride.withTableNamePrefix(tableNameOverride);
87+
when(dynamoDBMapperConfig.getTableNameOverride()).thenReturn(tableNamePrefix);
88+
assertEquals(tableNameOverride + tableName, underTest.getOverriddenTableName(tableName));
89+
}
90+
91+
@Test
92+
public void testMaybeEmitEvent() {
93+
Object eventObject = new Object();
94+
DynamoDBMappingEvent<Object> event = new DynamoDBMappingEvent<Object>(eventObject);
95+
96+
//Should not cause anything to fail
97+
underTest.maybeEmitEvent(event);
98+
99+
ApplicationContext applicationContext = mock(ApplicationContext.class);
100+
underTest.setApplicationContext(applicationContext);
101+
102+
underTest.maybeEmitEvent(event);
103+
verify(applicationContext).publishEvent(event);
104+
}
105+
106+
107+
}

src/test/resources/logback-test.xml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<configuration>
3+
4+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
5+
<layout class="ch.qos.logback.classic.PatternLayout">
6+
<Pattern>
7+
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
8+
</Pattern>
9+
</layout>
10+
</appender>
11+
12+
<logger name="org.socialsignin.spring.data.dynamodb" level="debug">
13+
</logger>
14+
15+
<root level="info">
16+
<appender-ref ref="STDOUT" />
17+
</root>
18+
19+
</configuration>

0 commit comments

Comments
 (0)