package fr.adrienbrault.idea.symfony2plugin.tests.dic.yaml;
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.config.yaml.YamlCompletionContributor
*/
public class YamlDicCompletionContributorTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.copyFileToProject("appDevDebugProjectContainer.xml");
myFixture.configureByText("classes.php", "<?php\n" +
"namespace Foo\\Name;\n" +
"class FooClass {" +
" public function foo() " +
"}"
);
}
public String getTestDataPath() {
return new File(this.getClass().getResource("..").getFile()).getAbsolutePath();
}
public void testServiceCompletion() {
assertCompletionContains(YAMLFileType.YML, "@<caret>", "data_collector.router");
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo:\n" +
" arguments: [\"@<caret>\"] "
, "data_collector.router"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo:\n" +
" arguments: ['@<caret>'] "
, "data_collector.router"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo:\n" +
" arguments: [@<caret>] "
, "data_collector.router"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" my_service:\n" +
" factory_service: <caret>\n"
, "data_collector.router"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" newsletter_manager:\n" +
" parent: @<caret>\n"
, "data_collector.router"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" newsletter_manager:\n" +
" parent: @<caret>\n"
, "data_collector.router"
);
}
public void testServiceStaticCompletion() {
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" newsletter_manager:\n" +
" @<caret>\n"
, "arguments", "calls"
);
}
public void testClassesCompletion() {
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" espend_container_service.yaml:\n" +
" class: <caret>\n"
, "FooClass"
);
/* todo: contains check; char switch expected "(" "["
assertCompletionLookupTailEquals(YAMLFileType.YML, "services:\n" +
" espend_container_service.yaml:\n" +
" class: <caret>\n"
, "FooClass", " (Foo\\Name)"
);
*/
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" newsletter_manager:\n" +
" factory_class: <caret>\n"
, "FooClass"
);
}
public void testClassCompletionResult() {
assertCompletionResultEquals("service.yml",
"services:\n" +
" espend_container_service.yaml:\n" +
" class: FooClass<caret>\n",
"services:\n" +
" espend_container_service.yaml:\n" +
" class: Foo\\Name\\FooClass\n"
);
assertCompletionResultEquals("service.yml",
"services:\n" +
" espend_container_service.yaml:\n" +
" class: Foo\\Name\\<caret>\n",
"services:\n" +
" espend_container_service.yaml:\n" +
" class: Foo\\Name\\FooClass\n"
);
}
public void testFactoryClassMethodCompletionResult() {
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo.factory:\n" +
" class: Foo\\Name\\FooClass\n" +
" foo.manager:\n" +
" factory: [\"@foo.factory\", <caret>]\n"
, "foo"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo.factory:\n" +
" class: Foo\\Name\\FooClass\n" +
" foo.manager:\n" +
" factory: [@foo.factory, <caret>]\n"
, "foo"
);
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo.factory:\n" +
" class: Foo\\Name\\FooClass\n" +
" foo.manager:\n" +
" factory: ['@foo.factory', <caret>]\n"
, "foo"
);
}
public void testFactoryClassMethodCompletionForStringShortcut() {
assertCompletionContains(YAMLFileType.YML, "services:\n" +
" foo.manager:\n" +
" factory: '<caret>'\n"
, "data_collector.router"
);
}
}