package fr.adrienbrault.idea.symfony2plugin.tests.doctrine.metadata;
import com.intellij.ide.highlighter.XmlFileType;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFileFactory;
import com.jetbrains.php.lang.PhpFileType;
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.doctrine.metadata.DoctrineMetadataLineMarkerProvider
*/
public class DoctrineMetadataLineMarkerProviderTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("classes.php"));
}
public String getTestDataPath() {
return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath();
}
public void testTargetDocumentLineMarker() {
assertLineMarker(
createXmlFile("<doctrine-mapping><document><reference-one target-document=\"MyDateTime\"/></document></doctrine-mapping>"),
new LineMarker.ToolTipEqualsAssert("Navigate to class")
);
assertLineMarker(
createXmlFile("<doctrine-mapping><entity><one-to-many target-entity=\"MyDateTime\"/></entity></doctrine-mapping>"),
new LineMarker.ToolTipEqualsAssert("Navigate to class")
);
assertLineMarker(
createXmlFile("<doctrine-mapping><embedded-document><reference-one target-document=\"MyDateTime\"/></embedded-document></doctrine-mapping>"),
new LineMarker.ToolTipEqualsAssert("Navigate to class")
);
assertLineMarker(
createXmlFile("<doctrine-mapping><embedded><reference-one target-document=\"MyDateTime\"/></embedded></doctrine-mapping>"),
new LineMarker.ToolTipEqualsAssert("Navigate to class")
);
}
public void testEmbeddableClassLineMarker() {
assertLineMarker(
createXmlFile("<doctrine-mapping><embeddable name=\"MyDateTime\"/></doctrine-mapping>"),
new LineMarker.ToolTipEqualsAssert("Navigate to class")
);
}
public void testTargetDocumentLineMarkerInSameNamespace() {
myFixture.configureByText(PhpFileType.INSTANCE, "<?php\n" +
"namespace Entity{\n" +
" class Bar{}\n" +
" class Relation{}\n" +
"}"
);
assertLineMarker(
createXmlFile("<doctrine-mapping><entity name=\"Entity\\Bar\"><one-to-many target-entity=\"Relation\"/></entity></doctrine-mapping>"),
new LineMarker.ToolTipEqualsAssert("Navigate to class")
);
}
@NotNull
private PsiElement createXmlFile(@NotNull String content) {
return PsiFileFactory.getInstance(getProject()).createFileFromText("DUMMY__." + XmlFileType.INSTANCE.getDefaultExtension(), XmlFileType.INSTANCE, content);
}
}