package fr.adrienbrault.idea.symfony2plugin.tests.external.toolbox.provider;
import com.intellij.psi.PsiElement;
import com.intellij.util.containers.ContainerUtil;
import com.jetbrains.php.lang.PhpFileType;
import com.jetbrains.php.lang.psi.PhpPsiElementFactory;
import com.jetbrains.php.lang.psi.elements.PhpClass;
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
import de.espend.idea.php.toolbox.navigation.dict.PhpToolboxDeclarationHandlerParameter;
import de.espend.idea.php.toolbox.type.PhpToolboxTypeProviderArguments;
import fr.adrienbrault.idea.symfony2plugin.external.toolbox.provider.ServiceToolboxProvider;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
public class ServiceToolboxProviderTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.copyFileToProject("services.xml");
myFixture.copyFileToProject("classes.php");
}
public String getTestDataPath() {
return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath();
}
/**
* @see ServiceToolboxProvider#resolveParameter
*/
public void testTypeResolve() {
ServiceToolboxProvider provider = new ServiceToolboxProvider();
Collection<PhpNamedElement> classes = provider.resolveParameter(
new PhpToolboxTypeProviderArguments(getProject(), "foo_bar_foo_Bar", new ArrayList<>())
);
assertNotNull(classes);
assertNotNull(ContainerUtil.find(classes, phpNamedElement ->
phpNamedElement instanceof PhpClass && "FooBar".equals(phpNamedElement.getName()))
);
}
/**
* @see ServiceToolboxProvider#resolveParameter
*/
public void testTypeNullResolve() {
assertNull(new ServiceToolboxProvider().resolveParameter(
new PhpToolboxTypeProviderArguments(getProject(), "unknown_xxx", new ArrayList<>())
));
}
/**
* @see ServiceToolboxProvider#getPsiTargets
*/
public void testTargetIsReturnedForService() {
Collection<PsiElement> classes = new ServiceToolboxProvider().getPsiTargets(
new PhpToolboxDeclarationHandlerParameter(PhpPsiElementFactory.createComma(getProject()), "foo_bar_foo_Bar", PhpFileType.INSTANCE)
);
assertNotNull(classes);
assertNotNull(ContainerUtil.find(classes, phpNamedElement ->
phpNamedElement instanceof PhpClass && "FooBar".equals(((PhpClass) phpNamedElement).getName()))
);
}
}