/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.user.field;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import junit.framework.Assert;
import com.enonic.cms.api.client.model.user.Address;
import com.enonic.cms.api.plugin.ext.userstore.UserField;
import com.enonic.cms.api.plugin.ext.userstore.UserFieldType;
import com.enonic.cms.api.plugin.ext.userstore.UserFields;
public class AddressTransformerTest
{
@Test
public void testFromStorableMap()
{
final Map<String, String> storableMap = new HashMap<String, String>();
storableMap.put( "address[7].street", "Karl Johansgate" );
storableMap.put( "address[44].street", "Prinsensgate" );
storableMap.put( "address[19].street", "Bogstadveien" );
storableMap.put( "address[13].street", "Kirkegata" );
final AddressTransformer transformer = new AddressTransformer();
final UserFields userFieldMap = transformer.fromStoreableMap( storableMap );
Assert.assertEquals( 4, userFieldMap.getSize() );
final Collection<UserField> userFields = userFieldMap.getFields( UserFieldType.ADDRESS );
Assert.assertEquals( 4, userFields.size() );
final UserField[] userFieldArray = userFields.toArray( new UserField[userFields.size()] );
Assert.assertEquals( "Karl Johansgate", ( (Address) userFieldArray[0].getValue() ).getStreet() );
Assert.assertEquals( "Kirkegata", ( (Address) userFieldArray[1].getValue() ).getStreet() );
Assert.assertEquals( "Bogstadveien", ( (Address) userFieldArray[2].getValue() ).getStreet() );
Assert.assertEquals( "Prinsensgate", ( (Address) userFieldArray[3].getValue() ).getStreet() );
}
@Test
public void testToStoreableMap()
{
final UserFields userFields = new UserFields( true );
final Address address1 = new Address();
address1.setStreet( "Karl Johansgate" );
userFields.add( new UserField( UserFieldType.ADDRESS, address1 ) );
final Address address2 = new Address();
address2.setStreet( "Kirkegata 1" );
userFields.add( new UserField( UserFieldType.ADDRESS, address2 ) );
final Address address3 = new Address();
address3.setStreet( "Bogstadveien" );
userFields.add( new UserField( UserFieldType.ADDRESS, address3 ) );
final Address address4 = new Address();
address4.setStreet( "Kirkegata 8" );
userFields.add( new UserField( UserFieldType.ADDRESS, address4 ) );
final AddressTransformer transformer = new AddressTransformer();
final Map<String, String> storableMap = transformer.toStoreableMap( userFields );
Assert.assertEquals( 4, storableMap.size() );
Assert.assertTrue( storableMap.containsKey( "address[0].street" ) );
Assert.assertEquals( "Karl Johansgate", storableMap.get( "address[0].street" ) );
Assert.assertTrue( storableMap.containsKey( "address[1].street" ) );
Assert.assertEquals( "Kirkegata 1", storableMap.get( "address[1].street" ) );
Assert.assertTrue( storableMap.containsKey( "address[2].street" ) );
Assert.assertEquals( "Bogstadveien", storableMap.get( "address[2].street" ) );
Assert.assertTrue( storableMap.containsKey( "address[3].street" ) );
Assert.assertEquals( "Kirkegata 8", storableMap.get( "address[3].street" ) );
}
}