package fr.adrienbrault.idea.symfony2plugin.tests.translation.util;
import com.intellij.ide.highlighter.XmlFileType;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.xml.XmlFile;
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
import fr.adrienbrault.idea.symfony2plugin.translation.util.TranslationInsertUtil;
import fr.adrienbrault.idea.symfony2plugin.util.yaml.YamlPsiElementFactory;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class TranslationInsertUtilTest extends SymfonyLightCodeInsightFixtureTestCase {
public void testInsertTranslationForXlf() {
PsiFile psiFile = PsiFileFactory.getInstance(getProject()).createFileFromText("foo.xml", XmlFileType.INSTANCE, "" +
"<?xml version=\"1.0\"?>\n" +
"<xliff version=\"1.2\" xmlns=\"urn:oasis:names:tc:xliff:document:1.2\">\n" +
" <file source-language=\"en\" datatype=\"plaintext\" original=\"file.ext\">\n" +
" <body>\n" +
" <trans-unit id=\"1\">\n" +
" <source>This value should be false.</source>\n" +
" </trans-unit>\n" +
" <trans-unit id=\"foobar\">\n" +
" <source>This value should be false.</source>\n" +
" </trans-unit>\n" +
" </body>\n" +
" </file>\n" +
"</xliff>\n"
);
CommandProcessor.getInstance().executeCommand(getProject(), () -> ApplicationManager.getApplication().runWriteAction(() -> {
TranslationInsertUtil.invokeTranslation((XmlFile) psiFile, "foobar", "value");
}), null, null);
String text = psiFile.getText();
assertTrue(text.contains("<trans-unit id=\"2\">"));
assertTrue(text.contains("<source>foobar</source>"));
assertTrue(text.contains("<target>value</target>"));
}
public void testInsertTranslationForXlf20() {
PsiFile xmlFile = PsiFileFactory.getInstance(getProject()).createFileFromText("foo.xml", XmlFileType.INSTANCE, "" +
"<?xml version=\"1.0\"?>\n" +
"<xliff xmlns=\"urn:oasis:names:tc:xliff:document:2.0\"\n" +
" version=\"2.0\" srcLang=\"en-US\" trgLang=\"ja-JP\">\n" +
" <file id=\"f1\" original=\"Graphic Example.psd\">\n" +
" <skeleton href=\"Graphic Example.psd.skl\"/>\n" +
" <group id=\"1\">\n" +
" <unit id=\"1\">\n" +
" <segment>\n" +
" <source>foo</source>\n" +
" </segment>\n" +
" </unit>\n" +
" <unit id=\"foobar\">\n" +
" <segment>\n" +
" <source>foo</source>\n" +
" </segment>\n" +
" </unit>\n" +
" </group>\n" +
" </file>\n" +
"</xliff>"
);
CommandProcessor.getInstance().executeCommand(getProject(), () -> ApplicationManager.getApplication().runWriteAction(() -> {
TranslationInsertUtil.invokeTranslation((XmlFile) xmlFile, "foobar", "value");
}), null, null);
String text = xmlFile.getText();
assertTrue(text.contains("<unit id=\"2\">"));
assertTrue(text.contains("<source>foobar</source>"));
assertTrue(text.contains("<target>value</target>"));
}
public void testInsertTranslationForXlf20Shortcut() {
PsiFile xmlFile = PsiFileFactory.getInstance(getProject()).createFileFromText("foo.xml", XmlFileType.INSTANCE, "" +
"<xliff xmlns=\"urn:oasis:names:tc:xliff:document:2.0\" version=\"2.0\"\n" +
" srcLang=\"en-US\" trgLang=\"ja-JP\">\n" +
" <file id=\"f1\" original=\"Graphic Example.psd\">\n" +
" <skeleton href=\"Graphic Example.psd.skl\"/>\n" +
" <unit id=\"1\">\n" +
" <segment>\n" +
" <source>foo</source>\n" +
" </segment>\n" +
" </unit>\n" +
" <unit id=\"foobar\">\n" +
" <segment>\n" +
" <source>foo</source>\n" +
" </segment>\n" +
" </unit>\n" +
" </file>\n" +
"</xliff>"
);
CommandProcessor.getInstance().executeCommand(getProject(), () -> ApplicationManager.getApplication().runWriteAction(() -> {
TranslationInsertUtil.invokeTranslation((XmlFile) xmlFile, "foobar", "value");
}), null, null);
String text = xmlFile.getText();
assertTrue(text.contains("<unit id=\"2\">"));
assertTrue(text.contains("<source>foobar</source>"));
assertTrue(text.contains("<target>value</target>"));
}
public void testInsertTranslationForYamlFile() {
PsiFile dummyFile = YamlPsiElementFactory.createDummyFile(getProject(), "foo.de.yml", "car: 'foo'");
CommandProcessor.getInstance().executeCommand(getProject(), () -> ApplicationManager.getApplication().runWriteAction(() -> {
TranslationInsertUtil.invokeTranslation(dummyFile, "foobar", "value");
}), null, null);
String text = dummyFile.getText();
assertTrue(text.contains("foobar: 'value'"));
}
}