package org.socialsignin.spring.data.dynamodb.repository.query;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
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.repository.support.DynamoDBIdIsHashAndRangeKeyEntityInformation;
@RunWith(MockitoJUnitRunner.class)
public class DynamoDBEntityWithHashAndRangeKeyCriteriaUnitTest extends AbstractDynamoDBQueryCriteriaUnitTests<DynamoDBEntityWithHashAndRangeKeyCriteria<Playlist,String>> {
@Mock
private DynamoDBIdIsHashAndRangeKeyEntityInformation<Playlist,String> entityInformation;
@Before
public void setUp()
{
Mockito.when(entityInformation.getHashKeyPropertyName()).thenReturn("userName");
Mockito.when(entityInformation.getRangeKeyPropertyName()).thenReturn("playlistName");
criteria = new DynamoDBEntityWithHashAndRangeKeyCriteria<Playlist,String>(entityInformation);
}
@Test
public void testHasIndexHashKeyEqualConditionAnd_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsAnIndexHashKeyButNotAHashKeyOrRangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("displayName")).thenReturn(true);
criteria.withPropertyEquals("displayName", "some display name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertTrue(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNotAnIndexHashKeyButIsAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("userName")).thenReturn(false);
criteria.withPropertyEquals("userName", "some user name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNotAnIndexHashKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("playlistName")).thenReturn(false);
criteria.withPropertyEquals("playlistName", "some playlist name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsBothAnIndexHashKeyAndAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("userName")).thenReturn(true);
criteria.withPropertyEquals("userName", "some user name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertTrue(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsBothAnIndexHashKeyAndARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("playlistName")).thenReturn(true);
criteria.withPropertyEquals("playlistName", "some playlist name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertTrue(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNeitherAnIndexHashKeyOrAHashKeyOrRangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("displayName")).thenReturn(false);
criteria.withPropertyEquals("displayName", "some display name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNeitherAnIndexHashKeyOrAHashKeyButIsRangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("playlistName")).thenReturn(false);
criteria.withPropertyEquals("playlistName", "some playlist name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsAnIndexRangeKeyButNotAHashKeyOrRangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("displayName")).thenReturn(true);
criteria.withPropertyEquals("displayName", "some display name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertTrue(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsAnIndexRangeKeyButNotAHashKeyAndIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("playlistName")).thenReturn(true);
criteria.withPropertyEquals("playlistName", "some playlist name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertTrue(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNotAnIndexRangeKeyButIsAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("userName")).thenReturn(false);
criteria.withPropertyEquals("userName", "some user name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNotAnIndexRangeKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("playlistName")).thenReturn(false);
criteria.withPropertyEquals("playlist name", "some playlist name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsBothAnIndexRangeKeyAndAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("userName")).thenReturn(true);
criteria.withPropertyEquals("userName", "some user name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertTrue(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNeitherAnIndexRangeKeyOrAHashKeyOrARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("displayName")).thenReturn(false);
criteria.withPropertyEquals("displayName", "some display name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsEqualityOnAPropertyWhichIsNeitherAnIndexRangeKeyOrAHashKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("playlistName")).thenReturn(false);
criteria.withPropertyEquals("playlistName", "some playlist name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
// repeat
@Test
public void testHasIndexHashKeyEqualConditionAnd_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsAnIndexHashKeyButNotAHashKeyOrRangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("displayName")).thenReturn(true);
criteria.withPropertyBetween("displayName", "some display name","some other display name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualConditionAnd_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsAnIndexHashKeyButNotAHashKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("playlistName")).thenReturn(true);
criteria.withPropertyBetween("playlistName", "some playlist name","some other playlist name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsNotAnIndexHashKeyButIsAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("userName")).thenReturn(false);
criteria.withPropertyBetween("userName", "some user name","some other user name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsBothAnIndexHashKeyAndAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("userName")).thenReturn(true);
criteria.withPropertyBetween("userName", "some user name","some other user name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsNeitherAnIndexHashKeyOrAHashKeyOrARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("displayName")).thenReturn(false);
criteria.withPropertyBetween("displayName", "some display name","some other display name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexHashKeyEqualCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsNeitherAnIndexHashKeyOrAHashKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexHashKeyProperty("playlistName")).thenReturn(false);
criteria.withPropertyBetween("playlistName", "some playlist name","some other playlist name", String.class);
boolean hasIndexHashKeyEqualCondition = criteria.hasIndexHashKeyEqualCondition();
Assert.assertFalse(hasIndexHashKeyEqualCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsAnIndexRangeKeyButNotAHashKeyOrARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("displayName")).thenReturn(true);
criteria.withPropertyBetween("displayName", "some display name","some other display name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertTrue(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsAnIndexRangeKeyButNotAHashKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("playlistName")).thenReturn(true);
criteria.withPropertyBetween("playlistName", "some playlist name","some other playlist name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertTrue(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsNotAnIndexRangeKeyButIsAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("userName")).thenReturn(false);
criteria.withPropertyBetween("userName", "some user name","some other user name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsBothAnIndexRangeKeyAndAHashKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("userName")).thenReturn(true);
criteria.withPropertyBetween("userName", "some user name","some other user name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertTrue(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsNeitherAnIndexRangeKeyOrAHashKeyOrARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("displayName")).thenReturn(false);
criteria.withPropertyBetween("displayName", "some display name","some other display name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
@Test
public void testHasIndexRangeKeyCondition_WhenConditionCriteriaIsNonEqualityConditionOnAPropertyWhichIsNeitherAnIndexRangeKeyOrAHashKeyButIsARangeKey()
{
Mockito.when(entityInformation.isGlobalIndexRangeKeyProperty("playlistName")).thenReturn(false);
criteria.withPropertyBetween("playlistName", "some playlist name","some other playlist name", String.class);
boolean hasIndexRangeKeyCondition = criteria.hasIndexRangeKeyCondition();
Assert.assertFalse(hasIndexRangeKeyCondition);
}
}