Skip to content

Commit 4625593

Browse files
authored
feat: plural strings (#227)
1 parent 6539460 commit 4625593

8 files changed

Lines changed: 160 additions & 17 deletions

File tree

src/main/java/com/crowdin/client/sourcestrings/SourceStringsApi.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,7 @@
99
import com.crowdin.client.core.model.PatchRequest;
1010
import com.crowdin.client.core.model.ResponseList;
1111
import com.crowdin.client.core.model.ResponseObject;
12-
import com.crowdin.client.sourcestrings.model.AddSourceStringRequest;
13-
import com.crowdin.client.sourcestrings.model.AddSourceStringStringsBasedRequest;
14-
import com.crowdin.client.sourcestrings.model.SourceString;
15-
import com.crowdin.client.sourcestrings.model.SourceStringResponseList;
16-
import com.crowdin.client.sourcestrings.model.SourceStringResponseObject;
17-
import com.crowdin.client.sourcestrings.model.UploadStringsProgress;
18-
import com.crowdin.client.sourcestrings.model.UploadStringsProgressResponseObject;
19-
import com.crowdin.client.sourcestrings.model.UploadStringsRequest;
12+
import com.crowdin.client.sourcestrings.model.*;
2013

2114
import java.util.List;
2215
import java.util.Map;
@@ -92,11 +85,21 @@ public ResponseObject<SourceString> addSourceString(Long projectId, AddSourceStr
9285
return ResponseObject.of(sourceStringResponseObject.getData());
9386
}
9487

88+
public ResponseObject<SourceString> addSourcePluralString(Long projectId, AddSourcePluralStringRequest request) throws HttpException, HttpBadRequestException {
89+
SourceStringResponseObject sourceStringResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/strings", request, new HttpRequestConfig(), SourceStringResponseObject.class);
90+
return ResponseObject.of(sourceStringResponseObject.getData());
91+
}
92+
9593
public ResponseObject<SourceString> addSourceStringStringsBased(Long projectId, AddSourceStringStringsBasedRequest request) throws HttpException, HttpBadRequestException {
9694
SourceStringResponseObject sourceStringResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/strings", request, new HttpRequestConfig(), SourceStringResponseObject.class);
9795
return ResponseObject.of(sourceStringResponseObject.getData());
9896
}
9997

98+
public ResponseObject<SourceString> addSourcePluralStringStringsBased(Long projectId, AddSourcePluralStringStringsBasedRequest request) throws HttpException, HttpBadRequestException {
99+
SourceStringResponseObject sourceStringResponseObject = this.httpClient.post(this.url + "/projects/" + projectId + "/strings", request, new HttpRequestConfig(), SourceStringResponseObject.class);
100+
return ResponseObject.of(sourceStringResponseObject.getData());
101+
}
102+
100103
/**
101104
* @param projectId project identifier
102105
* @param stringId string identifier
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.crowdin.client.sourcestrings.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.List;
6+
7+
@Data
8+
public class AddSourcePluralStringRequest {
9+
10+
private PluralText text;
11+
private String identifier;
12+
private Long fileId;
13+
private String context;
14+
private Boolean isHidden;
15+
private Integer maxLength;
16+
private List<Long> labelIds;
17+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.crowdin.client.sourcestrings.model;
2+
3+
import lombok.Data;
4+
5+
import java.util.List;
6+
7+
@Data
8+
public class AddSourcePluralStringStringsBasedRequest {
9+
10+
private PluralText text;
11+
private String identifier;
12+
private Long branchId;
13+
private String context;
14+
private Boolean isHidden;
15+
private Integer maxLength;
16+
private List<Long> labelIds;
17+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.crowdin.client.sourcestrings.model;
2+
3+
import lombok.Data;
4+
5+
@Data
6+
public class PluralText {
7+
8+
private String zero;
9+
private String one;
10+
private String two;
11+
private String few;
12+
private String many;
13+
private String other;
14+
}

src/test/java/com/crowdin/client/sourcestrings/SourceStringsApiTest.java

Lines changed: 48 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,14 @@
66
import com.crowdin.client.core.model.ResponseObject;
77
import com.crowdin.client.framework.RequestMock;
88
import com.crowdin.client.framework.TestClient;
9-
import com.crowdin.client.sourcestrings.model.AddSourceStringRequest;
10-
import com.crowdin.client.sourcestrings.model.AddSourceStringStringsBasedRequest;
11-
import com.crowdin.client.sourcestrings.model.SourceString;
12-
import com.crowdin.client.sourcestrings.model.SourceStringForm;
13-
import com.crowdin.client.sourcestrings.model.UploadStringsProgress;
14-
import com.crowdin.client.sourcestrings.model.UploadStringsRequest;
9+
import com.crowdin.client.sourcestrings.model.*;
1510
import org.apache.http.client.methods.HttpDelete;
1611
import org.apache.http.client.methods.HttpGet;
1712
import org.apache.http.client.methods.HttpPatch;
1813
import org.apache.http.client.methods.HttpPost;
1914
import org.junit.jupiter.api.Test;
2015

21-
import java.util.ArrayList;
22-
import java.util.Arrays;
23-
import java.util.List;
16+
import java.util.*;
2417

2518
import static java.util.Collections.singletonList;
2619
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -46,7 +39,9 @@ public List<RequestMock> getMocks() {
4639
RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpGet.METHOD_NAME, "api/strings/listStrings.json"),
4740
RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpGet.METHOD_NAME, "api/strings/listStrings.json"),
4841
RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addStringRequest.json", "api/strings/string.json"),
42+
RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addPluralStringRequest.json", "api/strings/pluralString.json"),
4943
RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addStringStringsBasedRequest.json", "api/strings/string.json"),
44+
RequestMock.build(this.url + "/projects/" + projectId + "/strings", HttpPost.METHOD_NAME, "api/strings/addStringPluralStringsBasedRequest.json", "api/strings/pluralString.json"),
5045
RequestMock.build(this.url + "/projects/" + projectId + "/strings/" + id, HttpGet.METHOD_NAME, "api/strings/string.json"),
5146
RequestMock.build(this.url + "/projects/" + projectId + "/strings/" + id, HttpDelete.METHOD_NAME),
5247
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() {
10196
assertEquals(sourceStringResponseObject.getData().getText(), text);
10297
}
10398

99+
@Test
100+
public void addPluralStringTest() {
101+
AddSourcePluralStringRequest request = new AddSourcePluralStringRequest();
102+
PluralText text = new PluralText();
103+
text.setOne("string");
104+
text.setOther("strings");
105+
request.setText(text);
106+
request.setIdentifier("6a1821e6499ebae94de4b880fd93b985");
107+
request.setFileId(id);
108+
request.setContext("shown on main page");
109+
request.setIsHidden(false);
110+
request.setMaxLength(35);
111+
request.setLabelIds(Arrays.asList(1L));
112+
ResponseObject<SourceString> sourceStringResponseObject = this.getSourceStringsApi().addSourcePluralString(projectId, request);
113+
Map<String, String> expected = new HashMap<String, String>() {{
114+
put("one", "string");
115+
put("other", "strings");
116+
}};
117+
assertEquals(sourceStringResponseObject.getData().getId(), id);
118+
assertEquals(sourceStringResponseObject.getData().getText(), expected);
119+
}
120+
104121
@Test
105122
public void addStringStringsBasedTest() {
106123
AddSourceStringStringsBasedRequest request = new AddSourceStringStringsBasedRequest();
@@ -116,6 +133,28 @@ public void addStringStringsBasedTest() {
116133
assertEquals(sourceStringResponseObject.getData().getText(), text);
117134
}
118135

136+
@Test
137+
public void addPluralStringStringsBasedTest() {
138+
AddSourcePluralStringStringsBasedRequest request = new AddSourcePluralStringStringsBasedRequest();
139+
PluralText text = new PluralText();
140+
text.setOne("string");
141+
text.setOther("strings");
142+
request.setText(text);
143+
request.setIdentifier("6a1821e6499ebae94de4b880fd93b985");
144+
request.setBranchId(branchId);
145+
request.setContext("shown on main page");
146+
request.setIsHidden(false);
147+
request.setMaxLength(35);
148+
request.setLabelIds(Arrays.asList(1L));
149+
ResponseObject<SourceString> sourceStringResponseObject = this.getSourceStringsApi().addSourcePluralStringStringsBased(projectId, request);
150+
Map<String, String> expected = new HashMap<String, String>() {{
151+
put("one", "string");
152+
put("other", "strings");
153+
}};
154+
assertEquals(sourceStringResponseObject.getData().getId(), id);
155+
assertEquals(sourceStringResponseObject.getData().getText(), expected);
156+
}
157+
119158
@Test
120159
public void getStringTest() {
121160
ResponseObject<SourceString> sourceStringResponseObject = this.getSourceStringsApi().getSourceString(projectId, id);
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"text": {
3+
"one": "string",
4+
"other": "strings"
5+
},
6+
"identifier": "6a1821e6499ebae94de4b880fd93b985",
7+
"fileId": 2814,
8+
"context": "shown on main page",
9+
"isHidden": false,
10+
"maxLength": 35,
11+
"labelIds": [
12+
1
13+
]
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"text": {
3+
"one": "string",
4+
"other": "strings"
5+
},
6+
"identifier": "6a1821e6499ebae94de4b880fd93b985",
7+
"branchId": 667,
8+
"context": "shown on main page",
9+
"isHidden": false,
10+
"maxLength": 35,
11+
"labelIds": [
12+
1
13+
]
14+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"data": {
3+
"id": 2814,
4+
"projectId": 2,
5+
"fileId": 48,
6+
"branchId": 667,
7+
"identifier": "6a1821e6499ebae94de4b880fd93b985",
8+
"text": {
9+
"one": "string",
10+
"other": "strings"
11+
},
12+
"type": "text",
13+
"context": "shown on main page",
14+
"maxLength": 35,
15+
"isHidden": false,
16+
"revision": 1,
17+
"hasPlurals": false,
18+
"isIcu": false,
19+
"labelIds": [
20+
3
21+
],
22+
"createdAt": "2019-09-20T12:43:57+00:00",
23+
"updatedAt": "2019-09-20T13:24:01+00:00"
24+
}
25+
}

0 commit comments

Comments
 (0)