public void testResourceBundleManagerUpdatesProperlyWhileDirRemoval() { myFixture.addFileToProject("qwe/asd/p.properties", ""); final PsiFile file = myFixture.addFileToProject("qwe/asd/p_en.properties", ""); final PropertiesFile propertiesFile = PropertiesImplUtil.getPropertiesFile(file); assertNotNull(propertiesFile); final ResourceBundleManager resourceBundleManager = ResourceBundleManager.getInstance(getProject()); resourceBundleManager.dissociateResourceBundle(propertiesFile.getResourceBundle()); final PropertiesFile propFile1 = PropertiesImplUtil.getPropertiesFile( myFixture.addFileToProject("qwe1/asd1/p.properties", "")); final PropertiesFile propFile2 = PropertiesImplUtil.getPropertiesFile( myFixture.addFileToProject("qwe1/asd1/p_abc.properties", "")); assertNotNull(propFile1); assertNotNull(propFile2); resourceBundleManager.combineToResourceBundle( ContainerUtil.newArrayList(propFile1, propFile2), "p"); final PsiFile someFile = myFixture.addFileToProject("to_remove/asd.txt", ""); final PsiDirectory toRemove = someFile.getParent(); assertNotNull(toRemove); ApplicationManager.getApplication().runWriteAction(toRemove::delete); final ResourceBundleManagerState state = resourceBundleManager.getState(); assertNotNull(state); assertSize(1, state.getCustomResourceBundles()); assertSize(2, state.getDissociatedFiles()); final PsiDirectory directory = propertiesFile.getParent().getParent(); assertNotNull(directory); ApplicationManager.getApplication().runWriteAction(directory::delete); assertSize(1, state.getCustomResourceBundles()); assertSize(0, state.getDissociatedFiles()); final PsiDirectory directory1 = propFile1.getParent().getParent(); assertNotNull(directory1); ApplicationManager.getApplication().runWriteAction(directory1::delete); assertSize(0, state.getCustomResourceBundles()); assertSize(0, state.getDissociatedFiles()); }
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(); ApplicationManager.getApplication().runWriteAction(() -> 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()); }