/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.preference; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import junit.framework.TestCase; import com.enonic.cms.core.security.user.UserKey; /** * Created by IntelliJ IDEA. * User: rmh * Date: Feb 25, 2010 * Time: 11:38:29 AM */ public class PreferenceUniqueMatchResolverTest extends TestCase { PreferenceUniqueMatchResolver uniqueMatchResolver; UserKey userKey = new UserKey( "1" ); @Before public void setUp() { uniqueMatchResolver = new PreferenceUniqueMatchResolver(); } @Test public void testSinglePreference() { List<PreferenceEntity> preferences = new ArrayList<PreferenceEntity>(); preferences.add( createPreference( PreferenceScopeType.WINDOW, "test" ) ); preferences.add( createPreference( PreferenceScopeType.PORTLET, "test" ) ); preferences.add( createPreference( PreferenceScopeType.SITE, "test" ) ); for ( PreferenceEntity pref : preferences ) { uniqueMatchResolver.addPreferenceKeyIfHigherPriority( pref.getKey() ); } List<PreferenceKey> uniquePreferences = uniqueMatchResolver.preferenceKeys; assertEquals( "Should contain 1 preference only", 1, uniquePreferences.size() ); assertEquals( uniquePreferences.get( 0 ).getScopeType(), PreferenceScopeType.WINDOW ); } @Test public void testTwoPreferences() { List<PreferenceEntity> preferences = new ArrayList<PreferenceEntity>(); preferences.add( createPreference( PreferenceScopeType.WINDOW, "test2" ) ); preferences.add( createPreference( PreferenceScopeType.GLOBAL, "test2" ) ); preferences.add( createPreference( PreferenceScopeType.PORTLET, "test" ) ); preferences.add( createPreference( PreferenceScopeType.SITE, "test" ) ); for ( PreferenceEntity pref : preferences ) { uniqueMatchResolver.addPreferenceKeyIfHigherPriority( pref.getKey() ); } List<PreferenceKey> uniquePreferences = uniqueMatchResolver.preferenceKeys; assertEquals( "Should contain 2 preferences", 2, uniquePreferences.size() ); assertEquals( uniquePreferences.get( 0 ).getScopeType(), PreferenceScopeType.WINDOW ); assertEquals( uniquePreferences.get( 1 ).getScopeType(), PreferenceScopeType.PORTLET ); } @Test public void testSeveralPreferences() { List<PreferenceEntity> preferences = new ArrayList<PreferenceEntity>(); preferences.add( createPreference( PreferenceScopeType.PORTLET, "test" ) ); preferences.add( createPreference( PreferenceScopeType.SITE, "test" ) ); preferences.add( createPreference( PreferenceScopeType.WINDOW, "test2" ) ); preferences.add( createPreference( PreferenceScopeType.GLOBAL, "test2" ) ); preferences.add( createPreference( PreferenceScopeType.SITE, "test3" ) ); preferences.add( createPreference( PreferenceScopeType.GLOBAL, "test3" ) ); preferences.add( createPreference( PreferenceScopeType.PAGE, "test4" ) ); preferences.add( createPreference( PreferenceScopeType.SITE, "test4" ) ); preferences.add( createPreference( PreferenceScopeType.GLOBAL, "test4" ) ); preferences.add( createPreference( PreferenceScopeType.PORTLET, "test5" ) ); preferences.add( createPreference( PreferenceScopeType.SITE, "test5" ) ); preferences.add( createPreference( PreferenceScopeType.GLOBAL, "test6" ) ); for ( PreferenceEntity pref : preferences ) { uniqueMatchResolver.addPreferenceKeyIfHigherPriority( pref.getKey() ); } List<PreferenceKey> uniquePreferences = uniqueMatchResolver.preferenceKeys; assertEquals( "Should contain 5 unique preferences", 6, uniquePreferences.size() ); assertEquals( uniquePreferences.get( 0 ).getScopeType(), PreferenceScopeType.PORTLET ); assertEquals( uniquePreferences.get( 1 ).getScopeType(), PreferenceScopeType.WINDOW ); assertEquals( uniquePreferences.get( 2 ).getScopeType(), PreferenceScopeType.SITE ); assertEquals( uniquePreferences.get( 3 ).getScopeType(), PreferenceScopeType.PAGE ); assertEquals( uniquePreferences.get( 4 ).getScopeType(), PreferenceScopeType.PORTLET ); assertEquals( uniquePreferences.get( 5 ).getScopeType(), PreferenceScopeType.GLOBAL ); } private PreferenceEntity createPreference( PreferenceScopeType scopeType, String preferenceKeyString ) { PreferenceScopeKey preferenceScopeKey = new PreferenceScopeKey( "1" ); if ( scopeType.equals( PreferenceScopeType.GLOBAL ) ) { preferenceScopeKey = null; } PreferenceScope preferenceScope = new PreferenceScope( scopeType, preferenceScopeKey ); PreferenceKey preferenceKey = new PreferenceKey( userKey, preferenceScope, preferenceKeyString ); PreferenceEntity preference = new PreferenceEntity(); preference.setKey( preferenceKey ); preference.setValue( "test" ); return preference; } }