/* * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * 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://aws.amazon.com/apache2.0 * * This file 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 com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import com.amazonaws.Request; import com.amazonaws.Response; import com.amazonaws.metrics.RequestMetricCollector; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapperConfig.ConsistentReads; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapperConfig.ObjectTableNameResolver; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapperConfig.PaginationLoadingStrategy; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapperConfig.SaveBehavior; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapperConfig.TableNameOverride; import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.DynamoDBMapperConfig.TableNameResolver; import org.junit.Test; public class DynamoDBMapperConfigTest { @Test public void testMapperConfigBuilderWithAndAddMethods() { DynamoDBMapperConfig.Builder b = new DynamoDBMapperConfig.Builder(); assertNotNull(b.withConsistentReads(ConsistentReads.CONSISTENT)); assertEquals(b.getConsistentReads(), ConsistentReads.CONSISTENT); ConversionSchema cs = new ConversionSchemas.StandardConversionSchema(null, null, null); assertNotNull(b.withConversionSchema(cs)); assertSame(b.getConversionSchema(), cs); ObjectTableNameResolver otnr = new TestObjectTableNameResolver(); assertNotNull(b.withObjectTableNameResolver(otnr)); assertSame(b.getObjectTableNameResolver(), otnr); assertNotNull(b.withPaginationLoadingStrategy(PaginationLoadingStrategy.LAZY_LOADING)); assertEquals(b.getPaginationLoadingStrategy(), PaginationLoadingStrategy.LAZY_LOADING); RequestMetricCollector rmc = new TestRequestMetricCollector(); assertNotNull(b.withRequestMetricCollector(rmc)); assertSame(b.getRequestMetricCollector(), rmc); assertNotNull(b.withSaveBehavior(SaveBehavior.CLOBBER)); assertEquals(b.getSaveBehavior(), SaveBehavior.CLOBBER); TableNameOverride tno = new TableNameOverride("test"); assertNotNull(b.withTableNameOverride(tno)); assertSame(b.getTableNameOverride(), tno); TableNameResolver tnr = new DynamoDBMapperConfig.DefaultTableNameResolver(); assertNotNull(b.withTableNameResolver(tnr)); assertSame(b.getTableNameResolver(), tnr); DynamoDBMapperConfig conf = b.build(); assertEquals(conf.getConsistentReads(), ConsistentReads.CONSISTENT); assertSame(conf.getConversionSchema(), cs); assertSame(conf.getObjectTableNameResolver(), otnr); assertEquals(conf.getPaginationLoadingStrategy(), PaginationLoadingStrategy.LAZY_LOADING); assertSame(conf.getRequestMetricCollector(), rmc); assertEquals(conf.getSaveBehavior(), SaveBehavior.CLOBBER); assertSame(conf.getTableNameOverride(), tno); assertSame(conf.getTableNameResolver(), tnr); } @Test public void testSetMethods() { DynamoDBMapperConfig.Builder b = new DynamoDBMapperConfig.Builder(); b.setConsistentReads( ConsistentReads.CONSISTENT); assertEquals(b.getConsistentReads(), ConsistentReads.CONSISTENT); ConversionSchema cs = new ConversionSchemas.StandardConversionSchema(null, null, null); b.setConversionSchema(cs); assertSame(b.getConversionSchema(), cs); ObjectTableNameResolver otnr = new TestObjectTableNameResolver(); b.setObjectTableNameResolver(otnr); assertSame(b.getObjectTableNameResolver(), otnr); b.setPaginationLoadingStrategy(PaginationLoadingStrategy.LAZY_LOADING); assertEquals(b.getPaginationLoadingStrategy(), PaginationLoadingStrategy.LAZY_LOADING); RequestMetricCollector rmc = new TestRequestMetricCollector(); b.setRequestMetricCollector(rmc); assertSame(b.getRequestMetricCollector(), rmc); b.setSaveBehavior(SaveBehavior.CLOBBER); assertEquals(b.getSaveBehavior(), SaveBehavior.CLOBBER); TableNameOverride tno = new TableNameOverride("test"); b.setTableNameOverride(tno); assertSame(b.getTableNameOverride(), tno); TableNameResolver tnr = new DynamoDBMapperConfig.DefaultTableNameResolver(); b.setTableNameResolver(tnr); assertSame(b.getTableNameResolver(), tnr); DynamoDBMapperConfig conf = b.build(); assertEquals(conf.getConsistentReads(), ConsistentReads.CONSISTENT); assertSame(conf.getConversionSchema(), cs); assertSame(conf.getObjectTableNameResolver(), otnr); assertEquals(conf.getPaginationLoadingStrategy(), PaginationLoadingStrategy.LAZY_LOADING); assertSame(conf.getRequestMetricCollector(), rmc); assertEquals(conf.getSaveBehavior(), SaveBehavior.CLOBBER); assertSame(conf.getTableNameOverride(), tno); assertSame(conf.getTableNameResolver(), tnr); } @Test public void testConstructorWithNullOverrides() { DynamoDBMapperConfig conf = new DynamoDBMapperConfig.Builder().build(); DynamoDBMapperConfig copy = new DynamoDBMapperConfig(conf, null); assertEquals(conf.getConsistentReads(), copy.getConsistentReads()); assertEquals(conf.getConversionSchema(), copy.getConversionSchema()); assertEquals(conf.getObjectTableNameResolver(), copy.getObjectTableNameResolver()); assertEquals(conf.getPaginationLoadingStrategy(), copy.getPaginationLoadingStrategy()); assertEquals(conf.getRequestMetricCollector(), copy.getRequestMetricCollector()); assertEquals(conf.getSaveBehavior(), conf.getSaveBehavior()); assertEquals(conf.getTableNameOverride(), copy.getTableNameOverride()); assertEquals(conf.getTableNameResolver(), copy.getTableNameResolver()); } @Test public void testConstructorWithNonNullOverrides() { DynamoDBMapperConfig.Builder b = new DynamoDBMapperConfig.Builder(); b.setConsistentReads( ConsistentReads.CONSISTENT); assertEquals(b.getConsistentReads(), ConsistentReads.CONSISTENT); ConversionSchema cs = new ConversionSchemas.StandardConversionSchema(null, null, null); b.setConversionSchema(cs); assertSame(b.getConversionSchema(), cs); ObjectTableNameResolver otnr = new TestObjectTableNameResolver(); b.setObjectTableNameResolver(otnr); assertSame(b.getObjectTableNameResolver(), otnr); b.setPaginationLoadingStrategy(PaginationLoadingStrategy.LAZY_LOADING); assertEquals(b.getPaginationLoadingStrategy(), PaginationLoadingStrategy.LAZY_LOADING); RequestMetricCollector rmc = new TestRequestMetricCollector(); b.setRequestMetricCollector(rmc); assertSame(b.getRequestMetricCollector(), rmc); b.setSaveBehavior(SaveBehavior.CLOBBER); assertEquals(b.getSaveBehavior(), SaveBehavior.CLOBBER); TableNameOverride tno = new TableNameOverride("test"); b.setTableNameOverride(tno); assertSame(b.getTableNameOverride(), tno); TableNameResolver tnr = new DynamoDBMapperConfig.DefaultTableNameResolver(); b.setTableNameResolver(tnr); assertSame(b.getTableNameResolver(), tnr); DynamoDBMapperConfig conf = b.build(); DynamoDBMapperConfig nullConfig = new DynamoDBMapperConfig.Builder() .withConsistentReads(null) .withConversionSchema(null).withObjectTableNameResolver(null) .withPaginationLoadingStrategy(null).withRequestMetricCollector(null) .withSaveBehavior(null).withTableNameOverride(null).withTableNameResolver(null) .build(); DynamoDBMapperConfig copy = new DynamoDBMapperConfig(nullConfig, conf); assertEquals(copy.getConsistentReads(), conf.getConsistentReads()); assertEquals(copy.getConversionSchema(), conf.getConversionSchema()); assertEquals(copy.getObjectTableNameResolver(), conf.getObjectTableNameResolver()); assertEquals(copy.getPaginationLoadingStrategy(), conf.getPaginationLoadingStrategy()); assertEquals(copy.getRequestMetricCollector(), conf.getRequestMetricCollector()); assertEquals(copy.getSaveBehavior(), conf.getSaveBehavior()); assertEquals(copy.getTableNameOverride(), conf.getTableNameOverride()); assertEquals(copy.getTableNameResolver(), conf.getTableNameResolver()); } private static class TestObjectTableNameResolver implements ObjectTableNameResolver { @Override public String getTableName(Object object, DynamoDBMapperConfig config) { // TODO Auto-generated method stub return null; } } private static class TestRequestMetricCollector extends RequestMetricCollector { @Override public void collectMetrics(Request<?> arg0, Response<?> arg1) { // TODO Auto-generated method stub } } }