package fr.adrienbrault.idea.symfony2plugin.tests.stubs.indexes; import com.intellij.ide.highlighter.XmlFileType; import fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex; import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; import org.jetbrains.yaml.YAMLFileType; /** * @author Daniel Espendiller <daniel@espendiller.net> * @see fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex */ public class RoutesStubIndexTest extends SymfonyLightCodeInsightFixtureTestCase { public void setUp() throws Exception { super.setUp(); myFixture.configureByText(YAMLFileType.YML, "" + "foo_yaml_pattern:\n" + " pattern: /\n" + " methods: [GET, POST]\n" + " defaults: { _controller: foo_controller }" + "\n" + "foo_yaml_path:\n" + " path: /\n" + " defaults: { _controller: foo_controller }" + "\n" + "foo_yaml_controller_normalized:\n" + " path: /\n" + " defaults: { _controller: FooBundle:Foo/Foo:index }" + "\n" + "foo_yaml_path_only:\n" + " path: /\n" + "foo_yaml_invalid:\n" + " path_invalid: /\n" ); myFixture.configureByText(XmlFileType.INSTANCE, "" + "<routes>\n" + " <route id=\"foo_xml_pattern\" pattern=\"/blog/{slug}\" methods=\"GET|POST\"/>\n" + " <route id=\"foo_xml_path\" path=\"/blog/{slug}\">\n" + " <default key=\"_controller\">Foo</default>\n" + " </route>\n" + " <route id=\"foo_controller_normalized\" path=\"/blog/{slug}\">\n" + " <default key=\"_controller\">FooBundle:Foo/Foo:index</default>\n" + " </route>\n" + " <route id=\"foo_xml_id_only\"/>\n" + "</routes>" ); } /** * @see fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex#getIndexer() */ public void testRouteIdIndex() { assertIndexContains(RoutesStubIndex.KEY, "foo_yaml_pattern", "foo_yaml_path", "foo_yaml_path_only", "foo_xml_pattern", "foo_xml_path", "foo_xml_id_only" ); assertIndexNotContains(RoutesStubIndex.KEY, "foo_yaml_invalid" ); } /** * @see fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex#getIndexer() */ public void testRouteValueIndex() { assertIndexContainsKeyWithValue(RoutesStubIndex.KEY, "foo_yaml_path", value -> "foo_controller".equalsIgnoreCase(value.getController()) ); } /** * @see fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex#getIndexer() */ public void testRouteValueWithMethodsInIndex() { assertIndexContainsKeyWithValue(RoutesStubIndex.KEY, "foo_yaml_pattern", value -> "foo_yaml_pattern".equalsIgnoreCase(value.getName()) && value.getMethods().contains("get") && value.getMethods().contains("post") ); assertIndexContainsKeyWithValue(RoutesStubIndex.KEY, "foo_xml_pattern", value -> "foo_xml_pattern".equalsIgnoreCase(value.getName()) && value.getMethods().contains("get") && value.getMethods().contains("post") ); } /** * @see fr.adrienbrault.idea.symfony2plugin.stubs.indexes.RoutesStubIndex#getIndexer() */ public void testRouteSlashesNormalized() { assertIndexContainsKeyWithValue(RoutesStubIndex.KEY, "foo_yaml_controller_normalized", value -> "FooBundle:Foo\\Foo:index".equalsIgnoreCase(value.getController()) ); assertIndexContainsKeyWithValue(RoutesStubIndex.KEY, "foo_controller_normalized", value -> "FooBundle:Foo\\Foo:index".equalsIgnoreCase(value.getController()) ); } }