package org.elixir_lang.reference.module; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.codeInsight.lookup.LookupEx; import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.ResolveResult; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import org.elixir_lang.psi.QualifiedAlias; import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.List; /** * Checks that nested module resolution is doing substitution at alias separator ("."), instead of name. */ public class NestedAliasVsStringTest extends LightCodeInsightFixtureTestCase { /* * Tests */ public void testCompletion() { List<String> completionVariants = myFixture.getCompletionVariants( "completion.ex", "nested.ex", "nested_suffix.ex", "nested_under.ex" ); assertFalse( "Lookup contains string suffixed module name. Nesting substitution is not breaking on '.'", completionVariants.contains("ABCDSuffix") ); assertTrue( "Completion on `alias as:` does not complete as: aliased name", completionVariants.contains("ABCD") ); assertTrue( "Completion on `alias as:` does not complete module nested under as: aliased name", completionVariants.contains("ABCD.Nested") ); } /* * Protected Instance Methods */ @Override protected String getTestDataPath() { return "testData/org/elixir_lang/reference/module/nested_alias_vs_string"; } }