package org.socialsignin.spring.data.dynamodb.core;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import org.socialsignin.spring.data.dynamodb.domain.sample.Playlist;
import org.socialsignin.spring.data.dynamodb.domain.sample.User;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDB;
import com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper;
@RunWith(MockitoJUnitRunner.class)
public class DynamoDBTemplateUnitTests {
@Mock
private DynamoDBMapper dynamoDBMapper;
@Mock
private AmazonDynamoDB dynamoDB;
private DynamoDBTemplate dynamoDBTemplate;
@Before
public void setUp() {
this.dynamoDBTemplate = new DynamoDBTemplate(dynamoDB);
this.dynamoDBTemplate.dynamoDBMapper = dynamoDBMapper;
}
@SuppressWarnings("unchecked")
@Test
public void testBatchDelete_CallsCorrectDynamoDBMapperMethod()
{
List<User> users = new ArrayList<User>();
dynamoDBTemplate.batchDelete(users);
Mockito.verify(dynamoDBMapper).batchDelete(Mockito.any(List.class));
}
@SuppressWarnings("unchecked")
@Test
public void testBatchSave_CallsCorrectDynamoDBMapperMethod()
{
List<User> users = new ArrayList<User>();
dynamoDBTemplate.batchSave(users);
Mockito.verify(dynamoDBMapper).batchSave(Mockito.any(List.class));
}
@Test
public void testGetOverriddenTableName_WhenConfigIsNull()
{
String overriddenTableName = dynamoDBTemplate.getOverriddenTableName("someTableName");
Assert.assertEquals("someTableName", overriddenTableName);
}
@Test
public void testGetOverriddenTableName()
{
String overriddenTableName = dynamoDBTemplate.getOverriddenTableName("someTableName");
Assert.assertEquals("someTableName", overriddenTableName);
}
@Test
public void testLoadByHashKey_WhenDynamoDBMapperReturnsNull()
{
User user = dynamoDBTemplate.load(User.class, "someHashKey");
Assert.assertNull(user);
}
@Test
public void testLoadByHashKeyAndRangeKey_WhenDynamoDBMapperReturnsNull()
{
Playlist playlist = dynamoDBTemplate.load(Playlist.class, "someHashKey","someRangeKey");
Assert.assertNull(playlist);
}
}