/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.localization; import java.util.List; import java.util.Locale; import java.util.Properties; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.google.common.collect.Lists; import com.enonic.cms.core.resource.ResourceKey; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.SiteKey; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.isA; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.*; public class LocalizationServiceImplTest { private LocalizationServiceImpl localizationService; private LocalizationResourceBundleService resourceBundleServiceMock; private final SiteKey siteKey = new SiteKey( 0 ); public static List<String> supportedPhrases = Lists.newArrayList(); private static final String SITE_LOCALIZATION_RESOURCE_KEY = "test"; public static final String LOCALIZED_ADDON = "Localized"; @Before public void setUp() { localizationService = new LocalizationServiceImpl(); resourceBundleServiceMock = createMock( LocalizationResourceBundleService.class ); localizationService.setLocalizationResourceBundleService( resourceBundleServiceMock ); } @Test public void getLocalizedPhrase() { createResourceBundleExpectance( getNorwegianTestResourceBundle() ); setUpSupportedPhrases(); for ( String phrase : supportedPhrases ) { String localizedPhrase = localizationService.getLocalizedPhrase( createSite(), phrase, new Locale( "no" ) ); assertEquals( phrase + LOCALIZED_ADDON + "_no", localizedPhrase ); } } @After public void tearDown() { verify( resourceBundleServiceMock ); } private void createResourceBundleExpectance( LocalizationResourceBundle resouceBundle ) { expect( resourceBundleServiceMock.getResourceBundle( isA( SiteEntity.class ), isA( Locale.class ) ) ).andReturn( resouceBundle ).anyTimes(); replay( resourceBundleServiceMock ); } private void setUpSupportedPhrases() { supportedPhrases.add( "test" ); supportedPhrases.add( "ost" ); supportedPhrases.add( "fisk" ); } private SiteEntity createSite() { final SiteEntity site = new SiteEntity(); site.setKey( siteKey.toInt() ); site.setDefaultLocalizationResource( ResourceKey.from( SITE_LOCALIZATION_RESOURCE_KEY ) ); return site; } private LocalizationResourceBundle getNorwegianTestResourceBundle() { final Properties properties = new Properties(); properties.put( "test", "testLocalized_no" ); properties.put( "ost", "ostLocalized_no" ); properties.put( "fisk", "fiskLocalized_no" ); return new LocalizationResourceBundle( properties ); } }