package fr.adrienbrault.idea.symfony2plugin.tests.config.xml; import com.intellij.codeInsight.daemon.impl.AnnotationHolderImpl; import com.intellij.lang.annotation.AnnotationSession; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import fr.adrienbrault.idea.symfony2plugin.config.xml.XmlServiceContainerAnnotator; import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; import org.jetbrains.annotations.NotNull; import java.io.File; /** * @author Daniel Espendiller <daniel@espendiller.net> * @see fr.adrienbrault.idea.symfony2plugin.config.xml.XmlServiceContainerAnnotator */ public class XmlServiceContainerAnnotatorTest extends SymfonyLightCodeInsightFixtureTestCase { public void setUp() throws Exception { super.setUp(); myFixture.copyFileToProject("annotator.php"); myFixture.copyFileToProject("annotator.xml"); } public String getTestDataPath() { return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath(); } private AnnotationHolderImpl createAnnotationHolder(@NotNull String content) { PsiFile psiFile = myFixture.configureByText("services.xml", content); PsiElement psiElement = myFixture.getFile().findElementAt(myFixture.getCaretOffset()); AnnotationHolderImpl holder = new AnnotationHolderImpl(new AnnotationSession(psiFile)); new XmlServiceContainerAnnotator().annotate(psiElement.getParent(), holder); return holder; } public void testConstructorInstance() { AnnotationHolderImpl holder = createAnnotationHolder( "<services>" + " <service class=\"Args\\Foo\">\n" + " <argument type=\"service\" id=\"args<caret>_bar\"/>\n" + " </service>" + "</services>" ); assertEquals("Expect instance of: Args\\Foo", holder.get(0).getMessage()); } public void testCallInstance() { AnnotationHolderImpl holder = createAnnotationHolder( "<services>" + " <service class=\"Args\\Foo\">\n" + " <call method=\"setFoo\">\n" + " <argument type=\"service\" id=\"args<caret>_bar\"/>\n" + " </call>\n" + " </service>" + "</services>" ); assertEquals("Expect instance of: Args\\Foo", holder.get(0).getMessage()); holder = createAnnotationHolder( "<services>" + " <service class=\"Args\\Foo\">\n" + " <call method=\"setFoo\">\n" + " <argument type=\"service\" id=\"args_bar<caret>\"/>\n" + " </call>\n" + " </service>" + "</services>" ); assertEquals("Expect instance of: Args\\Foo", holder.get(0).getMessage()); holder = createAnnotationHolder( "<services>" + " <service class=\"Args\\Foo\">\n" + " <call method=\"setFoo\">\n" + " <argument/>\n" + " <argument/>\n" + " <argument type=\"service\" id=\"args_bar<caret>\"/>\n" + " </call>\n" + " </service>" + "</services>" ); assertEquals("Expect instance of: Args\\Foo", holder.get(0).getMessage()); } }