diff options
Diffstat (limited to 'plugins/properties/testSrc/com/intellij/lang/properties/CustomResourceBundleTest.java')
-rw-r--r-- | plugins/properties/testSrc/com/intellij/lang/properties/CustomResourceBundleTest.java | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/plugins/properties/testSrc/com/intellij/lang/properties/CustomResourceBundleTest.java b/plugins/properties/testSrc/com/intellij/lang/properties/CustomResourceBundleTest.java new file mode 100644 index 000000000000..69e8621ac8db --- /dev/null +++ b/plugins/properties/testSrc/com/intellij/lang/properties/CustomResourceBundleTest.java @@ -0,0 +1,139 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.lang.properties; + +import com.intellij.lang.properties.psi.PropertiesFile; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiManager; +import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesProcessor; +import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; +import com.intellij.util.Function; +import com.intellij.util.containers.ContainerUtil; + +import java.io.IOException; +import java.util.Locale; + +import static com.intellij.util.containers.ContainerUtil.list; +import static com.intellij.util.containers.ContainerUtil.map; + +/** + * @author Dmitry Batkovich + */ +public class CustomResourceBundleTest extends LightPlatformCodeInsightFixtureTestCase { + + @Override + protected void setUp() throws Exception { + super.setUp(); + ResourceBundleManager.getInstance(getProject()).loadState(new ResourceBundleManagerState()); + } + + public void testDissociateDefaultBaseName() { + final PsiFile file = myFixture.addFileToProject("some_property_file.properties", ""); + final PsiFile file2 = myFixture.addFileToProject("some_property_filee.properties", ""); + final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile(file); + assertNotNull(propertiesFile); + final ResourceBundle resourceBundle = propertiesFile.getResourceBundle(); + final ResourceBundleManager resourceBundleBaseNameManager = ResourceBundleManager.getInstance(getProject()); + resourceBundleBaseNameManager.dissociateResourceBundle(resourceBundle); + for (final PsiFile psiFile : list(file, file2)) { + assertEquals(psiFile.getVirtualFile().getNameWithoutExtension(), resourceBundleBaseNameManager.getBaseName(psiFile)); + final PropertiesFile somePropertyFile = PropertiesImplUtil.getPropertiesFile(file); + assertNotNull(somePropertyFile); + assertOneElement(somePropertyFile.getResourceBundle().getPropertiesFiles()); + } + } + + public void testCombineToCustomResourceBundleAndDissociateAfter() { + final PropertiesFile file = PropertiesImplUtil.getPropertiesFile(myFixture.addFileToProject("resources-dev/my-app-dev.properties", "")); + final PropertiesFile file2 = PropertiesImplUtil.getPropertiesFile(myFixture.addFileToProject("resources-prod/my-app-prod.properties", "")); + assertNotNull(file); + assertNotNull(file2); + assertOneElement(file.getResourceBundle().getPropertiesFiles()); + assertOneElement(file2.getResourceBundle().getPropertiesFiles()); + + final ResourceBundleManager resourceBundleBaseNameManager = ResourceBundleManager.getInstance(getProject()); + final String newBaseName = "my-app"; + resourceBundleBaseNameManager.combineToResourceBundle(list(file, file2), newBaseName); + final ResourceBundle resourceBundle = file.getResourceBundle(); + assertEquals(2, resourceBundle.getPropertiesFiles().size()); + assertEquals(newBaseName, resourceBundle.getBaseName()); + + resourceBundleBaseNameManager.dissociateResourceBundle(resourceBundle); + assertOneElement(file.getResourceBundle().getPropertiesFiles()); + assertOneElement(file2.getResourceBundle().getPropertiesFiles()); + } + + public void testCustomResourceBundleFilesMovedOrDeleted() throws IOException { + final PropertiesFile file = PropertiesImplUtil.getPropertiesFile(myFixture.addFileToProject("resources-dev/my-app-dev.properties", "")); + final PropertiesFile file2 = PropertiesImplUtil.getPropertiesFile(myFixture.addFileToProject("resources-dev/my-app-test.properties", "")); + final PropertiesFile file3 = PropertiesImplUtil.getPropertiesFile(myFixture.addFileToProject("resources-prod/my-app-prod.properties", "")); + assertNotNull(file); + assertNotNull(file2); + assertNotNull(file3); + assertOneElement(file.getResourceBundle().getPropertiesFiles()); + assertOneElement(file2.getResourceBundle().getPropertiesFiles()); + assertOneElement(file3.getResourceBundle().getPropertiesFiles()); + final ResourceBundleManager resourceBundleBaseNameManager = ResourceBundleManager.getInstance(getProject()); + resourceBundleBaseNameManager.combineToResourceBundle(list(file, file2, file3), "my-app"); + + assertSize(3, file.getResourceBundle().getPropertiesFiles()); + + final PsiDirectory newDir = PsiManager.getInstance(getProject()).findDirectory(myFixture.getTempDirFixture().findOrCreateDir("new-resources-dir")); + new MoveFilesOrDirectoriesProcessor(getProject(), new PsiElement[] {file2.getContainingFile()}, newDir, false, false, null, null).run(); + file3.getContainingFile().delete(); + + assertSize(2, file.getResourceBundle().getPropertiesFiles()); + + final ResourceBundleManagerState state = ResourceBundleManager.getInstance(getProject()).getState(); + assertNotNull(state); + assertSize(1, state.getCustomResourceBundles()); + assertSize(2, state.getCustomResourceBundles().get(0).getFileUrls()); + } + + public void testLocaleIfCanExtractFromCustomResourceBundle() { + final PsiFile file = myFixture.addFileToProject("Base_Page.properties", ""); + final PsiFile file2 = myFixture.addFileToProject("Base_Page_en.properties", ""); + final ResourceBundleManager resourceBundleBaseNameManager = ResourceBundleManager.getInstance(getProject()); + final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile(file); + assertNotNull(propertiesFile); + resourceBundleBaseNameManager.dissociateResourceBundle(propertiesFile.getResourceBundle()); + resourceBundleBaseNameManager.combineToResourceBundle(map(list(file, file2), new Function<PsiFile, PropertiesFile>() { + @Override + public PropertiesFile fun(final PsiFile psiFile) { + return PropertiesImplUtil.getPropertiesFile(psiFile); + } + }), "Base_Page"); + final PropertiesFile propertiesFile2 = PropertiesImplUtil.getPropertiesFile(file2); + assertNotNull(propertiesFile2); + final Locale locale = propertiesFile2.getLocale(); + assertEquals("en", locale.getLanguage()); + } + + public void testSuggestedCustomResourceBundleName() { + final PsiFile file = myFixture.addFileToProject("Base_Page.properties", ""); + final PsiFile file2 = myFixture.addFileToProject("Base_Page_en.properties", ""); + final String baseName = + PropertiesUtil.getDefaultBaseName(ContainerUtil.map(list(file, file2), new Function<PsiFile, PropertiesFile>() { + @Override + public PropertiesFile fun(PsiFile psiFile) { + return PropertiesImplUtil.getPropertiesFile(file); + } + })); + assertEquals("Base_Page", baseName); + } +} |