package requirejs; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.openapi.editor.LogicalPosition; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl; import requirejs.settings.Settings; import java.util.Arrays; import java.util.List; public class CompletionPathWithDotTest extends RequirejsTestCase { @Override public void setUp() throws Exception { super.setUp(); myFixture.configureByFiles( "public/blocks/fileWithDotPath.js", "public/blocks/childWebPathFile.js", "public/blocks/fileWithTwoDotPath.js", "public/main.js", "public/blocks/block.js", "public/blocks/childBlocks/childBlock.js", "public/rootWebPathFile.js", "public/blocks/childBlocks/templates/index.html" ); setWebPathSetting(); } public void testCompletionWithOneDot() { // WithOneDot myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(1, 37)); myFixture.complete(CompletionType.BASIC, 1); List<String> strings = myFixture.getLookupElementStrings(); assert strings != null; assertTrue( strings.isEmpty() ); assertEquals(0, strings.size()); // WithOneDotAndSlash myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(2, 46)); myFixture.complete(CompletionType.BASIC, 1); strings = myFixture.getLookupElementStrings(); assertTrue( strings.containsAll( Arrays.asList( "./block", "./childWebPathFile", "./fileWithDotPath", "./fileWithTwoDotPath", "./childBlocks/childBlock" ) ) ); assertEquals(5, strings.size()); // WithOneDotAndSlashTwoChars myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(3, 56)); myFixture.complete(CompletionType.BASIC, 1); strings = myFixture.getLookupElementStrings(); assert strings == null; assertCompletionSingle("./block"); // WithOneDotAndDirectory myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(4, 61)); myFixture.complete(CompletionType.BASIC, 1); strings = myFixture.getLookupElementStrings(); assert strings == null; assertCompletionSingle("./childBlocks/childBlock"); // WithOneDotAndDirectoryAndSlash myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(5, 70)); myFixture.complete(CompletionType.BASIC, 1); strings = myFixture.getLookupElementStrings(); assert strings == null; assertCompletionSingle("./childBlocks/childBlock"); // WithOneDotAndDirectoryAndSlashTwoChars myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(6, 80)); myFixture.complete(CompletionType.BASIC, 1); strings = myFixture.getLookupElementStrings(); assert strings == null; assertCompletionSingle("./childBlocks/childBlock"); } public void testFileOnRootProjectDir() { Settings.getInstance(getProject()).publicPath = ""; myFixture.configureByFile("parentWebPathFile.js"); myFixture.getEditor().getCaretModel().moveToLogicalPosition(new LogicalPosition(2, 36)); myFixture.complete(CompletionType.BASIC, 1); List<String> strings = myFixture.getLookupElementStrings(); assert strings != null; assertCompletionList(Arrays.asList( "./parentWebPathFile", "./public/blocks/block", "./public/blocks/childWebPathFile", "./public/blocks/fileWithDotPath", "./public/blocks/fileWithTwoDotPath", "./public/blocks/childBlocks/childBlock", "./public/main", "./public/rootWebPathFile" ), strings); } }