package fr.adrienbrault.idea.symfony2plugin.tests.doctrine.metadata;
import com.intellij.ide.highlighter.XmlFileType;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import java.io.File;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*
* @see fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.DoctrineXmlCompletionContributor
*/
public class DoctrineXmlCompletionContributorTest 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 testEntityNameCompletion() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mapping><entity name=\"<caret>\"/></doctrine-mapping>",
"MyDateTime"
);
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-foo-mapping><entity name=\"<caret>\"/></doctrine-foo-mapping>>",
"MyDateTime"
);
}
public void testDocumentNameCompletion() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mapping><document name=\"<caret>\"/></doctrine-mapping>",
"MyDateTime"
);
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mongo-mapping><document name=\"<caret>\"/></doctrine-mongo-mapping>",
"MyDateTime"
);
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-foo-mapping><document name=\"<caret>\"/></doctrine-foo-mapping>",
"MyDateTime"
);
}
public void testDocumentEmbeddedNameCompletion() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mongo-mapping><embedded-document name=\"<caret>\"/></doctrine-mongo-mapping>",
"MyDateTime"
);
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-foo-mapping><embedded name=\"<caret>\"/></doctrine-foo-mapping>",
"MyDateTime"
);
}
public void testDocumentNameNonSupportedCompletion() {
assertCompletionNotContains(
XmlFileType.INSTANCE,
"<doctrine1-foo-mapping><document name=\"<caret>\"/></doctrine1-foo-mapping>",
"MyDateTime"
);
assertCompletionNotContains(
XmlFileType.INSTANCE,
"<doctrine1-mapping><document name=\"<caret>\"/></doctrine1-mapping>",
"MyDateTime"
);
}
public void testEntityRepositoryCompletion() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mapping><entity repository-class=\"<caret>\"/></doctrine-mapping>",
"Foo\\Bar\\Ns\\BarRepo"
);
assertCompletionResultEquals(XmlFileType.INSTANCE, "" +
"<doctrine-mapping><entity repository-class=\"Foo\\Bar\\Ns\\<caret>\"/></doctrine-mapping>",
"<doctrine-mapping><entity repository-class=\"Foo\\Bar\\Ns\\BarRepo\"/></doctrine-mapping>"
);
}
public void testDocumentRepositoryCompletion() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-foo-mapping><document repository-class=\"<caret>\"/></doctrine-foo-mapping>",
"Foo\\Bar\\Ns\\BarRepo"
);
assertCompletionResultEquals(XmlFileType.INSTANCE, "" +
"<doctrine-foo-mapping><document repository-class=\"Foo\\Bar\\Ns\\<caret>\"/></doctrine-foo-mapping>",
"<doctrine-foo-mapping><document repository-class=\"Foo\\Bar\\Ns\\BarRepo\"/></doctrine-foo-mapping>"
);
}
public void testRelationCompletion() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mapping><document><reference-one target-document=\"<caret>\"/></document></doctrine-mapping>",
"MyDateTime"
);
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mapping><entity><one-to-many target-entity=\"<caret>\"/></entity></doctrine-mapping>",
"MyDateTime"
);
}
public void testEmbeddableNameShouldCompleteClass() {
assertCompletionContains(
XmlFileType.INSTANCE,
"<doctrine-mapping><embeddable name=\"<caret>\"/></doctrine-mapping>",
"MyDateTime"
);
}
}