From 3584d14552dbc84d3ed419249eabcffc00537db7 Mon Sep 17 00:00:00 2001 From: Shivang Kumar <2002shiva.2002@gmail.com> Date: Fri, 30 May 2025 22:43:28 +0530 Subject: [PATCH 1/2] Pre Translation Report feature done with test coverage! --- .../client/translations/TranslationsApi.java | 17 ++++++++++ .../model/PreTranslationReportResponse.java | 31 +++++++++++++++++++ .../PreTranslationReportResponseObject.java | 9 ++++++ .../translations/TranslationsApiTest.java | 17 +++++++++- .../preTranslationReportResponse.json | 18 +++++++++++ 5 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java create mode 100644 src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java create mode 100644 src/test/resources/api/translations/preTranslationReportResponse.json diff --git a/src/main/java/com/crowdin/client/translations/TranslationsApi.java b/src/main/java/com/crowdin/client/translations/TranslationsApi.java index eb6451e4e..b4b3204d9 100644 --- a/src/main/java/com/crowdin/client/translations/TranslationsApi.java +++ b/src/main/java/com/crowdin/client/translations/TranslationsApi.java @@ -25,6 +25,8 @@ import com.crowdin.client.translations.model.UploadTranslationsStringsRequest; import com.crowdin.client.translations.model.UploadTranslationsStringsResponse; import com.crowdin.client.translations.model.UploadTranslationsStringsResponseObject; +import com.crowdin.client.translations.model.PreTranslationReportResponse; +import com.crowdin.client.translations.model.PreTranslationReportResponseObject; import java.util.Collections; import java.util.HashMap; @@ -288,4 +290,19 @@ public ResponseObject editPreTranslation(Long projectId, String ); return ResponseObject.of(preTranslationResponseObject.getData()); } + + /** + * Get Pre-Translation Report + * + * @param projectId project identifier + * @param preTranslationId Pre-translation identifier + */ + public ResponseObject getPreTranslationReport(Long projectId, String preTranslationId) throws HttpException , HttpBadRequestException{ + PreTranslationReportResponseObject response = this.httpClient.get( + this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report", + new HttpRequestConfig(), + PreTranslationReportResponseObject.class + ); + return ResponseObject.of(response.getData()); + } } diff --git a/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java new file mode 100644 index 000000000..5caf734f3 --- /dev/null +++ b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java @@ -0,0 +1,31 @@ +package com.crowdin.client.translations.model; + +import lombok.Data; +import java.util.List; +import java.util.Map; +@Data +public class PreTranslationReportResponse { + + private List languages; + private String preTranslateType; + + @Data + public static class Language { + private String id; + private List files; + private Map skipped; + private List skippedQaCheckCategories; + } + + @Data + public static class File { + private Long id; + private Statistics statistics; + } + + @Data + public static class Statistics { + private Integer phrases; + private Integer words; + } +} diff --git a/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java new file mode 100644 index 000000000..8e4de9124 --- /dev/null +++ b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponseObject.java @@ -0,0 +1,9 @@ +package com.crowdin.client.translations.model; + +import lombok.Data; +import com.crowdin.client.translations.model.PreTranslationReportResponse; + +@Data +public class PreTranslationReportResponseObject { + private PreTranslationReportResponse data; +} \ No newline at end of file diff --git a/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java b/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java index b38612837..9f09b9028 100644 --- a/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java +++ b/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java @@ -25,6 +25,8 @@ import com.crowdin.client.translations.model.UploadTranslationsResponse; import com.crowdin.client.translations.model.UploadTranslationsStringsRequest; import com.crowdin.client.translations.model.UploadTranslationsStringsResponse; +import com.crowdin.client.translations.model.PreTranslationReportResponse; + import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPatch; @@ -69,7 +71,8 @@ public List getMocks() { RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId, HttpDelete.METHOD_NAME), RequestMock.build(String.format("%s/projects/%d/translations/exports", this.url, projectId), HttpPost.METHOD_NAME, "api/translations/exportProjectTranslationRequest.json", "api/translations/exportProjectTranslationResponse.json"), RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpGet.METHOD_NAME, "api/translations/listPreTranslations.json"), - RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json") + RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json"), + RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report",HttpGet.METHOD_NAME,"api/translations/preTranslationReportResponse.json") ); } @@ -266,4 +269,16 @@ public void editPreTranslationTest() { assertEquals(language, preTranslationResponseObject.getData().getAttributes().getLanguageIds().get(0)); assertEquals(fileId, preTranslationResponseObject.getData().getAttributes().getFileIds().get(0)); } + + @Test + public void getPreTranslationReportTest() { + ResponseObject response = this.getTranslationsApi().getPreTranslationReport(projectId, preTranslationId); + PreTranslationReportResponse report = response.getData(); + assertNotNull(report); + assertEquals("ai", report.getPreTranslateType()); + PreTranslationReportResponse.Language lang = report.getLanguages().get(0); + assertEquals(language, lang.getId()); + PreTranslationReportResponse.File file = lang.getFiles().get(0); + assertEquals(fileId, file.getId()); + } } diff --git a/src/test/resources/api/translations/preTranslationReportResponse.json b/src/test/resources/api/translations/preTranslationReportResponse.json new file mode 100644 index 000000000..594ec5434 --- /dev/null +++ b/src/test/resources/api/translations/preTranslationReportResponse.json @@ -0,0 +1,18 @@ +{ + "data": { + "languages": [ + { + "id": "uk", + "files": [ + { + "id": "2", + "statistics": { "phrases": 6, "words": 13 } + } + ], + "skipped": { "ai_error": 6 }, + "skippedQaCheckCategories": ["spellcheck"] + } + ], + "preTranslateType": "ai" + } +} From 6e769d28491a491dfca1aaf63fcb366272369167 Mon Sep 17 00:00:00 2001 From: Shivang Kumar <2002shiva.2002@gmail.com> Date: Sat, 31 May 2025 20:29:10 +0530 Subject: [PATCH 2/2] Incorporated suggested changes! --- .../client/translations/TranslationsApi.java | 15 ++++++++++----- .../model/PreTranslationReportResponse.java | 11 +++++++---- .../client/translations/TranslationsApiTest.java | 6 +++--- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/crowdin/client/translations/TranslationsApi.java b/src/main/java/com/crowdin/client/translations/TranslationsApi.java index b4b3204d9..2a1e6c6ae 100644 --- a/src/main/java/com/crowdin/client/translations/TranslationsApi.java +++ b/src/main/java/com/crowdin/client/translations/TranslationsApi.java @@ -292,12 +292,17 @@ public ResponseObject editPreTranslation(Long projectId, String } /** - * Get Pre-Translation Report - * - * @param projectId project identifier - * @param preTranslationId Pre-translation identifier + * Pre-Translation Report + * + * @param projectId project identifier + * @param preTranslationId pre-translation identifier + * @return pre-translation report data + * @see */ - public ResponseObject getPreTranslationReport(Long projectId, String preTranslationId) throws HttpException , HttpBadRequestException{ + public ResponseObject getPreTranslationReport(Long projectId, String preTranslationId) throws HttpException, HttpBadRequestException { PreTranslationReportResponseObject response = this.httpClient.get( this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report", new HttpRequestConfig(), diff --git a/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java index 5caf734f3..47c9fe4f5 100644 --- a/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java +++ b/src/main/java/com/crowdin/client/translations/model/PreTranslationReportResponse.java @@ -3,18 +3,21 @@ import lombok.Data; import java.util.List; import java.util.Map; +import com.crowdin.client.translationstatus.model.Category; + + @Data public class PreTranslationReportResponse { - private List languages; - private String preTranslateType; + private List languages; + private Method preTranslateType; @Data - public static class Language { + public static class TargetLanguage { private String id; private List files; private Map skipped; - private List skippedQaCheckCategories; + private List skippedQaCheckCategories; } @Data diff --git a/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java b/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java index 9f09b9028..722f847b2 100644 --- a/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java +++ b/src/test/java/com/crowdin/client/translations/TranslationsApiTest.java @@ -72,7 +72,7 @@ public List getMocks() { RequestMock.build(String.format("%s/projects/%d/translations/exports", this.url, projectId), HttpPost.METHOD_NAME, "api/translations/exportProjectTranslationRequest.json", "api/translations/exportProjectTranslationResponse.json"), RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpGet.METHOD_NAME, "api/translations/listPreTranslations.json"), RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json"), - RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report",HttpGet.METHOD_NAME,"api/translations/preTranslationReportResponse.json") + RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report", HttpGet.METHOD_NAME, "api/translations/preTranslationReportResponse.json") ); } @@ -275,8 +275,8 @@ public void getPreTranslationReportTest() { ResponseObject response = this.getTranslationsApi().getPreTranslationReport(projectId, preTranslationId); PreTranslationReportResponse report = response.getData(); assertNotNull(report); - assertEquals("ai", report.getPreTranslateType()); - PreTranslationReportResponse.Language lang = report.getLanguages().get(0); + assertEquals(Method.AI, report.getPreTranslateType()); + PreTranslationReportResponse.TargetLanguage lang = report.getLanguages().get(0); assertEquals(language, lang.getId()); PreTranslationReportResponse.File file = lang.getFiles().get(0); assertEquals(fileId, file.getId());