package fr.adrienbrault.idea.symfony2plugin.tests.dic.linemarker;
import com.intellij.ide.highlighter.XmlFileType;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFileFactory;
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.dic.linemarker.XmlLineMarkerProvider
*/
public class XmlLineMarkerProviderTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("services.xml"));
}
public String getTestDataPath() {
return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath();
}
public void testThatDecoratedServiceShouldProvideMarker() {
assertLineMarker(createXmlFile("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<container>\n" +
" <services>\n" +
" <service id=\"foo_bar_main\" class=\"Foo\\Bar\\Apple\"/>\n" +
" </services>\n" +
"</container>"
),
new LineMarker.ToolTipEqualsAssert("Navigate to decoration")
);
}
public void testThatDecoratesProvidesOverwriteMarker() {
assertLineMarker(createXmlFile("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<container>\n" +
" <services>\n" +
" <service id=\"foo_bar_main\" decorates=\"app.mailer\"/>\n" +
" </services>\n" +
"</container>"
),
new LineMarker.ToolTipEqualsAssert("Navigate to decorated service")
);
}
@NotNull
private PsiElement createXmlFile(@NotNull String content) {
return PsiFileFactory.getInstance(getProject()).createFileFromText("DUMMY__." + XmlFileType.INSTANCE.getDefaultExtension(), XmlFileType.INSTANCE, content);
}
}