package org.elixir_lang.reference.module.as; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.ResolveResult; import com.intellij.psi.impl.source.tree.LeafPsiElement; import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import org.elixir_lang.psi.ElixirAlias; import org.elixir_lang.psi.QualifiedAlias; import java.util.List; public class NestedTest extends LightPlatformCodeInsightFixtureTestCase { /* * Tests */ public void testCompletion() { myFixture.configureByFiles("completion.ex", "suffix.ex", "nested.ex"); myFixture.complete(CompletionType.BASIC, 1); List<String> strings = myFixture.getLookupElementStrings(); assertNull("Completion lookup shown", strings); PsiElement autoInsertedLeafElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset() - 1); assertNotNull(autoInsertedLeafElement); assertInstanceOf(autoInsertedLeafElement, LeafPsiElement.class); PsiElement autoInsertedCompositeElement = autoInsertedLeafElement.getParent(); assertInstanceOf(autoInsertedCompositeElement, ElixirAlias.class); assertEquals(autoInsertedCompositeElement.getText(), "Nested"); } public void testReference() { myFixture.configureByFiles("reference.ex", "suffix.ex", "nested.ex"); PsiElement alias = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()) .getParent() .getPrevSibling(); assertInstanceOf(alias, QualifiedAlias.class); PsiPolyVariantReference polyVariantReference = (PsiPolyVariantReference) alias.getReference(); assertNotNull(polyVariantReference); ResolveResult[] resolveResults = polyVariantReference.multiResolve(false); assertEquals(2, resolveResults.length); // alias assertEquals( "alias Prefix.Suffix, as: As", resolveResults[0].getElement().getParent().getParent().getParent().getParent().getParent().getText() ); // defmodule assertEquals("defmodule Prefix.Suffix.Nested do\nend", resolveResults[1].getElement().getText()); } /* * Protected Instance Methods */ @Override protected String getTestDataPath() { return "testData/org/elixir_lang/reference/module/as/nested"; } }