package fr.adrienbrault.idea.symfony2plugin.tests.routing; import com.intellij.ide.highlighter.XmlFileType; import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; import org.jetbrains.yaml.YAMLFileType; import java.io.File; /** * @author Daniel Espendiller <daniel@espendiller.net> * @see fr.adrienbrault.idea.symfony2plugin.util.controller.ControllerIndex */ public class RoutingDefinitionTest extends SymfonyLightCodeInsightFixtureTestCase { public void setUp() throws Exception { super.setUp(); myFixture.copyFileToProject("services.yml", "services.yml"); myFixture.copyFileToProject("routing.xml", "routing.xml"); myFixture.configureByText("classes.php", "<?php\n" + "namespace AppBundle;\n" + "class AppBundle extends \\Symfony\\Component\\HttpKernel\\Bundle\\Bundle {}" + "namespace AppBundle\\Controller;\n" + "class DefaultController {\n" + " public function indexAction() {}\n" + " private function fooAction() {}\n" + " public function indexActionFoo() {}\n" + "}" + "namespace AppBundle\\Controller\\Foo;\n" + "class DefaultController {\n" + " public function indexAction() {}\n" + "}" ); } protected String getTestDataPath() { return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath(); } public void testYamlCompletion() { assertCompletionContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: <caret> }\n" , "AppBundle:Default:index", "AppBundle:Foo/Default:index" ); assertCompletionNotContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: <caret> }\n" , "AppBundle:Default:foo" ); assertCompletionContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: '<caret>' }\n" , "AppBundle:Default:index", "AppBundle:Foo/Default:index" ); assertCompletionNotContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: \"<caret>\" }\n" , "AppBundle:Default:foo" ); } public void testYamlNavigation() { assertNavigationContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: AppBundle:<caret>Default:index }\n" , "AppBundle\\Controller\\DefaultController::indexAction" ); assertNavigationContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: AppBundle:Foo/<caret>Default:index }\n" , "AppBundle\\Controller\\Foo\\DefaultController::indexAction" ); } public void testXmlCompletion() { assertCompletionContains(XmlFileType.INSTANCE, "" + "<route id=\"blog_show\" path=\"/blog/{slug}\">\n" + " <default key=\"_controller\"><caret></default>\n" + "</route>" , "AppBundle:Default:index", "AppBundle:Foo/Default:index" ); } public void testControllerAsServiceNavigation() { assertNavigationContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: app.hello_controller<caret>:indexAction }\n" , "AppBundle\\Controller\\DefaultController::indexAction" ); } public void testControllerAsServiceCompletion() { assertCompletionContains(YAMLFileType.YML, "foo:\n" + " pattern: /\n" + " defaults: { _controller: app.hello_controller:<caret> }\n" , "app.hello_controller:indexAction" ); } }