diff --git a/src/main/java/com/crowdin/client/sourcestrings/SourceStringsApi.java b/src/main/java/com/crowdin/client/sourcestrings/SourceStringsApi.java index 7376f0d94..a4347ce9c 100644 --- a/src/main/java/com/crowdin/client/sourcestrings/SourceStringsApi.java +++ b/src/main/java/com/crowdin/client/sourcestrings/SourceStringsApi.java @@ -9,14 +9,7 @@ import com.crowdin.client.core.model.PatchRequest; import com.crowdin.client.core.model.ResponseList; import com.crowdin.client.core.model.ResponseObject; -import com.crowdin.client.sourcestrings.model.AddSourceStringRequest; -import com.crowdin.client.sourcestrings.model.AddSourceStringStringsBasedRequest; -import com.crowdin.client.sourcestrings.model.SourceString; -import com.crowdin.client.sourcestrings.model.SourceStringResponseList; -import com.crowdin.client.sourcestrings.model.SourceStringResponseObject; -import com.crowdin.client.sourcestrings.model.UploadStringsProgress; -import com.crowdin.client.sourcestrings.model.UploadStringsProgressResponseObject; -import com.crowdin.client.sourcestrings.model.UploadStringsRequest; +import com.crowdin.client.sourcestrings.model.*; import java.util.List; import java.util.Map; @@ -92,11 +85,21 @@ public ResponseObject addSourceString(Long projectId, AddSourceStr return ResponseObject.of(sourceStringResponseObject.getData()); } + public ResponseObject addSourcePluralString(Long projectId, AddSourcePluralStringRequest request) throws HttpException, HttpBadRequestException { + SourceStringResponseObject sourceStringResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/strings", request, new HttpRequestConfig(), SourceStringResponseObject.class); + return ResponseObject.of(sourceStringResponseObject.getData()); + } + public ResponseObject addSourceStringStringsBased(Long projectId, AddSourceStringStringsBasedRequest request) throws HttpException, HttpBadRequestException { SourceStringResponseObject sourceStringResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/strings", request, new HttpRequestConfig(), SourceStringResponseObject.class); return ResponseObject.of(sourceStringResponseObject.getData()); } + public ResponseObject addSourcePluralStringStringsBased(Long projectId, AddSourcePluralStringStringsBasedRequest request) throws HttpException, HttpBadRequestException { + SourceStringResponseObject sourceStringResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/strings", request, new HttpRequestConfig(), SourceStringResponseObject.class); + return ResponseObject.of(sourceStringResponseObject.getData()); + } + /** * @param projectId project identifier * @param stringId string identifier diff --git a/src/main/java/com/crowdin/client/sourcestrings/model/AddSourcePluralStringRequest.java b/src/main/java/com/crowdin/client/sourcestrings/model/AddSourcePluralStringRequest.java new file mode 100644 index 000000000..b78a0732b --- /dev/null +++ b/src/main/java/com/crowdin/client/sourcestrings/model/AddSourcePluralStringRequest.java @@ -0,0 +1,17 @@ +package com.crowdin.client.sourcestrings.model; + +import lombok.Data; + +import java.util.List; + +@Data +public class AddSourcePluralStringRequest { + + private PluralText text; + private String identifier; + private Long fileId; + private String context; + private Boolean isHidden; + private Integer maxLength; + private List labelIds; +} diff --git a/src/main/java/com/crowdin/client/sourcestrings/model/AddSourcePluralStringStringsBasedRequest.java b/src/main/java/com/crowdin/client/sourcestrings/model/AddSourcePluralStringStringsBasedRequest.java new file mode 100644 index 000000000..a2eccebf6 --- /dev/null +++ b/src/main/java/com/crowdin/client/sourcestrings/model/AddSourcePluralStringStringsBasedRequest.java @@ -0,0 +1,17 @@ +package com.crowdin.client.sourcestrings.model; + +import lombok.Data; + +import java.util.List; + +@Data +public class AddSourcePluralStringStringsBasedRequest { + + private PluralText text; + private String identifier; + private Long branchId; + private String context; + private Boolean isHidden; + private Integer maxLength; + private List labelIds; +} diff --git a/src/main/java/com/crowdin/client/sourcestrings/model/PluralText.java b/src/main/java/com/crowdin/client/sourcestrings/model/PluralText.java new file mode 100644 index 000000000..cbdd70233 --- /dev/null +++ b/src/main/java/com/crowdin/client/sourcestrings/model/PluralText.java @@ -0,0 +1,14 @@ +package com.crowdin.client.sourcestrings.model; + +import lombok.Data; + +@Data +public class PluralText { + + private String zero; + private String one; + private String two; + private String few; + private String many; + private String other; +} diff --git a/src/test/java/com/crowdin/client/sourcestrings/SourceStringsApiTest.java b/src/test/java/com/crowdin/client/sourcestrings/SourceStringsApiTest.java index c70bac663..a4407978d 100644 --- a/src/test/java/com/crowdin/client/sourcestrings/SourceStringsApiTest.java +++ b/src/test/java/com/crowdin/client/sourcestrings/SourceStringsApiTest.java @@ -6,21 +6,14 @@ import com.crowdin.client.core.model.ResponseObject; import com.crowdin.client.framework.RequestMock; import com.crowdin.client.framework.TestClient; -import com.crowdin.client.sourcestrings.model.AddSourceStringRequest; -import com.crowdin.client.sourcestrings.model.AddSourceStringStringsBasedRequest; -import com.crowdin.client.sourcestrings.model.SourceString; -import com.crowdin.client.sourcestrings.model.SourceStringForm; -import com.crowdin.client.sourcestrings.model.UploadStringsProgress; -import com.crowdin.client.sourcestrings.model.UploadStringsRequest; +import com.crowdin.client.sourcestrings.model.*; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPatch; import org.apache.http.client.methods.HttpPost; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import static java.util.Collections.singletonList; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -46,7 +39,9 @@ public List getMocks() { RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpGet.METHOD_NAME, "api/strings/listStrings.json"), RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpGet.METHOD_NAME, "api/strings/listStrings.json"), RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addStringRequest.json", "api/strings/string.json"), + RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addPluralStringRequest.json", "api/strings/pluralString.json"), RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addStringStringsBasedRequest.json", "api/strings/string.json"), + RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addStringPluralStringsBasedRequest.json", "api/strings/pluralString.json"), RequestMock.build(this.url + "/projects/" + projectId + "/strings/" + id, HttpGet.METHOD_NAME, "api/strings/string.json"), RequestMock.build(this.url + "/projects/" + projectId + "/strings/" + id, HttpDelete.METHOD_NAME), RequestMock.build(this.url + "/projects/" + projectId + "/strings/" + id, HttpPatch.METHOD_NAME, "api/strings/editString.json", "api/strings/string.json"), @@ -101,6 +96,28 @@ public void addStringTest() { assertEquals(sourceStringResponseObject.getData().getText(), text); } + @Test + public void addPluralStringTest() { + AddSourcePluralStringRequest request = new AddSourcePluralStringRequest(); + PluralText text = new PluralText(); + text.setOne("string"); + text.setOther("strings"); + request.setText(text); + request.setIdentifier("6a1821e6499ebae94de4b880fd93b985"); + request.setFileId(id); + request.setContext("shown on main page"); + request.setIsHidden(false); + request.setMaxLength(35); + request.setLabelIds(Arrays.asList(1L)); + ResponseObject sourceStringResponseObject = this.getSourceStringsApi().addSourcePluralString(projectId, request); + Map expected = new HashMap() {{ + put("one", "string"); + put("other", "strings"); + }}; + assertEquals(sourceStringResponseObject.getData().getId(), id); + assertEquals(sourceStringResponseObject.getData().getText(), expected); + } + @Test public void addStringStringsBasedTest() { AddSourceStringStringsBasedRequest request = new AddSourceStringStringsBasedRequest(); @@ -116,6 +133,28 @@ public void addStringStringsBasedTest() { assertEquals(sourceStringResponseObject.getData().getText(), text); } + @Test + public void addPluralStringStringsBasedTest() { + AddSourcePluralStringStringsBasedRequest request = new AddSourcePluralStringStringsBasedRequest(); + PluralText text = new PluralText(); + text.setOne("string"); + text.setOther("strings"); + request.setText(text); + request.setIdentifier("6a1821e6499ebae94de4b880fd93b985"); + request.setBranchId(branchId); + request.setContext("shown on main page"); + request.setIsHidden(false); + request.setMaxLength(35); + request.setLabelIds(Arrays.asList(1L)); + ResponseObject sourceStringResponseObject = this.getSourceStringsApi().addSourcePluralStringStringsBased(projectId, request); + Map expected = new HashMap() {{ + put("one", "string"); + put("other", "strings"); + }}; + assertEquals(sourceStringResponseObject.getData().getId(), id); + assertEquals(sourceStringResponseObject.getData().getText(), expected); + } + @Test public void getStringTest() { ResponseObject sourceStringResponseObject = this.getSourceStringsApi().getSourceString(projectId, id); diff --git a/src/test/resources/api/strings/addPluralStringRequest.json b/src/test/resources/api/strings/addPluralStringRequest.json new file mode 100644 index 000000000..aeddc28b4 --- /dev/null +++ b/src/test/resources/api/strings/addPluralStringRequest.json @@ -0,0 +1,14 @@ +{ + "text": { + "one": "string", + "other": "strings" + }, + "identifier": "6a1821e6499ebae94de4b880fd93b985", + "fileId": 2814, + "context": "shown on main page", + "isHidden": false, + "maxLength": 35, + "labelIds": [ + 1 + ] +} diff --git a/src/test/resources/api/strings/addStringPluralStringsBasedRequest.json b/src/test/resources/api/strings/addStringPluralStringsBasedRequest.json new file mode 100644 index 000000000..ad6114ce7 --- /dev/null +++ b/src/test/resources/api/strings/addStringPluralStringsBasedRequest.json @@ -0,0 +1,14 @@ +{ + "text": { + "one": "string", + "other": "strings" + }, + "identifier": "6a1821e6499ebae94de4b880fd93b985", + "branchId": 667, + "context": "shown on main page", + "isHidden": false, + "maxLength": 35, + "labelIds": [ + 1 + ] +} diff --git a/src/test/resources/api/strings/pluralString.json b/src/test/resources/api/strings/pluralString.json new file mode 100644 index 000000000..5ab3789d6 --- /dev/null +++ b/src/test/resources/api/strings/pluralString.json @@ -0,0 +1,25 @@ +{ + "data": { + "id": 2814, + "projectId": 2, + "fileId": 48, + "branchId": 667, + "identifier": "6a1821e6499ebae94de4b880fd93b985", + "text": { + "one": "string", + "other": "strings" + }, + "type": "text", + "context": "shown on main page", + "maxLength": 35, + "isHidden": false, + "revision": 1, + "hasPlurals": false, + "isIcu": false, + "labelIds": [ + 3 + ], + "createdAt": "2019-09-20T12:43:57+00:00", + "updatedAt": "2019-09-20T13:24:01+00:00" + } +}