From 1ae3de3232ecaf7ec4121b9c390e99e0957ef39f Mon Sep 17 00:00:00 2001 From: Jan Cizmar Date: Fri, 30 Aug 2024 14:53:34 +0200 Subject: [PATCH] fix: Auto translation triggering --- .../dataImport/SingleStepImportController.kt | 3 ++ .../SingleStepImportControllerTest.kt | 37 ++++++++++++++++--- .../AutoTranslationEventHandler.kt | 20 +++++----- 3 files changed, 45 insertions(+), 15 deletions(-) diff --git a/backend/api/src/main/kotlin/io/tolgee/api/v2/controllers/dataImport/SingleStepImportController.kt b/backend/api/src/main/kotlin/io/tolgee/api/v2/controllers/dataImport/SingleStepImportController.kt index dd45426ecc..e7c37781e6 100644 --- a/backend/api/src/main/kotlin/io/tolgee/api/v2/controllers/dataImport/SingleStepImportController.kt +++ b/backend/api/src/main/kotlin/io/tolgee/api/v2/controllers/dataImport/SingleStepImportController.kt @@ -8,6 +8,8 @@ import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.media.Content import io.swagger.v3.oas.annotations.media.Encoding import io.swagger.v3.oas.annotations.parameters.RequestBody +import io.tolgee.activity.RequestActivity +import io.tolgee.activity.data.ActivityType import io.tolgee.dtos.dataImport.ImportFileDto import io.tolgee.dtos.request.SingleStepImportRequest import io.tolgee.model.enums.Scope @@ -61,6 +63,7 @@ class SingleStepImportController( ) @AllowApiAccess @OpenApiOrderExtension(1) + @RequestActivity(ActivityType.IMPORT) fun doImport( @RequestPart("files") files: Array, diff --git a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt index d22a1804fd..199a56d6e7 100644 --- a/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt +++ b/backend/app/src/test/kotlin/io/tolgee/api/v2/controllers/v2ImportController/SingleStepImportControllerTest.kt @@ -1,12 +1,14 @@ package io.tolgee.api.v2.controllers.v2ImportController import io.tolgee.ProjectAuthControllerTest +import io.tolgee.batch.data.BatchJobType import io.tolgee.constants.Message import io.tolgee.development.testDataBuilder.data.SingleStepImportTestData import io.tolgee.fixtures.andHasErrorMessage import io.tolgee.fixtures.andIsBadRequest import io.tolgee.fixtures.andIsForbidden import io.tolgee.fixtures.andIsOk +import io.tolgee.model.batch.BatchJob import io.tolgee.model.enums.Scope import io.tolgee.testing.annotations.ProjectJWTAuthTestMethod import io.tolgee.testing.assert @@ -216,12 +218,21 @@ class SingleStepImportControllerTest : ProjectAuthControllerTest("/v2/projects/" @ProjectJWTAuthTestMethod fun `imports xliff file`() { saveAndPrepare() - val fileName = "en.xliff" - performImport( - projectId = testData.project.id, - listOf(Pair(fileName, appleXliffFile)), - getFileMappings(fileName, format = "APPLE_XLIFF", languageTag = "en"), - ).andIsOk + importXliffFile() + } + + @Test + @ProjectJWTAuthTestMethod + fun `triggers auto translation`() { + testData.projectBuilder.addAutoTranslationConfig { + enableForImport = true + usingPrimaryMtService = true + } + + saveAndPrepare() + importXliffFile() + + assertAutoTranslationTriggered() } @Test @@ -280,6 +291,20 @@ class SingleStepImportControllerTest : ProjectAuthControllerTest("/v2/projects/" } } + private fun importXliffFile() { + val fileName = "en.xliff" + performImport( + projectId = testData.project.id, + listOf(Pair(fileName, appleXliffFile)), + getFileMappings(fileName, format = "APPLE_XLIFF", languageTag = "en"), + ).andIsOk + } + + private fun assertAutoTranslationTriggered() { + val job = entityManager.createQuery("from BatchJob bj", BatchJob::class.java).singleResult + job.type.assert.isEqualTo(BatchJobType.AUTO_TRANSLATE) + } + private fun assertXliffDataImported() { getTestKeyTranslations().find { it.language.tag == "de" }!!.text.assert.isEqualTo("Test cs") getTestKeyTranslations().find { it.language.tag == "en" }!!.text.assert.isEqualTo("Test en") diff --git a/backend/data/src/main/kotlin/io/tolgee/component/autoTranslation/AutoTranslationEventHandler.kt b/backend/data/src/main/kotlin/io/tolgee/component/autoTranslation/AutoTranslationEventHandler.kt index b94899a109..fe20e4f684 100644 --- a/backend/data/src/main/kotlin/io/tolgee/component/autoTranslation/AutoTranslationEventHandler.kt +++ b/backend/data/src/main/kotlin/io/tolgee/component/autoTranslation/AutoTranslationEventHandler.kt @@ -38,18 +38,20 @@ class AutoTranslationEventHandler( return } - if (event.activityRevision.modifiedEntities.any { it.entityClass == Translation::class.simpleName }) { - autoTranslationService.autoTranslateViaBatchJob( - projectId = projectId, - keyIds = keyIds, - isBatch = true, - baseLanguageId = baseLanguageId ?: return, - isHiddenJob = event.isLowVolumeActivity(), - ) - } + autoTranslationService.autoTranslateViaBatchJob( + projectId = projectId, + keyIds = keyIds, + isBatch = true, + baseLanguageId = baseLanguageId ?: return, + isHiddenJob = event.isLowVolumeActivity(), + ) } private fun shouldRunTheOperation(): Boolean { + if (event.activityRevision.modifiedEntities.none { it.entityClass == Translation::class.simpleName }) { + return false + } + val configs = autoTranslationService.getConfigs( entityManager.getReference(Project::class.java, projectId),