diff --git a/src/main/java/com/crowdin/client/stringtranslations/StringTranslationsApi.java b/src/main/java/com/crowdin/client/stringtranslations/StringTranslationsApi.java index 98ae0bddc..d387a7d63 100644 --- a/src/main/java/com/crowdin/client/stringtranslations/StringTranslationsApi.java +++ b/src/main/java/com/crowdin/client/stringtranslations/StringTranslationsApi.java @@ -106,6 +106,21 @@ public ResponseObject getApproval(Long projectId, Long approvalId) thr return ResponseObject.of(storageResponseObject.getData()); } + /** + * @param projectId project identifier + * @param stringId string identifier + * @see + */ + public void removeStringApprovals(Long projectId, Long stringId) throws HttpException, HttpBadRequestException { + Map> queryParams = HttpRequestConfig.buildUrlParams( + "stringId", Optional.of(stringId) + ); + this.httpClient.delete(this.url + "/projects/" + projectId + "/approvals", new HttpRequestConfig(queryParams), Void.class); + } + /** * @param projectId project identifier * @param approvalId approval identifier @@ -228,10 +243,10 @@ public ResponseObject addTranslation(Long projectId, AddStrin */ public void deleteStringTranslations(Long projectId, Long stringId, String languageId) throws HttpException, HttpBadRequestException { Map> queryParams = HttpRequestConfig.buildUrlParams( - "stringId", Optional.ofNullable(stringId), + "stringId", Optional.of(stringId), "languageId", Optional.ofNullable(languageId) ); - this.httpClient.get(this.url + "/projects/" + projectId + "/translations", new HttpRequestConfig(queryParams), Void.class); + this.httpClient.delete(this.url + "/projects/" + projectId + "/translations", new HttpRequestConfig(queryParams), Void.class); } /** diff --git a/src/test/java/com/crowdin/client/stringtranslations/StringTranslationsApiTest.java b/src/test/java/com/crowdin/client/stringtranslations/StringTranslationsApiTest.java index 386d16508..fdb409777 100644 --- a/src/test/java/com/crowdin/client/stringtranslations/StringTranslationsApiTest.java +++ b/src/test/java/com/crowdin/client/stringtranslations/StringTranslationsApiTest.java @@ -13,6 +13,7 @@ import java.util.Arrays; import java.util.List; +import java.util.Collections; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -35,13 +36,14 @@ public List getMocks() { RequestMock.build(this.url + "/projects/" + projectId + "/approvals", HttpGet.METHOD_NAME, "api/stringtranslations/listApprovals.json"), RequestMock.build(this.url + "/projects/" + projectId + "/approvals", HttpPost.METHOD_NAME, "api/stringtranslations/addApprovalRequest.json", "api/stringtranslations/approval.json"), RequestMock.build(this.url + "/projects/" + projectId + "/approvals/" + approvalId, HttpGet.METHOD_NAME, "api/stringtranslations/approval.json"), + RequestMock.build(this.url + "/projects/" + projectId + "/approvals", HttpDelete.METHOD_NAME, null, Collections.singletonMap("stringId", stringId)), RequestMock.build(this.url + "/projects/" + projectId + "/approvals/" + approvalId, HttpDelete.METHOD_NAME), RequestMock.build(String.format("%s/projects/%d/languages/%s/translations", this.url, projectId, language), HttpGet.METHOD_NAME, "api/stringtranslations/listLanguageTranslations_plain.json"), RequestMock.build(String.format("%s/projects/%d/languages/%s/translations", this.url, secondProjectId, language), HttpGet.METHOD_NAME, "api/stringtranslations/listLanguageTranslations_plural.json"), RequestMock.build(String.format("%s/projects/%d/languages/%s/translations", this.url, thirdProjectId, language), HttpGet.METHOD_NAME, "api/stringtranslations/listLanguageTranslations_ICU.json"), RequestMock.build(this.url + "/projects/" + projectId + "/translations", HttpGet.METHOD_NAME, "api/stringtranslations/listStringTranslations..json"), RequestMock.build(this.url + "/projects/" + projectId + "/translations", HttpPost.METHOD_NAME, "api/stringtranslations/addTranslationRequest.json", "api/stringtranslations/translation.json"), - RequestMock.build(this.url + "/projects/" + projectId + "/translations", HttpDelete.METHOD_NAME), + RequestMock.build(this.url + "/projects/" + projectId + "/translations", HttpDelete.METHOD_NAME, null, Collections.singletonMap("stringId", stringId)), RequestMock.build(this.url + "/projects/" + projectId + "/translations/" + translationId, HttpGet.METHOD_NAME, "api/stringtranslations/translation.json"), RequestMock.build(this.url + "/projects/" + projectId + "/translations/" + translationId, HttpDelete.METHOD_NAME), RequestMock.build(this.url + "/projects/" + projectId + "/translations/" + translationId, HttpPut.METHOD_NAME, "api/stringtranslations/translation.json"), @@ -86,6 +88,11 @@ public void getApprovalTest() { assertEquals(approvalResponseObject.getData().getId(), approvalId); } + @Test + public void removeStringApprovalsTest() { + this.getStringTranslationsApi().removeStringApprovals(projectId, stringId); + } + @Test public void removeApprovalTest() { this.getStringTranslationsApi().removeApproval(projectId, approvalId); @@ -134,7 +141,7 @@ public void addTranslationTest() { @Test public void deleteTranslationsTest() { - this.getStringTranslationsApi().deleteStringTranslations(projectId, null, null); + this.getStringTranslationsApi().deleteStringTranslations(projectId, stringId, null); } @Test