From d0214e5487b92c5fabbf1e9ff3409e79275307fd Mon Sep 17 00:00:00 2001 From: Patrick Huang Date: Fri, 19 Sep 2014 11:37:30 +1000 Subject: [PATCH] rhbz1139950 - apply file mapping rule to xliff pull strategy --- .../client/commands/pull/XliffStrategy.java | 9 ++- .../commands/pull/XliffStrategyPullTest.java | 75 +++++++++++++++++++ 2 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 zanata-client-commands/src/test/java/org/zanata/client/commands/pull/XliffStrategyPullTest.java diff --git a/zanata-client-commands/src/main/java/org/zanata/client/commands/pull/XliffStrategy.java b/zanata-client-commands/src/main/java/org/zanata/client/commands/pull/XliffStrategy.java index 707ce1ad..2bcc8ad4 100644 --- a/zanata-client-commands/src/main/java/org/zanata/client/commands/pull/XliffStrategy.java +++ b/zanata-client-commands/src/main/java/org/zanata/client/commands/pull/XliffStrategy.java @@ -25,12 +25,15 @@ import java.io.IOException; import org.zanata.adapter.xliff.XliffWriter; +import org.zanata.client.commands.TransFileResolver; import org.zanata.client.config.LocaleMapping; import org.zanata.common.io.FileDetails; import org.zanata.rest.StringSet; import org.zanata.rest.dto.resource.Resource; import org.zanata.rest.dto.resource.TranslationsResource; +import static org.zanata.client.commands.TransFileResolver.UnqualifiedSrcDocName; + /** * @author Sean Flanigan sflaniga@redhat.com @@ -61,10 +64,8 @@ public void writeSrcFile(Resource doc) throws IOException { @Override public File getTransFileToWrite(String docName, LocaleMapping localeMapping) { - // TODO This is the same as XliffWriter's used file, but code is - // duplicated - return new File(getOpts().getTransDir(), docName + "_" - + localeMapping.getLocalLocale().replace('-', '_') + ".xml"); + return new TransFileResolver(getOpts()).getTransFile( + UnqualifiedSrcDocName.from(docName), localeMapping); } @Override diff --git a/zanata-client-commands/src/test/java/org/zanata/client/commands/pull/XliffStrategyPullTest.java b/zanata-client-commands/src/test/java/org/zanata/client/commands/pull/XliffStrategyPullTest.java new file mode 100644 index 00000000..7752fb15 --- /dev/null +++ b/zanata-client-commands/src/test/java/org/zanata/client/commands/pull/XliffStrategyPullTest.java @@ -0,0 +1,75 @@ +package org.zanata.client.commands.pull; + +import com.google.common.base.Optional; +import com.google.common.collect.Lists; +import org.junit.Before; +import org.junit.Test; +import org.zanata.client.config.FileMappingRule; +import org.zanata.client.config.LocaleList; +import org.zanata.client.config.LocaleMapping; + +import java.io.File; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.zanata.client.TestUtils.createAndAddLocaleMapping; + +public class XliffStrategyPullTest { + private XliffStrategy strategy; + private PullOptionsImpl opts; + + @Before + public void setUp() { + opts = new PullOptionsImpl(); + opts.setLocaleMapList(new LocaleList()); + opts.setProjectType("xliff"); + strategy = new XliffStrategy(opts); + } + + @Test + public void canGetTransFileWithoutMappingRule() { + LocaleMapping deMapping = createAndAddLocaleMapping("de", + Optional.absent(), opts); + LocaleMapping zhMapping = + createAndAddLocaleMapping("zh-CN", + Optional.of("zh-Hans"), + opts); + + File deTransFile = + strategy.getTransFileToWrite("foo/message", deMapping); + + assertThat(deTransFile, + equalTo(new File(opts.getTransDir(), "foo/message_de.xml"))); + + File zhTransFile = + strategy.getTransFileToWrite("foo/message", zhMapping); + assertThat(zhTransFile, equalTo( + new File(opts.getTransDir(), "foo/message_zh_Hans.xml"))); + + } + + @Test + public void canGetTransFileWithMappingRule() { + LocaleMapping deMapping = createAndAddLocaleMapping("de", + Optional.absent(), opts); + LocaleMapping zhMapping = + createAndAddLocaleMapping("zh-CN", + Optional.of("zh-Hans"), + opts); + opts.setFileMappingRules(Lists.newArrayList( + new FileMappingRule("{path}/{filename}_{locale_with_underscore}.{extension}"))); + + File deTransFile = + strategy.getTransFileToWrite("foo/message", deMapping); + + assertThat(deTransFile, + equalTo(new File(opts.getTransDir(), "foo/message_de.xml"))); + + File zhTransFile = + strategy.getTransFileToWrite("foo/message", zhMapping); + assertThat(zhTransFile, equalTo( + new File(opts.getTransDir(), "foo/message_zh_Hans.xml"))); + + } + +} \ No newline at end of file