/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.user.field;
import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;
import org.junit.Test;
import com.enonic.esl.containers.ExtendedMap;
import com.enonic.cms.api.client.model.user.Gender;
import com.enonic.cms.api.plugin.ext.userstore.UserFieldType;
import com.enonic.cms.api.plugin.ext.userstore.UserFields;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
public class UserFieldTransformerTest
{
@Test
public void testToUserFields()
{
ExtendedMap form = new ExtendedMap( true );
form.put( "first_name", "Ola" );
form.put( "last_name", "Normann" );
form.put( "gender", "male" );
form.put( "birthday", "2009-11-10" );
UserFieldTransformer transformer = new UserFieldTransformer();
UserFields fields = transformer.toUserFields( form );
assertEquals( 4, fields.getSize() );
assertNotNull( fields.getField( UserFieldType.FIRST_NAME ) );
assertEquals( "Ola", fields.getField( UserFieldType.FIRST_NAME ).getValue() );
assertNotNull( fields.getField( UserFieldType.LAST_NAME ) );
assertEquals( "Normann", fields.getField( UserFieldType.LAST_NAME ).getValue() );
assertNotNull( fields.getField( UserFieldType.GENDER ) );
assertEquals( Gender.MALE, fields.getField( UserFieldType.GENDER ).getValue() );
assertNotNull( fields.getField( UserFieldType.BIRTHDAY ) );
Object birthday = fields.getField( UserFieldType.BIRTHDAY ).getValue();
assertEquals( birthday.getClass(), Date.class );
Date date = Date.class.cast( birthday );
DateFormat dateFormat = DateFormat.getDateInstance( DateFormat.MEDIUM, Locale.ROOT );
// the year param is year minus 1900. the month is between 0-11.
assertEquals( dateFormat.format( new Date( 109, 10, 10 ) ), dateFormat.format( date ) );
}
@Test
public void toUserFields_given_empty_strings_then_non_textual_fields_becomes_null()
{
// setup
UserFieldTransformer transformer = new UserFieldTransformer();
ExtendedMap submittedValues = new ExtendedMap( true );
submittedValues.put( UserFieldType.BIRTHDAY.getName(), "" );
submittedValues.put( UserFieldType.GENDER.getName(), "" );
submittedValues.put( UserFieldType.HTML_EMAIL.getName(), "" );
submittedValues.put( UserFieldType.LOCALE.getName(), "" );
submittedValues.put( UserFieldType.TIME_ZONE.getName(), "" );
// exercise
UserFields userFields = transformer.toUserFields( submittedValues );
// verify
assertEquals( null, userFields.getField( UserFieldType.BIRTHDAY ).getValue() );
assertEquals( null, userFields.getField( UserFieldType.GENDER ).getValue() );
assertEquals( null, userFields.getField( UserFieldType.HTML_EMAIL ).getValue() );
assertEquals( null, userFields.getField( UserFieldType.LOCALE ).getValue() );
assertEquals( null, userFields.getField( UserFieldType.TIME_ZONE ).getValue() );
}
@Test
public void toUserFields_given_empty_strings_then_textual_fields_becomes_empty()
{
// setup
UserFieldTransformer transformer = new UserFieldTransformer();
ExtendedMap submittedValues = new ExtendedMap( true );
submittedValues.put( UserFieldType.FIRST_NAME.getName(), "" );
submittedValues.put( UserFieldType.LAST_NAME.getName(), "" );
submittedValues.put( UserFieldType.NICK_NAME.getName(), "" );
submittedValues.put( UserFieldType.COUNTRY.getName(), "" );
submittedValues.put( UserFieldType.GLOBAL_POSITION.getName(), "" );
submittedValues.put( UserFieldType.HOME_PAGE.getName(), "" );
submittedValues.put( UserFieldType.INITIALS.getName(), "" );
submittedValues.put( UserFieldType.MEMBER_ID.getName(), "" );
submittedValues.put( UserFieldType.MIDDLE_NAME.getName(), "" );
submittedValues.put( UserFieldType.ORGANIZATION.getName(), "" );
// exercise
UserFields userFields = transformer.toUserFields( submittedValues );
// verify
assertEquals( "", userFields.getField( UserFieldType.FIRST_NAME ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.LAST_NAME ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.NICK_NAME ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.COUNTRY ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.GLOBAL_POSITION ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.HOME_PAGE ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.INITIALS ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.MEMBER_ID ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.MIDDLE_NAME ).getValue() );
assertEquals( "", userFields.getField( UserFieldType.ORGANIZATION ).getValue() );
}
}