make test more predictable

This commit is contained in:
Anna Kozlova
2014-10-24 18:36:19 +02:00
parent 4c725a50cd
commit a9bb3f4122
2 changed files with 13 additions and 6 deletions
@@ -20,12 +20,16 @@ import com.intellij.openapi.application.PluginPathManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.psi.xml.XmlFile;
import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.PsiTestUtil;
import com.intellij.testFramework.fixtures.DefaultLightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.javaFX.fxml.codeInsight.inspections.JavaFxUnresolvedFxIdReferenceInspection;
import org.jetbrains.plugins.javaFX.fxml.codeInsight.intentions.JavaFxInjectPageLanguageIntention;
import java.util.Set;
public class JavaFXQuickfixTest extends LightCodeInsightFixtureTestCase {
public static final DefaultLightProjectDescriptor JAVA_FX_WITH_GROOVY_DESCRIPTOR = new DefaultLightProjectDescriptor() {
@@ -66,7 +70,10 @@ public class JavaFXQuickfixTest extends LightCodeInsightFixtureTestCase {
myFixture.configureByFile(getTestName(true) + ".fxml");
final IntentionAction intention = myFixture.findSingleIntention("Specify page language");
assertNotNull(intention);
myFixture.launchAction(intention);
Set<String> languages = JavaFxInjectPageLanguageIntention.getAvailableLanguages();
assertContainsElements(languages, "groovy");
JavaFxInjectPageLanguageIntention languageIntention = (JavaFxInjectPageLanguageIntention)intention;
languageIntention.registerPageLanguage(getProject(), (XmlFile)myFixture.getFile(), "groovy");
myFixture.checkResultByFile(getTestName(true) + ".fxml", getTestName(true) + "_after.fxml", true);
}
@@ -52,7 +52,7 @@ import java.util.TreeSet;
public class JavaFxInjectPageLanguageIntention extends PsiElementBaseIntentionAction {
public static final Logger LOG = Logger.getInstance("#" + JavaFxInjectPageLanguageIntention.class.getName());
private static Set<String> getAvailableLanguages(Project project) {
public static Set<String> getAvailableLanguages() {
final List<ScriptEngineFactory> engineFactories = new ScriptEngineManager().getEngineFactories();
final Set<String> availableNames = new TreeSet<String>();
@@ -68,8 +68,8 @@ public class JavaFxInjectPageLanguageIntention extends PsiElementBaseIntentionAc
if (!FileModificationService.getInstance().preparePsiElementsForWrite(element)) return;
final XmlFile containingFile = (XmlFile)element.getContainingFile();
final Set<String> availableLanguages = getAvailableLanguages(project);
if (availableLanguages.size() == 1 || ApplicationManager.getApplication().isUnitTestMode()) {
final Set<String> availableLanguages = getAvailableLanguages();
if (availableLanguages.size() == 1) {
registerPageLanguage(project, containingFile, availableLanguages.iterator().next());
} else {
final JBList list = new JBList(availableLanguages);
@@ -83,7 +83,7 @@ public class JavaFxInjectPageLanguageIntention extends PsiElementBaseIntentionAc
}
}
private void registerPageLanguage(final Project project, final XmlFile containingFile, final String languageName) {
public void registerPageLanguage(final Project project, final XmlFile containingFile, final String languageName) {
new WriteCommandAction.Simple(project, getFamilyName()) {
@Override
protected void run() {
@@ -110,7 +110,7 @@ public class JavaFxInjectPageLanguageIntention extends PsiElementBaseIntentionAc
@Override
public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) {
if (ContainerUtil.isEmpty(getAvailableLanguages(project))) {
if (ContainerUtil.isEmpty(getAvailableLanguages())) {
return false;
}
setText(getFamilyName());