Skip to content

Commit 3584d14

Browse files
committed
Pre Translation Report feature done with test coverage!
1 parent 8d54d00 commit 3584d14

5 files changed

Lines changed: 91 additions & 1 deletion

File tree

src/main/java/com/crowdin/client/translations/TranslationsApi.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
2626
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
2727
import com.crowdin.client.translations.model.UploadTranslationsStringsResponseObject;
28+
import com.crowdin.client.translations.model.PreTranslationReportResponse;
29+
import com.crowdin.client.translations.model.PreTranslationReportResponseObject;
2830

2931
import java.util.Collections;
3032
import java.util.HashMap;
@@ -288,4 +290,19 @@ public ResponseObject<PreTranslation> editPreTranslation(Long projectId, String
288290
);
289291
return ResponseObject.of(preTranslationResponseObject.getData());
290292
}
293+
294+
/**
295+
* Get Pre-Translation Report
296+
*
297+
* @param projectId project identifier
298+
* @param preTranslationId Pre-translation identifier
299+
*/
300+
public ResponseObject<PreTranslationReportResponse> getPreTranslationReport(Long projectId, String preTranslationId) throws HttpException , HttpBadRequestException{
301+
PreTranslationReportResponseObject response = this.httpClient.get(
302+
this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report",
303+
new HttpRequestConfig(),
304+
PreTranslationReportResponseObject.class
305+
);
306+
return ResponseObject.of(response.getData());
307+
}
291308
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
import java.util.List;
5+
import java.util.Map;
6+
@Data
7+
public class PreTranslationReportResponse {
8+
9+
private List<Language> languages;
10+
private String preTranslateType;
11+
12+
@Data
13+
public static class Language {
14+
private String id;
15+
private List<File> files;
16+
private Map<String, Integer> skipped;
17+
private List<String> skippedQaCheckCategories;
18+
}
19+
20+
@Data
21+
public static class File {
22+
private Long id;
23+
private Statistics statistics;
24+
}
25+
26+
@Data
27+
public static class Statistics {
28+
private Integer phrases;
29+
private Integer words;
30+
}
31+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.crowdin.client.translations.model;
2+
3+
import lombok.Data;
4+
import com.crowdin.client.translations.model.PreTranslationReportResponse;
5+
6+
@Data
7+
public class PreTranslationReportResponseObject {
8+
private PreTranslationReportResponse data;
9+
}

src/test/java/com/crowdin/client/translations/TranslationsApiTest.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import com.crowdin.client.translations.model.UploadTranslationsResponse;
2626
import com.crowdin.client.translations.model.UploadTranslationsStringsRequest;
2727
import com.crowdin.client.translations.model.UploadTranslationsStringsResponse;
28+
import com.crowdin.client.translations.model.PreTranslationReportResponse;
29+
2830
import org.apache.http.client.methods.HttpDelete;
2931
import org.apache.http.client.methods.HttpGet;
3032
import org.apache.http.client.methods.HttpPatch;
@@ -69,7 +71,8 @@ public List<RequestMock> getMocks() {
6971
RequestMock.build(this.url + "/projects/" + projectId + "/translations/builds/" + buildId, HttpDelete.METHOD_NAME),
7072
RequestMock.build(String.format("%s/projects/%d/translations/exports", this.url, projectId), HttpPost.METHOD_NAME, "api/translations/exportProjectTranslationRequest.json", "api/translations/exportProjectTranslationResponse.json"),
7173
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations", HttpGet.METHOD_NAME, "api/translations/listPreTranslations.json"),
72-
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json")
74+
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId, HttpPatch.METHOD_NAME, "api/translations/editPreTranslationRequest.json", "api/translations/editPreTranslationResponse.json"),
75+
RequestMock.build(this.url + "/projects/" + projectId + "/pre-translations/" + preTranslationId + "/report",HttpGet.METHOD_NAME,"api/translations/preTranslationReportResponse.json")
7376
);
7477
}
7578

@@ -266,4 +269,16 @@ public void editPreTranslationTest() {
266269
assertEquals(language, preTranslationResponseObject.getData().getAttributes().getLanguageIds().get(0));
267270
assertEquals(fileId, preTranslationResponseObject.getData().getAttributes().getFileIds().get(0));
268271
}
272+
273+
@Test
274+
public void getPreTranslationReportTest() {
275+
ResponseObject<PreTranslationReportResponse> response = this.getTranslationsApi().getPreTranslationReport(projectId, preTranslationId);
276+
PreTranslationReportResponse report = response.getData();
277+
assertNotNull(report);
278+
assertEquals("ai", report.getPreTranslateType());
279+
PreTranslationReportResponse.Language lang = report.getLanguages().get(0);
280+
assertEquals(language, lang.getId());
281+
PreTranslationReportResponse.File file = lang.getFiles().get(0);
282+
assertEquals(fileId, file.getId());
283+
}
269284
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"data": {
3+
"languages": [
4+
{
5+
"id": "uk",
6+
"files": [
7+
{
8+
"id": "2",
9+
"statistics": { "phrases": 6, "words": 13 }
10+
}
11+
],
12+
"skipped": { "ai_error": 6 },
13+
"skippedQaCheckCategories": ["spellcheck"]
14+
}
15+
],
16+
"preTranslateType": "ai"
17+
}
18+
}

0 commit comments

Comments
 (0)