package fr.adrienbrault.idea.symfony2plugin.tests.doctrine.metadata.driver; import com.intellij.psi.PsiFile; import com.jetbrains.php.lang.psi.PhpPsiElementFactory; import fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.dict.DoctrineMetadataModel; import fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.driver.DoctrineMappingDriverArguments; import fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.driver.DoctrinePhpMappingDriver; import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; import java.io.File; /** * @author Daniel Espendiller <daniel@espendiller.net> * * @see fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.driver.DoctrinePhpMappingDriver */ public class DoctrinePhpMappingDriverTest 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(); } /** * @see DoctrinePhpMappingDriver#getMetadata(fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.driver.DoctrineMappingDriverArguments) */ public void testPhpAnnotationsMetadata() { DoctrineMetadataModel metadata = createOrmMetadata(); assertEquals("string", metadata.getField("email").getTypeName()); assertEquals("OneToMany", metadata.getField("phonenumbers").getRelationType()); assertEquals("Phonenumber", metadata.getField("phonenumbers").getRelation()); assertEquals("OneToOne", metadata.getField("address").getRelationType()); assertEquals("Address", metadata.getField("address").getRelation()); assertEquals("ManyToOne", metadata.getField("apple").getRelationType()); assertEquals("Apple", metadata.getField("apple").getRelation()); assertEquals("ManyToMany", metadata.getField("egg").getRelationType()); assertEquals("Egg", metadata.getField("egg").getRelation()); } /** * @see DoctrinePhpMappingDriver#getMetadata(fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.driver.DoctrineMappingDriverArguments) */ public void testPhpFlowAnnotationsMetadata() { PsiFile psiFile = PhpPsiElementFactory.createPsiFileFromText(getProject(), "<?php $foo = null;"); DoctrineMetadataModel metadata = new DoctrinePhpMappingDriver().getMetadata( new DoctrineMappingDriverArguments(getProject(), psiFile, "\\Doctrine\\Flow\\Orm\\Annotation") ); assertEquals("string", metadata.getField("email").getTypeName()); assertEquals("ManyToMany", metadata.getField("car").getRelationType()); assertEquals("\\DateTime", metadata.getField("car").getRelation()); } /** * @see DoctrinePhpMappingDriver#getMetadata(fr.adrienbrault.idea.symfony2plugin.doctrine.metadata.driver.DoctrineMappingDriverArguments) */ public void testPhpTableAnnotationsMetadata() { assertEquals("FOO", createOrmMetadata().getTable()); } private DoctrineMetadataModel createOrmMetadata() { return new DoctrinePhpMappingDriver().getMetadata( new DoctrineMappingDriverArguments(getProject(), PhpPsiElementFactory.createPsiFileFromText(getProject(), "<?php $foo = null;"), "\\Doctrine\\Orm\\Annotation") ); } }