diff --git a/cli/src/main/java/com/box/l10n/mojito/cli/command/DropExportCommand.java b/cli/src/main/java/com/box/l10n/mojito/cli/command/DropExportCommand.java index c5d4b8dde0..e31bcf15d0 100644 --- a/cli/src/main/java/com/box/l10n/mojito/cli/command/DropExportCommand.java +++ b/cli/src/main/java/com/box/l10n/mojito/cli/command/DropExportCommand.java @@ -161,13 +161,13 @@ List getBcp47TagsForExportFromParam(Repository repository) throws Comman return bcp47tags; } - private boolean shouldCreateDrop(Repository repository) { + protected boolean shouldCreateDrop(Repository repository) { boolean createDrop = false; - Set Bcp47TagsForTranslation = Sets.newHashSet(getBcp47TagsForExportFromRepository(repository)); + Set bcp47TagsForTranslation = Sets.newHashSet(getBcp47TagsForExportFromRepository(repository)); RepositoryStatistic repoStat = repository.getRepositoryStatistic(); if (repoStat != null) { for (RepositoryLocaleStatistic repoLocaleStat : repoStat.getRepositoryLocaleStatistics()) { - if (Bcp47TagsForTranslation.contains(repoLocaleStat.getLocale().getBcp47Tag()) && repoLocaleStat.getForTranslationCount() > 0L) { + if (bcp47TagsForTranslation.contains(repoLocaleStat.getLocale().getBcp47Tag()) && repoLocaleStat.getForTranslationCount() > 0L) { createDrop = true; break; } diff --git a/cli/src/test/java/com/box/l10n/mojito/cli/CLITestBase.java b/cli/src/test/java/com/box/l10n/mojito/cli/CLITestBase.java index 39ff5db42d..9dfd77e873 100644 --- a/cli/src/test/java/com/box/l10n/mojito/cli/CLITestBase.java +++ b/cli/src/test/java/com/box/l10n/mojito/cli/CLITestBase.java @@ -1,6 +1,7 @@ package com.box.l10n.mojito.cli; import com.box.l10n.mojito.cli.command.L10nJCommander; +import com.box.l10n.mojito.cli.command.RepositoryStatusChecker; import com.box.l10n.mojito.entity.Locale; import com.box.l10n.mojito.entity.Repository; import com.box.l10n.mojito.entity.TMTextUnitVariant; @@ -87,7 +88,9 @@ public class CLITestBase extends IOTestBase { ResttemplateConfig resttemplateConfig; @Autowired - RepositoryClient repositoryClient; + protected RepositoryClient repositoryClient; + + RepositoryStatusChecker repositoryStatusChecker = new RepositoryStatusChecker(); @Autowired AssetRepository assetRepository; @@ -210,15 +213,7 @@ protected void waitForCondition(String failMessage, Supplier condition) protected void waitForRepositoryToHaveStringsForTranslations(Long repositoryId) throws InterruptedException { waitForCondition("wait for repository stats to show forTranslationCount > 0 before exporting a drop", () -> { com.box.l10n.mojito.rest.entity.Repository repository = repositoryClient.getRepositoryById(repositoryId); - RepositoryStatistic repositoryStat = repository.getRepositoryStatistic(); - boolean forTranslation = false; - for (RepositoryLocaleStatistic repositoryLocaleStat : repositoryStat.getRepositoryLocaleStatistics()) { - if (repositoryLocaleStat.getForTranslationCount() > 0L) { - forTranslation = true; - } - break; - } - return forTranslation; + return repositoryStatusChecker.hasStringsForTranslationsForExportableLocales(repository); }); } diff --git a/cli/src/test/java/com/box/l10n/mojito/cli/command/DropExportCommandTest.java b/cli/src/test/java/com/box/l10n/mojito/cli/command/DropExportCommandTest.java index 60ca7bcd04..ab051c3c89 100644 --- a/cli/src/test/java/com/box/l10n/mojito/cli/command/DropExportCommandTest.java +++ b/cli/src/test/java/com/box/l10n/mojito/cli/command/DropExportCommandTest.java @@ -2,13 +2,16 @@ import com.box.l10n.mojito.cli.CLITestBase; import com.box.l10n.mojito.entity.Repository; +import com.box.l10n.mojito.entity.RepositoryStatistic; import com.box.l10n.mojito.rest.client.AssetClient; import com.box.l10n.mojito.rest.client.DropClient; import com.box.l10n.mojito.rest.entity.Asset; import com.box.l10n.mojito.rest.entity.Drop; import com.box.l10n.mojito.rest.entity.Page; +import com.box.l10n.mojito.service.repository.RepositoryRepository; import com.box.l10n.mojito.service.tm.TMImportService; import static org.junit.Assert.*; +import com.google.common.collect.Sets; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -27,6 +30,9 @@ public class DropExportCommandTest extends CLITestBase { @Autowired DropClient dropClient; + @Autowired + RepositoryRepository repositoryRepository; + @Test public void export() throws Exception { @@ -58,7 +64,13 @@ public void exportFullyTranslated() throws Exception { importTranslations(asset.getId(), "source-xliff_", "fr-FR"); importTranslations(asset.getId(), "source-xliff_", "ja-JP"); - waitForRepositoryToHaveStringsForTranslations(repository.getId()); + waitForCondition("Must have text units that are fully translated", () -> { + RepositoryStatistic repositoryStatistic = repositoryRepository.findOne(repository.getId()).getRepositoryStatistic(); + return repositoryStatistic.getUsedTextUnitCount() > 0 + && repositoryStatistic.getRepositoryLocaleStatistics().stream() + .filter(rls -> Sets.newHashSet("fr-FR", "ja-JP").contains(rls.getLocale().getBcp47Tag())) + .allMatch(rls -> rls.getForTranslationCount() == 0); + }); Page findAllBefore = dropClient.getDrops(repository.getId(), null, null, null); diff --git a/cli/src/test/java/com/box/l10n/mojito/cli/command/RepositoryStatusChecker.java b/cli/src/test/java/com/box/l10n/mojito/cli/command/RepositoryStatusChecker.java new file mode 100644 index 0000000000..e2a9556dcf --- /dev/null +++ b/cli/src/test/java/com/box/l10n/mojito/cli/command/RepositoryStatusChecker.java @@ -0,0 +1,14 @@ +package com.box.l10n.mojito.cli.command; + +import com.box.l10n.mojito.rest.entity.Repository; + +/** + * + * @author garion + */ +public class RepositoryStatusChecker { + public boolean hasStringsForTranslationsForExportableLocales(Repository repository) { + DropExportCommand dropExportCommand = new DropExportCommand(); + return dropExportCommand.shouldCreateDrop(repository); + } +}