All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.i18n.TestLocaleGroups Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (c) Alkacon Software GmbH & Co. KG (http://www.alkacon.com)
 *
 * This library 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 library 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.
 *
 * For further information about Alkacon Software, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.i18n;

import org.opencms.file.CmsObject;
import org.opencms.file.CmsProperty;
import org.opencms.file.CmsPropertyDefinition;
import org.opencms.file.CmsResource;
import org.opencms.file.types.CmsResourceTypePlain;
import org.opencms.relations.CmsRelation;
import org.opencms.relations.CmsRelationFilter;
import org.opencms.relations.CmsRelationType;
import org.opencms.test.OpenCmsTestCase;
import org.opencms.test.OpenCmsTestProperties;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;

import com.google.common.collect.Sets;

import junit.framework.Test;

/**
 * Test cases for locale variants.
 */
public class TestLocaleGroups extends OpenCmsTestCase {

    public static int NAME_COUNTER = 10;

    /**
     * Creates a new instance.

* * @param name the test name */ public TestLocaleGroups(String name) { super(name); } /** * Returns the test suite.

* * @return the test suite */ public static Test suite() { OpenCmsTestProperties.initialize(org.opencms.test.AllTests.TEST_PROPERTIES_PATH); return generateSetupTestWrapper(TestLocaleGroups.class, "ade-config", "/"); } public CmsResource makeResource(String path, Locale locale) throws Exception { CmsProperty prop = new CmsProperty(CmsPropertyDefinition.PROPERTY_LOCALE, locale.toString(), null); CmsObject cms = getCmsObject(); return cms.createResource(path, CmsResourceTypePlain.getStaticTypeId(), null, Arrays.asList(prop)); } public void testFailWhenAddingResourceFromExistingGroup() throws Exception { CmsObject cms = getCmsObject(); int index = NAME_COUNTER++; String basepath = "/test_" + index + "_"; CmsResource r1 = makeResource(basepath + "1", Locale.ENGLISH); CmsResource r2 = makeResource(basepath + "2", Locale.GERMAN); CmsResource r3 = makeResource(basepath + "3", Locale.ENGLISH); CmsResource r4 = makeResource(basepath + "4", Locale.GERMAN); CmsLocaleGroupService service = new CmsLocaleGroupService(cms); service.attachLocaleGroup(r1, r2); service.attachLocaleGroup(r3, r4); try { service.attachLocaleGroup(r1, r3); fail("Should not be able to attach a resource in a locale group to another locale group"); } catch (Exception e) { } try { service.attachLocaleGroup(r1, r4); fail("Should not be able to attach a resource in a locale group to another locale group"); } catch (Exception e) { } try { service.attachLocaleGroup(r2, r3); fail("Should not be able to attach a resource in a locale group to another locale group"); } catch (Exception e) { } try { service.attachLocaleGroup(r2, r4); fail("Should not be able to attach a resource in a locale group to another locale group"); } catch (Exception e) { } } public void testJoinLocaleGroup() throws Exception { CmsObject cms = getCmsObject(); String sourcePath = "/test_jlg"; String targetPath = "/test_jlg_target"; CmsResource r1 = makeResource(sourcePath, Locale.ENGLISH); CmsResource r2 = makeResource(targetPath, Locale.GERMAN); CmsLocaleGroupService service = new CmsLocaleGroupService(cms); service.attachLocaleGroup(r1, r2); CmsLocaleGroup localeGroup = service.readLocaleGroup(r2); assertEquals("wrong primary resource in locale group", r2, localeGroup.getPrimaryResource()); assertEquals( "wrong secondary resources in locale group", Sets.newHashSet(r1), localeGroup.getSecondaryResources()); CmsLocaleGroup localeGroup2 = service.readLocaleGroup(r1); assertEquals("wrong primary resource in locale group", r2, localeGroup2.getPrimaryResource()); assertEquals( "wrong secondary resources in locale group", Sets.newHashSet(r1), localeGroup2.getSecondaryResources()); } public void testLocales1() throws Exception { CmsObject cms = getCmsObject(); int index = NAME_COUNTER++; String basepath = "/test_" + index + "_"; CmsResource r1 = makeResource(basepath + "1", Locale.ENGLISH); CmsResource r2 = makeResource(basepath + "2", Locale.GERMAN); CmsResource r3 = makeResource(basepath + "3", Locale.FRENCH); CmsLocaleGroupService service = new CmsLocaleGroupService(cms); service.attachLocaleGroup(r1, r2); service.attachLocaleGroup(r3, r2); CmsLocaleGroup group = service.readLocaleGroup(r1); assertEquals("wrong primary resource", r2, group.getPrimaryResource()); assertEquals( "wrong secondary resources", Sets.newHashSet(r1, r3), Sets.newHashSet(group.getSecondaryResources())); assertEquals( "wrong resource for French", Sets.newHashSet(r3), Sets.newHashSet(group.getResourcesForLocale(Locale.FRENCH))); assertEquals( "wrong resource for German", Sets.newHashSet(r2), Sets.newHashSet(group.getResourcesForLocale(Locale.GERMAN))); } /** * Test method. * * @throws Exception */ public void testLocaleVariantRelationsNotCopied() throws Exception { CmsObject cms = getCmsObject(); String sourcePath = "/test1"; CmsResource r1 = makeResource(sourcePath, Locale.ENGLISH); CmsResource r2 = makeResource("/test1_target", Locale.GERMAN); cms.addRelationToResource(r1, r2, CmsRelationType.LOCALE_VARIANT.getName()); String copyPath = "/test1_copy"; cms.copyResource(sourcePath, copyPath, CmsResource.COPY_AS_NEW); CmsResource copy = cms.readResource(copyPath); List rels = cms.readRelations(CmsRelationFilter.ALL.filterStructureId(copy.getStructureId())); assertEquals("no relations should exist on copy of locale variant", new ArrayList(), rels); } public void testNormalizeRelations1() throws Exception { CmsObject cms = getCmsObject(); String path1 = "/testnormalize-1-1.txt"; String path2 = "/testnormalize-1-2.txt"; CmsResource r1 = makeResource(path1, Locale.ENGLISH); CmsResource r2 = makeResource(path2, Locale.GERMAN); cms.addRelationToResource(r1, r2, CmsRelationType.LOCALE_VARIANT.getName()); cms.addRelationToResource(r2, r1, CmsRelationType.LOCALE_VARIANT.getName()); cms.addRelationToResource(r1, r2, CmsRelationType.CATEGORY.getName()); assertEquals( 0, cms.readRelations( CmsRelationFilter.relationsFromStructureId(r1.getStructureId()).filterType( CmsRelationType.LOCALE_VARIANT)).size()); assertEquals( 1, cms.readRelations( CmsRelationFilter.relationsFromStructureId(r2.getStructureId()).filterType( CmsRelationType.LOCALE_VARIANT)).size()); assertEquals( 0, cms.readRelations( CmsRelationFilter.relationsToStructureId(r2.getStructureId()).filterType( CmsRelationType.LOCALE_VARIANT)).size()); assertEquals( 1, cms.readRelations( CmsRelationFilter.relationsToStructureId(r1.getStructureId()).filterType( CmsRelationType.LOCALE_VARIANT)).size()); assertEquals(1, cms.readRelations(CmsRelationFilter.relationsFromStructureId(r1.getStructureId())).size()); } public void testNormalizeRelations2() throws Exception { CmsObject cms = getCmsObject(); String path1 = "/testnormalize-2-1.txt"; String path2 = "/testnormalize-2-2.txt"; String path3 = "/testnormalize-2-3.txt"; String path4 = "/testnormalize-2-4.txt"; CmsResource r1 = makeResource(path1, Locale.ENGLISH); CmsResource r2 = makeResource(path2, Locale.GERMAN); CmsResource r3 = makeResource(path3, Locale.ITALIAN); CmsResource r4 = makeResource(path4, Locale.FRENCH); cms.addRelationToResource(r2, r1, CmsRelationType.LOCALE_VARIANT.getName()); cms.addRelationToResource(r3, r1, CmsRelationType.LOCALE_VARIANT.getName()); cms.addRelationToResource(r4, r3, CmsRelationType.LOCALE_VARIANT.getName()); assertEquals(0, cms.readRelations(CmsRelationFilter.relationsFromStructureId(r3.getStructureId())).size()); assertEquals(1, cms.readRelations(CmsRelationFilter.relationsToStructureId(r1.getStructureId())).size()); assertEquals(1, cms.readRelations(CmsRelationFilter.relationsToStructureId(r3.getStructureId())).size()); } public void testSameLocaleGroupWhenReadFromDifferentResources() throws Exception { CmsObject cms = getCmsObject(); String sourcePath = "/test_3"; String sourcePath2 = "/test_3_2"; String targetPath = "/test_3_target"; CmsResource r1 = makeResource(sourcePath, Locale.ENGLISH); CmsResource r2 = makeResource(sourcePath2, Locale.FRANCE); CmsResource r3 = makeResource(targetPath, Locale.GERMAN); CmsLocaleGroupService service = new CmsLocaleGroupService(cms); service.attachLocaleGroup(r1, r3); service.attachLocaleGroup(r2, r3); CmsLocaleGroup localeGroup = service.readLocaleGroup(r1); CmsLocaleGroup localeGroup2 = service.readLocaleGroup(r2); CmsLocaleGroup localeGroup3 = service.readLocaleGroup(r3); assertEquals(localeGroup.getPrimaryResource(), localeGroup2.getPrimaryResource()); assertEquals(localeGroup.getSecondaryResources(), localeGroup2.getSecondaryResources()); assertEquals(localeGroup2.getPrimaryResource(), localeGroup3.getPrimaryResource()); assertEquals(localeGroup2.getSecondaryResources(), localeGroup3.getSecondaryResources()); } public void testSingleResourceGroup() throws Exception { CmsObject cms = getCmsObject(); String path = "/test_single"; CmsResource r1 = makeResource(path, Locale.ENGLISH); CmsLocaleGroupService service = new CmsLocaleGroupService(cms); CmsLocaleGroup group = service.readLocaleGroup(r1); assertFalse("single-resource groups are not 'real' groups", group.isRealGroup()); assertEquals(r1, group.getPrimaryResource()); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy