package org.angularjs.codeInsight; import com.intellij.lang.javascript.JSTestUtils; import com.intellij.lang.javascript.dialects.JSLanguageLevel; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; import org.angularjs.AngularTestUtil; import java.util.List; /** * @author Dennis.Ushakov */ public class FiltersTest extends LightPlatformCodeInsightFixtureTestCase { @Override protected String getTestDataPath() { return AngularTestUtil.getBaseTestDataPath(getClass()) + "filters"; } public void testFilterCompletion() { myFixture.configureByFiles("filter.html", "angular.js", "custom.js"); final List<String> variants = myFixture.getCompletionVariants("filter.html"); assertContainsElements(variants, "lowercase", "json", "filta"); } public void testFilterBuiltinResolve() { myFixture.configureByFiles("filterBuiltin.resolve.html", "angular.js"); int offsetBySignature = AngularTestUtil.findOffsetBySignature("js<caret>on", myFixture.getFile()); PsiReference ref = myFixture.getFile().findReferenceAt(offsetBySignature); assertNotNull(ref); PsiElement resolve = ref.resolve(); assertNotNull(resolve); assertEquals("angular.js", resolve.getContainingFile().getName()); } public void testFilterCustomResolve() { myFixture.configureByFiles("filterCustom.resolve.html", "angular.js", "custom.js"); int offsetBySignature = AngularTestUtil.findOffsetBySignature("fil<caret>ta", myFixture.getFile()); PsiReference ref = myFixture.getFile().findReferenceAt(offsetBySignature); assertNotNull(ref); PsiElement resolve = ref.resolve(); assertNotNull(resolve); assertEquals("custom.js", resolve.getContainingFile().getName()); assertEquals("\"filta\"", resolve.getParent().getText()); } public void testPipeCompletion() { JSTestUtils.testWithinLanguageLevel(JSLanguageLevel.ES6, getProject(), () -> { myFixture.configureByFiles("filter.html", "angular2.js", "custom.ts"); final List<String> variants = myFixture.getCompletionVariants("filter.html"); assertContainsElements(variants, "filta"); }); } public void testPipeResolve() { JSTestUtils.testWithinLanguageLevel(JSLanguageLevel.ES6, getProject(), () -> { myFixture.configureByFiles("filterCustom.resolve.html", "angular2.js", "custom.ts"); int offsetBySignature = AngularTestUtil.findOffsetBySignature("fil<caret>ta", myFixture.getFile()); PsiReference ref = myFixture.getFile().findReferenceAt(offsetBySignature); assertNotNull(ref); PsiElement resolve = ref.resolve(); assertNotNull(resolve); assertEquals("custom.ts", resolve.getContainingFile().getName()); assertEquals("Pipe({\n" + " name: \"filta\"\n" + "})", resolve.getParent().getText()); }); } }