package fr.adrienbrault.idea.symfony2plugin.tests.config.yaml;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import java.io.File;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
* @see fr.adrienbrault.idea.symfony2plugin.config.yaml.YamlAnnotator
*/
public class YamlAnnotatorTest extends SymfonyLightCodeInsightFixtureTestCase {
public void setUp() throws Exception {
super.setUp();
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("YamlAnnotator.php"));
myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject("YamlAnnotator.xml"));
}
public String getTestDataPath() {
return new File(this.getClass().getResource("fixtures").getFile()).getAbsolutePath();
}
public void testAnnotatorConstructorArguments() {
String[] strings = {
"@ar<caret>gs_bar",
"\"@ar<caret>gs_bar\"",
"'@ar<caret>gs_bar'",
};
for (String s : strings) {
assertAnnotationContains("services.yml",
"services:\n" +
" foo:\n" +
" class: \\Args\\Foo\n" +
" arguments: [" + s + "]",
"Expect instance of: Args\\Foo"
);
assertAnnotationContains("services.yml",
"services:\n" +
" foo:\n" +
" class: \\Args\\Foo\n" +
" arguments: [ @foo, %foo%, " + s + "]",
"Expect instance of: Args\\Foo"
);
}
}
public void testAnnotatorConstructorArgumentsAsSequence() {
String[] strings = {
"@ar<caret>gs_bar",
"\"@ar<caret>gs_bar\"",
"'@ar<caret>gs_bar'",
};
for (String s : strings) {
assertAnnotationContains("services.yml",
"services:\n" +
" foo:\n" +
" class: \\Args\\Foo\n" +
" arguments:\n" +
" - " + s + "\n",
"Expect instance of: Args\\Foo"
);
assertAnnotationContains("services.yml",
"services:\n" +
" foo:\n" +
" class: \\Args\\Foo\n" +
" arguments:\n" +
" - @foo\n" +
" - %foo%\n" +
" - " + s + "\n",
"Expect instance of: Args\\Foo"
);
}
}
public void testAnnotatorCallsArguments() {
String[] strings = {
"@ar<caret>gs_bar",
"\"@ar<caret>gs_bar\"",
"'@ar<caret>gs_bar'",
};
for (String s : strings) {
assertAnnotationContains("services.yml",
"services:\n" +
" foo:\n" +
" class: \\Args\\Foo\n" +
" calls:\n" +
" - [ setFoo, [" + s + "] ]\n",
"Expect instance of: Args\\Foo"
);
assertAnnotationContains("services.yml",
"services:\n" +
" foo:\n" +
" class: \\Args\\Foo\n" +
" calls:\n" +
" - [ setFoo, [@foo, %foo%, " + s + "] ]\n",
"Expect instance of: Args\\Foo"
);
}
}
public void testAnnotatorParameter() {
assertAnnotationContains("services.yml", "services:\n %foo_<caret>missing%", "Missing Parameter");
assertAnnotationNotContains("services.yml", "services:\n %foo_p<caret>arameter%", "Missing Parameter");
assertAnnotationContains("services.yml", "services:\n %Foo_<caret>missing%", "Missing Parameter");
assertAnnotationNotContains("services.yml", "services:\n %Foo_p<caret>arameter%", "Missing Parameter");
assertAnnotationContains("services.yml", "services:\n [ '%Foo_<caret>missing%' ]\n", "Missing Parameter");
assertAnnotationContains("services.yml", "services:\n [ \"%Foo_<caret>missing%\" ]\n", "Missing Parameter");
assertAnnotationNotContains("services.yml", "services:\n %kernel.root_dir%/../we<caret>b/%webpath_modelmasks%", "Missing Parameter");
}
public void testAnnotatorParameterForEnvMustNotAnnotationAsMissing() {
assertAnnotationNotContains("services.yml", "services:\n %env(FO<caret>O)%", "Missing Parameter");
assertAnnotationNotContains("services.yml", "services:\n '%env(FO<caret>O)%'", "Missing Parameter");
assertAnnotationNotContains("services.yml", "services:\n \"%env(FO<caret>O)%\"", "Missing Parameter");
assertAnnotationNotContains("services.yml", "services:\n '%ENV(FO<caret>O)%'", "Missing Parameter");
}
public void testAnnotatorServiceName() {
assertAnnotationContains("services.yml", "services:\n @args<caret>_unknown", "Missing Service");
assertAnnotationContains("services.yml", "services:\n @Args<caret>_unknown", "Missing Service");
assertAnnotationNotContains("services.yml", "services:\n @args<caret>_foo", "Missing Service");
assertAnnotationNotContains("services.yml", "services:\n @Args<caret>_foo", "Missing Service");
assertAnnotationNotContains("services.yml", "services:\n @@args<caret>_unknown", "Missing Service");
assertAnnotationNotContains("services.yml", "services:\n @=args<caret>_unknown", "Missing Service");
}
public void testAnnotatorClass() {
assertAnnotationContains("services.yml", "services:\n class: Args\\Fo<caret>oBar", "Missing Class");
assertAnnotationContains("services.yml", "services:\n class: 'Args\\Fo<caret>oBar'", "Missing Class");
assertAnnotationContains("services.yml", "services:\n class: \"Args\\Fo<caret>oBar\"", "Missing Class");
assertAnnotationContains("services.yml", "services:\n factory_class: Args\\Fo<caret>oBar", "Missing Class");
assertAnnotationNotContains("services.yml", "services:\n factory_class: Args\\Fo<caret>o", "Missing Class");
assertAnnotationContains("services.yml", "parameters:\n foo.class: Args\\Fo<caret>oBar", "Missing Class");
assertAnnotationContains("services.yml", "parameters:\n foo.class: 'Args\\Fo<caret>oBar'", "Missing Class");
assertAnnotationContains("services.yml", "parameters:\n foo.class: \"Args\\Fo<caret>oBar\"", "Missing Class");
assertAnnotationNotContains("services.yml", "parameters:\n foo.class: Args\\Fo<caret>o", "Missing Class");
}
}