package fr.adrienbrault.idea.symfony2plugin.tests.templating.translation;
import com.jetbrains.twig.TwigFileType;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigTemplateCompletionContributor
*/
public class TwigTranslationCompletionContributorTest extends TwigTranslationFixturesTestCase {
public void testTwigTransCompletion() {
assertCompletionContains(TwigFileType.INSTANCE, "{{ 'foo'|trans({}, '<caret>') }}", "messages");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|trans }}", "yaml_weak.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ 'foo'|trans({}, '<caret>') }}", "foo");
assertCompletionContains(TwigFileType.INSTANCE, "{{ message|trans({'%name%': 'Haehnchen'}, \"<caret>\") }}", "foo");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|trans({}, 'foo') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{'<caret>'|trans({}, 'foo')}}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>' | trans({}, 'foo') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>' | trans( {}, 'foo') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>' | trans( {}, 'foo' ) }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|trans([], 'foo') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|trans|desc('Profile') }}", "yaml_weak.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ 'foo'|trans({}, '<caret>')|desc('Profile') }}", "messages");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|trans({}, 'foo')|desc('Profile') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain \"foo\" %}\n{{ '<caret>'|trans }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain \"foo\" %}\n{{ '<caret>'|transchoice }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|transchoice(3, {}, 'foo') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|transchoice(3, [], 'foo') }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ sonata_block_render({\n" +
" 'type': 'nice_block',\n" +
" 'settings': {\n" +
" 'title': '<caret>'|trans,\n" +
" 'more_url': path('more_nice_stuff'),\n" +
" 'sub_partner_id': app.request.query.get('sub_partner_id')\n" +
" }\n" +
" })\n" +
"}}",
"yaml_weak.symfony.great"
);
assertCompletionNotContains(TwigFileType.INSTANCE, "{{ 'foo'|trans|desc('<caret>') }}", "messages");
assertCompletionNotContains(TwigFileType.INSTANCE, "{{ sonata_block_render({\n" +
" 'type': 'nice_block',\n" +
" 'settings': {\n" +
" 'title': 'foo'|trans,\n" +
" 'sub_partner_id': app.request.query.get('<caret>')\n" +
" }\n" +
" })\n" +
"}}",
"yaml_weak.symfony.great"
);
}
public void testTwigTransChoiceCompletion() {
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|transchoice(5) }}", "yaml_weak.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain \"foo\" %}\n{{ '<caret>'|transchoice(5) }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|transchoice(5, {'%name%': 'Haehnchen'}) }}", "yaml_weak.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain \"foo\" %}\n{{ '<caret>'|transchoice(5, {'%name%': 'Haehnchen'}) }}", "foo.symfony.great");
assertCompletionContains(TwigFileType.INSTANCE, "{{ message|transchoice(5, {'%name%': 'Haehnchen'}, '<caret>') }}", "messages");
}
public void testTwigWeakIndexSubIndexesCompletion() {
assertCompletionContains(TwigFileType.INSTANCE, "{{ 'foo'|trans({}, '<caret>') }}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{{ '<caret>'|trans({}, 'interchange') }}", "xlf_weak.symfony.great");
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.TwigHelper#getTransDefaultDomainPattern
* @see fr.adrienbrault.idea.symfony2plugin.templating.TwigTemplateCompletionContributor
*/
public void testTwigTransDefaultDomainDomainCompletion() {
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain '<caret>' %}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain \"<caret>\" %}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans_default_domain <caret> %}", "interchange");
}
/**
* @see fr.adrienbrault.idea.symfony2plugin.TwigHelper#getTranslationTokenTagFromPattern
*/
public void testTranslationTokenTagFromCompletion() {
assertCompletionContains(TwigFileType.INSTANCE, "{% trans from \"<caret>\" %}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans from \"<caret>\" %}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{% \t trans from \"<caret>\" %}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{% transchoice from \"<caret>\" %}", "interchange");
assertCompletionContains(TwigFileType.INSTANCE, "{% trans with {'%name%': 'Fabien'} from \"<caret>\" %}", "interchange");
assertCompletionNotContains(TwigFileType.INSTANCE, "{% foo from \"<caret>\" %}", "interchange");
}
public void testTranslationCompletionForEmbedTransDefaultDomainScope() {
assertCompletionContains(TwigFileType.INSTANCE, "" +
"{% trans_default_domain 'interchange' %}\n" +
"{% embed 'foo.html.twig' %}\n" +
" {{ '<caret>'|trans }}\n" +
"{% endembed %}\n",
"yaml_weak.symfony.great"
);
assertCompletionContains(TwigFileType.INSTANCE, "" +
"{% embed 'foo.html.twig' %}\n" +
" {{ '<caret>'|trans }}\n" +
"{% endembed %}\n",
"yaml_weak.symfony.great"
);
assertCompletionContains(TwigFileType.INSTANCE, "" +
"{% embed 'foo.html.twig' %}\n" +
" {% trans_default_domain 'interchange' %}" +
" {{ '<caret>'|trans }}\n" +
"{% endembed %}\n",
"xlf_weak.symfony.great"
);
}
public void testTransDefaultDomainCompletionShouldQuotedStringValue() {
assertCompletionResultEquals(
TwigFileType.INSTANCE,
"{% trans_default_domain interchang<caret> %}",
"{% trans_default_domain \"interchange\" %}"
);
assertCompletionResultEquals(
TwigFileType.INSTANCE,
"{% trans_default_domain 'interchang<caret>' %}",
"{% trans_default_domain 'interchange' %}"
);
assertCompletionResultEquals(
TwigFileType.INSTANCE,
"{% trans_default_domain \"interchang<caret>\" %}",
"{% trans_default_domain \"interchange\" %}"
);
}
}