diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQuery.java b/src/main/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQuery.java index d9a23763..47513c51 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQuery.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQuery.java @@ -22,7 +22,7 @@ public abstract class AbstractSingleEntityQuery extends AbstractQuery implements Query { - public AbstractSingleEntityQuery(DynamoDBOperations dynamoDBOperations,Class clazz) { + public AbstractSingleEntityQuery(DynamoDBOperations dynamoDBOperations, Class clazz) { super(dynamoDBOperations,clazz); } diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQuery.java b/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQuery.java index 8bee0c25..95b999e2 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQuery.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQuery.java @@ -23,10 +23,8 @@ */ public class QueryExpressionCountQuery extends AbstractSingleEntityQuery { - private DynamoDBQueryExpression queryExpression; - - private Class domainClass; - + private final DynamoDBQueryExpression queryExpression; + private final Class domainClass; public QueryExpressionCountQuery(DynamoDBOperations dynamoDBOperations, Class clazz, DynamoDBQueryExpression queryExpression) { @@ -37,7 +35,7 @@ public QueryExpressionCountQuery(DynamoDBOperations dynamoDBOperations, Class @Override public Long getSingleResult() { - return new Long(dynamoDBOperations.count(domainClass, queryExpression)); + return Long.valueOf(dynamoDBOperations.count(domainClass, queryExpression)); } } diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQuery.java b/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQuery.java index 527b13a4..8d919feb 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQuery.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQuery.java @@ -18,12 +18,12 @@ import com.amazonaws.services.dynamodbv2.model.QueryRequest; import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations; -public class QueryRequestCountQuery extends AbstractSingleEntityQuery { +public class QueryRequestCountQuery extends AbstractSingleEntityQuery { - private DynamoDBOperations dynamoDBOperations; - private QueryRequest queryRequest; + private final DynamoDBOperations dynamoDBOperations; + private final QueryRequest queryRequest; - public QueryRequestCountQuery(DynamoDBOperations dynamoDBOperations,Class clazz,QueryRequest queryRequest) { + public QueryRequestCountQuery(DynamoDBOperations dynamoDBOperations, QueryRequest queryRequest) { super(null, Long.class); this.queryRequest = queryRequest; this.dynamoDBOperations = dynamoDBOperations; @@ -32,7 +32,7 @@ public QueryRequestCountQuery(DynamoDBOperations dynamoDBOperations,Class cla @Override public Long getSingleResult() { - return new Long(dynamoDBOperations.count(clazz, queryRequest)); + return Long.valueOf(dynamoDBOperations.count(clazz, queryRequest)); } } diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashAndRangeKeyCriteria.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashAndRangeKeyCriteria.java index 622a12ff..ea0fbed9 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashAndRangeKeyCriteria.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashAndRangeKeyCriteria.java @@ -223,7 +223,7 @@ protected Query buildFinderCountQuery(DynamoDBOperations dynamoDBOperation QueryRequest queryRequest = buildQueryRequest(tableName, getGlobalSecondaryIndexName(), getHashKeyAttributeName(), getRangeKeyAttributeName(), this.getRangeKeyPropertyName(), getHashKeyConditions(), getRangeKeyConditions()); - return new QueryRequestCountQuery(dynamoDBOperations,entityInformation.getJavaType(), queryRequest); + return new QueryRequestCountQuery(dynamoDBOperations, queryRequest); } else { DynamoDBQueryExpression queryExpression = buildQueryExpression(); diff --git a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashKeyOnlyCriteria.java b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashKeyOnlyCriteria.java index 84f780fc..9dd654a0 100644 --- a/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashKeyOnlyCriteria.java +++ b/src/main/java/org/socialsignin/spring/data/dynamodb/repository/query/DynamoDBEntityWithHashKeyOnlyCriteria.java @@ -71,7 +71,7 @@ protected Query buildFinderCountQuery(DynamoDBOperations dynamoDBOperation List hashKeyConditions = getHashKeyConditions(); QueryRequest queryRequest = buildQueryRequest(dynamoDBOperations.getOverriddenTableName(clazz, entityInformation.getDynamoDBTableName()), getGlobalSecondaryIndexName(), getHashKeyAttributeName(), null, null, hashKeyConditions, null); - return new QueryRequestCountQuery<>(dynamoDBOperations, entityInformation.getJavaType(), queryRequest); + return new QueryRequestCountQuery(dynamoDBOperations, queryRequest); } else { return new ScanExpressionCountQuery<>(dynamoDBOperations, clazz, buildScanExpression(),pageQuery); diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQueryTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQueryTest.java new file mode 100644 index 00000000..05b4a3ca --- /dev/null +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/query/AbstractSingleEntityQueryTest.java @@ -0,0 +1,57 @@ +/** + * Copyright © 2013 spring-data-dynamodb (https://github.com/derjust/spring-data-dynamodb) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License 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 org.socialsignin.spring.data.dynamodb.query; + +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBQueryExpression; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations; +import org.socialsignin.spring.data.dynamodb.domain.sample.User; + +import java.util.List; +import java.util.Random; + +import static org.junit.Assert.assertEquals; + +public class AbstractSingleEntityQueryTest { + + @Mock + private DynamoDBOperations dynamoDBOperations; + @Mock + private User entity; + + private AbstractSingleEntityQuery underTest; + + @Before + public void setUp() { + underTest = new AbstractSingleEntityQuery(dynamoDBOperations, User.class) { + @Override + public User getSingleResult() { + return entity; + } + }; + } + + @Test + public void testGetResultList() { + List actual = underTest.getResultList(); + + assertEquals(1, actual.size()); + assertEquals(entity, actual.get(0)); + } + +} diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQueryTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQueryTest.java new file mode 100644 index 00000000..95465551 --- /dev/null +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/query/QueryExpressionCountQueryTest.java @@ -0,0 +1,59 @@ +/** + * Copyright © 2013 spring-data-dynamodb (https://github.com/derjust/spring-data-dynamodb) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License 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 org.socialsignin.spring.data.dynamodb.query; + +import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBQueryExpression; +import com.amazonaws.services.dynamodbv2.model.QueryRequest; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations; +import org.socialsignin.spring.data.dynamodb.domain.sample.User; + +import java.util.Random; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class QueryExpressionCountQueryTest { + + private static final Random r = new Random(); + @Mock + private DynamoDBOperations dynamoDBOperations; + @Mock + private DynamoDBQueryExpression queryExpression; + + private QueryExpressionCountQuery underTest; + + @Before + public void setUp() { + underTest = new QueryExpressionCountQuery(dynamoDBOperations, User.class, queryExpression); + } + + @Test + public void testGetSingleResult() { + int expected = r.nextInt(); + when(dynamoDBOperations.count(User.class, queryExpression)).thenReturn(expected); + + Long actual = underTest.getSingleResult(); + + assertEquals(Long.valueOf(expected), actual); + } + +} diff --git a/src/test/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQueryTest.java b/src/test/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQueryTest.java new file mode 100644 index 00000000..fdec7576 --- /dev/null +++ b/src/test/java/org/socialsignin/spring/data/dynamodb/query/QueryRequestCountQueryTest.java @@ -0,0 +1,56 @@ +/** + * Copyright © 2013 spring-data-dynamodb (https://github.com/derjust/spring-data-dynamodb) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License 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 org.socialsignin.spring.data.dynamodb.query; + +import com.amazonaws.services.dynamodbv2.model.QueryRequest; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.socialsignin.spring.data.dynamodb.core.DynamoDBOperations; + +import java.util.Random; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class QueryRequestCountQueryTest { + + private static final Random r = new Random(); + @Mock + private DynamoDBOperations dynamoDBOperations; + @Mock + private QueryRequest queryRequest; + + private QueryRequestCountQuery underTest; + + @Before + public void setUp() { + underTest = new QueryRequestCountQuery(dynamoDBOperations, queryRequest); + } + + @Test + public void testGetSingleResult() { + int expected = r.nextInt(); + when(dynamoDBOperations.count(Long.class, queryRequest)).thenReturn(expected); + + Long actual = underTest.getSingleResult(); + + assertEquals(Long.valueOf(expected), actual); + } +}