package org.jetbrains.plugins.cucumber.java.inspections; import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInspection.ex.QuickFixWrapper; import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.plugins.cucumber.inspections.CucumberStepInspection; import org.jetbrains.plugins.cucumber.java.CucumberJavaCodeInsightTestCase; import org.jetbrains.plugins.cucumber.java.CucumberJavaTestUtil; import org.jetbrains.plugins.cucumber.steps.CucumberStepsIndex; public class CucumberJavaCreateStepTest extends CucumberJavaCodeInsightTestCase { public void testCreateAllSteps() { doTest(true); } public void testJava8Step() { doTest(false); } private void doTest(boolean createAll) { CucumberStepsIndex.getInstance(getProject()).reset(); myFixture.enableInspections(new CucumberStepInspection()); myFixture.copyDirectoryToProject("createStep/" + getTestName(true) , ""); myFixture.configureByFile("createStep/" + getTestName(true) + "/test.feature"); myFixture.checkHighlighting(true, false, false); final String fixName = createAll ? "Create All" : "Create step"; final IntentionAction quickFix = ContainerUtil.find(myFixture.getAvailableIntentions(), intentionAction -> intentionAction instanceof QuickFixWrapper && intentionAction.getText().contains(fixName)); if (quickFix != null) { myFixture.launchAction(quickFix); VirtualFile expectedFile = myFixture.findFileInTempDir("StepDefs.java"); myFixture.openFileInEditor(expectedFile); myFixture.checkResultByFile("createStep/" + getTestName(true) + "/StepDefs_fixed.txt"); } } @Override protected String getBasePath() { return CucumberJavaTestUtil.RELATED_TEST_DATA_PATH + "inspections"; } @Override protected void setUp() throws Exception { super.setUp(); myFixture.allowTreeAccessForAllFiles(); } @Override protected LightProjectDescriptor getProjectDescriptor() { return CucumberJavaTestUtil.createCucumberJava8ProjectDescriptor(); } }