Package org.exoplatform.services.resources.test

Source Code of org.exoplatform.services.resources.test.TestResourceBundleService

/**
* Copyright (C) 2009 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.exoplatform.services.resources.test;

import org.exoplatform.container.PortalContainer;
import org.exoplatform.services.resources.*;

import java.util.List;
import java.util.Locale;
import java.util.ResourceBundle;

/*
* Thu, May 15, 2004 @  
* @author: Tuan Nguyen
* @version: $Id: TestResourceBundleService.java 5799 2006-05-28 17:55:42Z geaz $
* @since: 0.0
* @email: tuan08@yahoo.com
*/
public class TestResourceBundleService extends AbstractResourceBundleTest
{

   final static private String PROPERTIES = "language=en\nproperty=property";

   final static private String PROPERTIES_FR = "language=fr";

   final static private String PROPERTIES_FR_UPDATE = "language=fr\nproperty=fr-property";

   private static String databaseRes = "exo.locale";

   private static String fileRes = "locale.test.resources.test";

   private static String[] mergeRes = {fileRes, databaseRes};

   private ResourceBundleService service_;

   private LocaleConfigService lservice_;

   public TestResourceBundleService(String name)
   {
      super(name);
   }

   public void setUp() throws Exception
   {
      PortalContainer manager = PortalContainer.getInstance();
      service_ = (ResourceBundleService)manager.getComponentInstanceOfType(ResourceBundleService.class);
      lservice_ = (LocaleConfigService)manager.getComponentInstanceOfType(LocaleConfigService.class);
   }

   public void testResourceBundleServiceUpdate() throws Exception
   {
      //-------getResourceBundle have loaded from property file to database--------
      ResourceBundle res = service_.getResourceBundle(fileRes, Locale.ENGLISH);

      //    //------------create ressource bundle in database------------------
      createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH);
      createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE);

      res = service_.getResourceBundle(databaseRes, Locale.ENGLISH);
      assertTrue("Expect to find the ResourceBundle", res != null);

      res = service_.getResourceBundle(databaseRes, Locale.FRANCE);
      assertTrue("Expect to find the ResourceBundle", res != null);
      assertEquals("Expect French locale bundle", "fr", res.getString("language"));
      assertEquals("Expect French locale bundle", "property", res.getString("property"));
      //--------- Update a databseRes resource bundle in database ----------------
      createResourceBundle(databaseRes, PROPERTIES_FR_UPDATE, Locale.FRANCE);
      res = service_.getResourceBundle(databaseRes, Locale.FRANCE);
      assertEquals("Expect French locale bundle", "fr-property", res.getString("property"));

      //--------Update fileRes resource bundle in databse--------------
      String datas = "key1=fileSystem\nlanguage=french";
      createResourceBundle(fileRes, datas, Locale.FRANCE);
      res = service_.getResourceBundle(fileRes, Locale.FRANCE);
      assertTrue("Expect to find the ResourceBundle", res != null);
      assertTrue("Expect 'fileRes' is updated", res.getString("key1").equals("fileSystem"));
      assertEquals("Expect languge property is:", "french", res.getString("language"));

      //--------Update fileRes resource bundle in databse--------------
      datas = "key1=fileSystemUpdate\nlanguage=french";
      createResourceBundle(fileRes, datas, Locale.FRANCE);
      res = service_.getResourceBundle(fileRes, Locale.FRANCE);
      assertTrue("Expect to find the ResourceBundle", res != null);
      assertTrue("Expect 'fileRes' is updated", res.getString("key1").equals("fileSystemUpdate"));
      assertEquals("Expect languge property is:", "french", res.getString("language"));
   }

   public void testResourceBundleServiceRemove() throws Exception
   {
      //-------getResourceBundle have loaded from property file to database--------
      ResourceBundle res = service_.getResourceBundle(fileRes, Locale.ENGLISH);

      //------------create ressource bundle in database------------------
      createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH);
      createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE);

      res = service_.getResourceBundle(databaseRes, Locale.ENGLISH);
      assertTrue("Expect to find the ResourceBundle", res != null);

      res = service_.getResourceBundle(databaseRes, Locale.FRANCE);
      assertTrue("Expect to find the ResourceBundle", res != null);
      assertEquals("Expect French locale bundle", "fr", res.getString("language"));
      assertEquals("Expect French locale bundle", "property", res.getString("property"));

      //    //-----------get all resource bundle-----------   
      Query q = new Query(null, null);
      List l = service_.findResourceDescriptions(q).getAll();

      //----------remove a resource bundle data with Id: databaseRes_en------
      int sizeBeforeRemove = l.size();
      ResourceBundleData data = service_.getResourceBundleData(databaseRes + "_en");
      service_.removeResourceBundleData(data.getId());
      l = service_.findResourceDescriptions(q).getAll();

      assertEquals("Expect resources bundle in in database decrease", sizeBeforeRemove - 1, l.size());
      assertTrue("expect resource bundle is removed", service_.getResourceBundleData(databaseRes + "_en") == null);
   }

   public void testResourceBundleServiceList() throws Exception
   {

      Query q = new Query(null, null);
      List l = service_.findResourceDescriptions(q).getAll();

      //-------getResourceBundle have loaded from property file to database--------
      ResourceBundle res = service_.getResourceBundle(fileRes, Locale.ENGLISH);

      //------------create ressource bundle in database------------------
      createResourceBundle(databaseRes, PROPERTIES, Locale.ENGLISH);
      createResourceBundle(databaseRes, PROPERTIES_FR, Locale.FRANCE);

      res = service_.getResourceBundle(databaseRes, Locale.ENGLISH);
      assertTrue("Expect to find the ResourceBundle", res != null);

      res = service_.getResourceBundle(databaseRes, Locale.FRANCE);
      assertTrue("Expect to find the ResourceBundle", res != null);
      assertEquals("Expect French locale bundle", "fr", res.getString("language"));
      assertEquals("Expect French locale bundle", "property", res.getString("property"));

      //    //-----------get all resource bundle-----------   
      q = new Query(null, null);
      l = service_.findResourceDescriptions(q).getAll();

      assertTrue("Expect at least 2 locale properties resources", l.size() >= 2);
   }

   private void createResourceBundle(String name, String datas, Locale locale) throws Exception
   {
      ResourceBundleData data = service_.createResourceBundleDataInstance();
      data.setName(name);
      data.setData(datas);
      data.setLanguage(locale.getLanguage());
      if (locale.getCountry().trim().length() != 0)
      {
        data.setCountry(locale.getCountry());
      }
      service_.saveResourceBundle(data);
   }

   protected String getDescription()
   {
      return "Test Resource Bundle Service";
   }
}
TOP

Related Classes of org.exoplatform.services.resources.test.TestResourceBundleService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.