/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.user.field; import java.util.List; import java.util.Locale; import java.util.TimeZone; import org.joda.time.DateMidnight; import org.junit.Test; import com.enonic.cms.api.client.model.user.Address; import com.enonic.cms.api.client.model.user.Gender; 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; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfig; import com.enonic.cms.api.plugin.ext.userstore.UserStoreConfigField; import static org.junit.Assert.*; public class UserFieldsTest { @Test public void getRemoteFields_given_no_fields_then_none_is_returned() { // setup UserFields userFields = new UserFields( false ); UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, false ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, false ) ); // exercise UserFields remoteUserFields = userFields.getRemoteFields( userStoreConfig ); // verify assertEquals( 0, remoteUserFields.getSize() ); } @Test public void getRemoteFields_given_fields_but_none_is_remote_then_none_is_returned() { // setup UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); userFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, false ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, false ) ); // exercise UserFields remoteUserFields = userFields.getRemoteFields( userStoreConfig ); // verify assertEquals( 0, remoteUserFields.getSize() ); } @Test public void getRemoteFields_given_fields_and_one_is_remote_then_one_is_returned() { // setup UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); userFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); userFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.INITIALS, false ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, false ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, true ) ); // exercise UserFields remoteUserFields = userFields.getRemoteFields( userStoreConfig ); // verify assertEquals( 1, remoteUserFields.getSize() ); assertEquals( "Lastname", remoteUserFields.getField( UserFieldType.LAST_NAME ).getValue() ); } @Test public void getRemoteFields_given_fields_and_one_is_local_then_all_but_one_is_returned() { // setup UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); userFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); userFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); userFields.add( new UserField( UserFieldType.PHONE, "12345678" ) ); UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, true ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, false ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.INITIALS, true ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.PHONE, true ) ); // exercise UserFields remoteUserFields = userFields.getRemoteFields( userStoreConfig ); // verify assertEquals( 3, remoteUserFields.getSize() ); assertEquals( "FL", remoteUserFields.getField( UserFieldType.INITIALS ).getValue() ); assertEquals( "12345678", remoteUserFields.getField( UserFieldType.PHONE ).getValue() ); assertEquals( "Firstname", remoteUserFields.getField( UserFieldType.FIRST_NAME ).getValue() ); } @Test public void getRemoteFields_given_fields_and_all_is_remote_then_all_is_returned() { // setup UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); userFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); userFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); userFields.add( new UserField( UserFieldType.PHONE, "12345678" ) ); Address address = new Address(); address.setStreet( "My street 1" ); userFields.add( new UserField( UserFieldType.ADDRESS, address ) ); UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.FIRST_NAME, true ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.LAST_NAME, true ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.INITIALS, true ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.PHONE, true ) ); userStoreConfig.addUserFieldConfig( createUserStoreUserFieldConfig( UserFieldType.ADDRESS, true ) ); // exercise UserFields remoteUserFields = userFields.getRemoteFields( userStoreConfig ); // verify assertEquals( 5, remoteUserFields.getSize() ); assertEquals( "FL", remoteUserFields.getField( UserFieldType.INITIALS ).getValue() ); assertEquals( "12345678", remoteUserFields.getField( UserFieldType.PHONE ).getValue() ); assertEquals( "Firstname", remoteUserFields.getField( UserFieldType.FIRST_NAME ).getValue() ); assertEquals( "Lastname", remoteUserFields.getField( UserFieldType.LAST_NAME ).getValue() ); assertEquals( "My street 1", ( (Address) remoteUserFields.getField( UserFieldType.ADDRESS ).getValue() ).getStreet() ); } @Test public void existingFieldsEquals_given_empty_when_this_is_empty_then_true_is_returned() { // setup UserFields localUserFields = new UserFields( true ); UserFields remoteUserFields = new UserFields( true ); // exercise & verify assertEquals( true, localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_same_fields_with_equal_values_then_true_is_returned() { // setup UserFields localUserFields = new UserFields( true ); Address localAddress = new Address(); localAddress.setLabel( "Label" ); localAddress.setStreet( "Street" ); localAddress.setPostalCode( "0001" ); localAddress.setPostalAddress( "Oslo" ); localAddress.setRegion( "Oslo" ); localAddress.setCountry( "Norway" ); localUserFields.add( new UserField( UserFieldType.ADDRESS, localAddress ) ); localUserFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) ); localUserFields.add( new UserField( UserFieldType.COUNTRY, "Country" ) ); localUserFields.add( new UserField( UserFieldType.DESCRIPTION, "Description" ) ); localUserFields.add( new UserField( UserFieldType.FAX, "01010101" ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.GENDER, Gender.FEMALE ) ); localUserFields.add( new UserField( UserFieldType.GLOBAL_POSITION, "1234ABCD" ) ); localUserFields.add( new UserField( UserFieldType.HOME_PAGE, "http://www.enonic.com" ) ); localUserFields.add( new UserField( UserFieldType.HTML_EMAIL, Boolean.TRUE ) ); localUserFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); localUserFields.add( new UserField( UserFieldType.LOCALE, Locale.GERMANY ) ); localUserFields.add( new UserField( UserFieldType.MEMBER_ID, "MemberId123" ) ); localUserFields.add( new UserField( UserFieldType.MIDDLE_NAME, "Middle name" ) ); localUserFields.add( new UserField( UserFieldType.MOBILE, "98765432" ) ); localUserFields.add( new UserField( UserFieldType.NICK_NAME, "Nick" ) ); localUserFields.add( new UserField( UserFieldType.ORGANIZATION, "Organization" ) ); localUserFields.add( new UserField( UserFieldType.PERSONAL_ID, "PersonalId123" ) ); localUserFields.add( new UserField( UserFieldType.PHONE, "12345678" ) ); localUserFields.add( new UserField( UserFieldType.PHOTO, new byte[]{123} ) ); localUserFields.add( new UserField( UserFieldType.PREFIX, "Prefix" ) ); localUserFields.add( new UserField( UserFieldType.SUFFIX, "Suffix" ) ); localUserFields.add( new UserField( UserFieldType.TIME_ZONE, TimeZone.getTimeZone( "UTC" ) ) ); localUserFields.add( new UserField( UserFieldType.TITLE, "Title" ) ); UserFields remoteUserFields = new UserFields( true ); Address remoteAddress = new Address(); remoteAddress.setLabel( "Label" ); remoteAddress.setStreet( "Street" ); remoteAddress.setPostalCode( "0001" ); remoteAddress.setPostalAddress( "Oslo" ); remoteAddress.setRegion( "Oslo" ); remoteAddress.setCountry( "Norway" ); remoteUserFields.add( new UserField( UserFieldType.ADDRESS, remoteAddress ) ); remoteUserFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) ); remoteUserFields.add( new UserField( UserFieldType.COUNTRY, "Country" ) ); remoteUserFields.add( new UserField( UserFieldType.DESCRIPTION, "Description" ) ); remoteUserFields.add( new UserField( UserFieldType.FAX, "01010101" ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.GENDER, Gender.FEMALE ) ); remoteUserFields.add( new UserField( UserFieldType.GLOBAL_POSITION, "1234ABCD" ) ); remoteUserFields.add( new UserField( UserFieldType.HOME_PAGE, "http://www.enonic.com" ) ); remoteUserFields.add( new UserField( UserFieldType.HTML_EMAIL, Boolean.TRUE ) ); remoteUserFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); remoteUserFields.add( new UserField( UserFieldType.LOCALE, Locale.GERMANY ) ); remoteUserFields.add( new UserField( UserFieldType.MEMBER_ID, "MemberId123" ) ); remoteUserFields.add( new UserField( UserFieldType.MIDDLE_NAME, "Middle name" ) ); remoteUserFields.add( new UserField( UserFieldType.MOBILE, "98765432" ) ); remoteUserFields.add( new UserField( UserFieldType.NICK_NAME, "Nick" ) ); remoteUserFields.add( new UserField( UserFieldType.ORGANIZATION, "Organization" ) ); remoteUserFields.add( new UserField( UserFieldType.PERSONAL_ID, "PersonalId123" ) ); remoteUserFields.add( new UserField( UserFieldType.PHONE, "12345678" ) ); remoteUserFields.add( new UserField( UserFieldType.PHOTO, new byte[]{123} ) ); remoteUserFields.add( new UserField( UserFieldType.PREFIX, "Prefix" ) ); remoteUserFields.add( new UserField( UserFieldType.SUFFIX, "Suffix" ) ); remoteUserFields.add( new UserField( UserFieldType.TIME_ZONE, TimeZone.getTimeZone( "UTC" ) ) ); remoteUserFields.add( new UserField( UserFieldType.TITLE, "Title" ) ); // exercise & verify assertEquals( true, localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_photo_field_then_false() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.PHOTO, new byte[]{123} ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.PHOTO, new byte[]{101} ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_gender_field_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.GENDER, Gender.MALE ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.GENDER, Gender.FEMALE ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_htmlEmail_field_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.HTML_EMAIL, Boolean.FALSE ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.HTML_EMAIL, Boolean.TRUE ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_locale_field_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.LOCALE, Locale.GERMANY ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.LOCALE, Locale.FRENCH ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_timeZone_field_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.TIME_ZONE, TimeZone.getTimeZone( "UTC" ) ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.TIME_ZONE, TimeZone.getTimeZone( "HST" ) ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_birthDay_field_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 1, 19 ).toDate() ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_adress_field_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( true ); Address localAddress = new Address(); localAddress.setLabel( "Label" ); localAddress.setStreet( "Street" ); localAddress.setPostalCode( "0001" ); localAddress.setPostalAddress( "Oslo" ); localAddress.setRegion( "Oslo" ); localAddress.setCountry( "Norway" ); localUserFields.add( new UserField( UserFieldType.ADDRESS, localAddress ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( true ); Address remoteAddress = new Address(); remoteAddress.setLabel( "Label" ); remoteAddress.setStreet( "Street" ); remoteAddress.setPostalCode( "0002" ); remoteAddress.setPostalAddress( "Oslo" ); remoteAddress.setRegion( "Oslo" ); remoteAddress.setCountry( "Norway" ); remoteUserFields.add( new UserField( UserFieldType.ADDRESS, remoteAddress ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_unequal_number_of_adresses_fields_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( true ); Address localAddress1 = new Address(); localAddress1.setLabel( "Label" ); localAddress1.setStreet( "Street" ); localAddress1.setPostalCode( "0001" ); localAddress1.setPostalAddress( "Oslo" ); localAddress1.setRegion( "Oslo" ); localAddress1.setCountry( "Norway" ); localUserFields.add( new UserField( UserFieldType.ADDRESS, localAddress1 ) ); Address localAddress2 = new Address(); localAddress2.setLabel( "Label2" ); localAddress2.setStreet( "Street 2" ); localAddress2.setPostalCode( "0002" ); localAddress2.setPostalAddress( "Oslo" ); localAddress2.setRegion( "Oslo" ); localAddress2.setCountry( "Norway" ); localUserFields.add( new UserField( UserFieldType.ADDRESS, localAddress2 ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( true ); Address remoteAddress = new Address(); remoteAddress.setLabel( "Label" ); remoteAddress.setStreet( "Street" ); remoteAddress.setPostalCode( "0001" ); remoteAddress.setPostalAddress( "Oslo" ); remoteAddress.setRegion( "Oslo" ); remoteAddress.setCountry( "Norway" ); remoteUserFields.add( new UserField( UserFieldType.ADDRESS, remoteAddress ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_equal_fields_but_less_fields_in_this_then_true_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); remoteUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); // exercise & verify assertTrue( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void existingFieldsEquals_given_equal_fields_but_less_fields_in_other_then_false_is_returned() { // setup UserFields localUserFields = new UserFields( false ); localUserFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); localUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); localUserFields.add( new UserField( UserFieldType.LAST_NAME, "Lastname" ) ); UserFields remoteUserFields = new UserFields( false ); remoteUserFields.add( new UserField( UserFieldType.INITIALS, "FL" ) ); remoteUserFields.add( new UserField( UserFieldType.FIRST_NAME, "Firstname" ) ); // exercise & verify assertFalse( localUserFields.existingFieldsEquals( remoteUserFields ) ); } @Test public void getConfiguredFieldsOnly() { // setup UserFields allUserFields = new UserFields( false ); allUserFields.add( new UserField( UserFieldType.FIRST_NAME, "First name" ) ); allUserFields.add( new UserField( UserFieldType.LAST_NAME, "Last name" ) ); allUserFields.add( new UserField( UserFieldType.PHONE, "Phone" ) ); Address address = new Address(); address.setLabel( "Label" ); address.setIsoCountry( "IsoCountry" ); address.setIsoRegion( "IsoRegion" ); address.setCountry( "Country" ); address.setRegion( "Region" ); allUserFields.add( new UserField( UserFieldType.ADDRESS, address ) ); UserStoreConfig userStoreConfig = new UserStoreConfig(); userStoreConfig.addUserFieldConfig( new UserStoreConfigField( UserFieldType.FIRST_NAME ) ); userStoreConfig.addUserFieldConfig( new UserStoreConfigField( UserFieldType.LAST_NAME ) ); UserStoreConfigField addressConfig = new UserStoreConfigField( UserFieldType.ADDRESS ); addressConfig.setIso( false ); userStoreConfig.addUserFieldConfig( addressConfig ); // exercise UserFields configuredUserFieldsOnly = allUserFields.getConfiguredFieldsOnly( userStoreConfig ); // verify assertEquals( 3, configuredUserFieldsOnly.getSize() ); assertEquals( "First name", configuredUserFieldsOnly.getField( UserFieldType.FIRST_NAME ).getValue() ); assertEquals( "Last name", configuredUserFieldsOnly.getField( UserFieldType.LAST_NAME ).getValue() ); assertEquals( null, configuredUserFieldsOnly.getField( UserFieldType.PHONE ) ); assertEquals( "Label", configuredUserFieldsOnly.getField( UserFieldType.ADDRESS ).getValueAsAddress().getLabel() ); assertEquals( "Country", configuredUserFieldsOnly.getField( UserFieldType.ADDRESS ).getValueAsAddress().getCountry() ); assertEquals( "Region", configuredUserFieldsOnly.getField( UserFieldType.ADDRESS ).getValueAsAddress().getRegion() ); assertEquals( null, configuredUserFieldsOnly.getField( UserFieldType.ADDRESS ).getValueAsAddress().getIsoCountry() ); assertEquals( null, configuredUserFieldsOnly.getField( UserFieldType.ADDRESS ).getValueAsAddress().getIsoRegion() ); } @Test public void getChangedUserFields_given_unequal_photo_then_photo_field_is_returned() { UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.PHOTO, new byte[]{101} ) ); UserFields otherUserFields = new UserFields( false ); otherUserFields.add( new UserField( UserFieldType.PHOTO, new byte[]{123} ) ); // exercise UserFields changedFields = userFields.getChangedUserFields( otherUserFields, true ); // verify assertEquals( 1, changedFields.getSize() ); assertNotNull( changedFields.getField( UserFieldType.PHOTO ) ); } @Test public void getChangedUserFields_given_equal_photo_then_no_fields_are_returned() { UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.PHOTO, new byte[]{101} ) ); UserFields otherUserFields = new UserFields( false ); otherUserFields.add( new UserField( UserFieldType.PHOTO, new byte[]{101} ) ); // exercise UserFields changedFields = userFields.getChangedUserFields( otherUserFields, true ); // verify assertEquals( 0, changedFields.getSize() ); } @Test public void getChangedUserFields_given_equal_birthday_then_no_fields_are_returned() { UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) ); UserFields otherUserFields = new UserFields( false ); otherUserFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) ); // exercise UserFields changedFields = userFields.getChangedUserFields( otherUserFields, true ); // verify assertEquals( 0, changedFields.getSize() ); } @Test public void getChangedUserFields_given_unequal_birthday_then_birthday_field_is_returned() { UserFields userFields = new UserFields( false ); userFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 1, 19 ).toDate() ) ); UserFields otherUserFields = new UserFields( false ); otherUserFields.add( new UserField( UserFieldType.BIRTHDAY, new DateMidnight( 1976, 4, 19 ).toDate() ) ); // exercise UserFields changedFields = userFields.getChangedUserFields( otherUserFields, true ); // verify assertEquals( 1, changedFields.getSize() ); assertNotNull( changedFields.getField( UserFieldType.BIRTHDAY ) ); } @Test public void add_given_two_addresses_when_multiple_addresses_is_false_then_only_one_is_returned() { UserFields userFields = new UserFields( false ); Address address1 = new Address(); address1.setLabel( "Address 1" ); userFields.add( new UserField( UserFieldType.ADDRESS, address1 ) ); Address address2 = new Address(); address2.setLabel( "Address 2" ); userFields.add( new UserField( UserFieldType.ADDRESS, address2 ) ); // exercise List<Address> addresses = userFields.getAddresses(); // verify assertEquals( 1, addresses.size() ); assertEquals( "Address 1", addresses.get( 0 ).getLabel() ); } @Test public void getAddresses() { UserFields userFields = new UserFields( true ); Address address1 = new Address(); address1.setLabel( "Address 1" ); userFields.add( new UserField( UserFieldType.ADDRESS, address1 ) ); // exercise List<Address> addresses = userFields.getAddresses(); // verify assertEquals( 1, addresses.size() ); assertEquals( "Address 1", addresses.get( 0 ).getLabel() ); Address address2 = new Address(); address2.setLabel( "Address 2" ); userFields.add( new UserField( UserFieldType.ADDRESS, address2 ) ); // exercise addresses = userFields.getAddresses(); // verify assertEquals( 2, addresses.size() ); assertEquals( "Address 1", addresses.get( 0 ).getLabel() ); assertEquals( "Address 2", addresses.get( 1 ).getLabel() ); } private UserStoreConfigField createUserStoreUserFieldConfig( UserFieldType type, boolean remote ) { UserStoreConfigField config = new UserStoreConfigField( type ); config.setRemote( remote ); return config; } }