package fr.adrienbrault.idea.symfony2plugin.tests.doctrine;
import com.intellij.openapi.util.Pair;
import com.intellij.psi.PsiFile;
import com.jetbrains.php.lang.PhpFileType;
import com.jetbrains.php.lang.psi.PhpPsiElementFactory;
import fr.adrienbrault.idea.symfony2plugin.doctrine.DoctrineUtil;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import java.util.Collection;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class DoctrineUtilTest extends SymfonyLightCodeInsightFixtureTestCase {
/**
* @see DoctrineUtil#getClassRepositoryPair
*/
public void testGetClassRepositoryPairForStringValue() {
PsiFile psiFileFromText = PhpPsiElementFactory.createPsiFileFromText(getProject(), "" +
"<?php\n" +
"\n" +
"namespace Foo;\n" +
"\n" +
"use Doctrine\\ORM\\Mapping as ORM;\n" +
"\n" +
"/**\n" +
" * @ORM\\Entity(repositoryClass=\"MyBundle\\Entity\\Repository\\AddressRepository\")\n" +
" */\n" +
"class Apple {\n" +
"}\n"
);
Collection<Pair<String, String>> classRepositoryPair = DoctrineUtil.getClassRepositoryPair(psiFileFromText);
Pair<String, String> next = classRepositoryPair.iterator().next();
assertEquals("Foo\\Apple", next.getFirst());
assertEquals("MyBundle\\Entity\\Repository\\AddressRepository", next.getSecond());
}
/**
* @see DoctrineUtil#getClassRepositoryPair
*/
public void testGetClassRepositoryPairForClassConstant() {
myFixture.configureByText(PhpFileType.INSTANCE, "<?php class Foobar {};");
PsiFile psiFileFromText = PhpPsiElementFactory.createPsiFileFromText(getProject(), "<?php\n" +
"\n" +
"namespace Foo;\n" +
"\n" +
"use Doctrine\\ORM\\Mapping as ORM;\n" +
"use Foobar;\n" +
"\n" +
"/**\n" +
" * @ORM\\Entity(repositoryClass=Foobar::class)\n" +
" */\n" +
"class Apple {\n" +
"}\n"
);
Collection<Pair<String, String>> classRepositoryPair = DoctrineUtil.getClassRepositoryPair(psiFileFromText);
Pair<String, String> next = classRepositoryPair.iterator().next();
assertEquals("Foo\\Apple", next.getFirst());
assertEquals("Foobar", next.getSecond());
}
}