Skip to content

Commit 07b2b88

Browse files
Sebastian JustSebastian Just
authored andcommitted
Started unit tests
1 parent 369259c commit 07b2b88

File tree

5 files changed

+157
-18
lines changed

5 files changed

+157
-18
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: 27 additions & 17 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,12 @@
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>
24-
<maven.cobertura.plugin.version>2.7</maven.cobertura.plugin.version>
2523

2624
<cdi>1.2</cdi>
2725
<commons.lang>3.4</commons.lang>
26+
<logback>1.1.3</logback>
2827

2928
<maven.compiler.source>1.7</maven.compiler.source>
3029
<maven.compiler.target>1.7</maven.compiler.target>
@@ -134,25 +133,36 @@
134133
<artifactId>mockito-core</artifactId>
135134
<scope>test</scope>
136135
</dependency>
136+
137+
<dependency>
138+
<groupId>ch.qos.logback</groupId>
139+
<artifactId>logback-classic</artifactId>
140+
<version>${logback}</version>
141+
<scope>test</scope>
142+
</dependency>
143+
137144
</dependencies>
138145

139146
<build>
140147
<plugins>
141148
<plugin>
142-
<groupId>org.codehaus.mojo</groupId>
143-
<artifactId>cobertura-maven-plugin</artifactId>
144-
<version>${maven.cobertura.plugin.version}</version>
145-
<configuration>
146-
<formats>
147-
<format>xml</format>
148-
<format>html</format>
149-
</formats>
150-
<check>
151-
<totalBranchRate>85</totalBranchRate>
152-
<totalLineRate>91</totalLineRate>
153-
<haltOnFailure>true</haltOnFailure>
154-
</check>
155-
</configuration>
149+
<groupId>org.jacoco</groupId>
150+
<artifactId>jacoco-maven-plugin</artifactId>
151+
<version>0.7.5.201505241946</version>
152+
<executions>
153+
<execution>
154+
<goals>
155+
<goal>prepare-agent</goal>
156+
</goals>
157+
</execution>
158+
<execution>
159+
<id>report</id>
160+
<phase>test</phase>
161+
<goals>
162+
<goal>report</goal>
163+
</goals>
164+
</execution>
165+
</executions>
156166
</plugin>
157167
<plugin>
158168
<groupId>org.apache.maven.plugins</groupId>
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)