Skip to content

Commit 18f2b93

Browse files
committed
feat: Teams API new parameters
1 parent 17ec43d commit 18f2b93

9 files changed

Lines changed: 279 additions & 0 deletions

src/main/java/com/crowdin/client/teams/TeamsApi.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.List;
1111
import java.util.Map;
1212
import java.util.Optional;
13+
import java.util.stream.Collectors;
1314

1415
public class TeamsApi extends CrowdinApi {
1516
public TeamsApi(Credentials credentials) {
@@ -134,6 +135,44 @@ public ResponseList<Team> listTeams(Integer limit, Integer offset, List<OrderByF
134135
return TeamResponseList.to(teamResponseList);
135136
}
136137

138+
/**
139+
* @param params ListTeamsParams
140+
* @return list of teams
141+
* @see <ul>
142+
* <li><a href="https://developer.crowdin.com/enterprise/api/v2/#operation/api.teams.getMany" target="_blank"><b>Enterprise API Documentation</b></a></li>
143+
* </ul>
144+
*/
145+
public ResponseList<Team> listTeams(ListTeamsParams params) throws HttpException, HttpBadRequestException {
146+
ListTeamsParams query = Optional.ofNullable(params).orElse(new ListTeamsParams());
147+
148+
Map<String, Optional<Object>> queryParams = HttpRequestConfig.buildUrlParams(
149+
"search", Optional.ofNullable(query.getSearch()),
150+
"projectIds", Optional.ofNullable(
151+
query.getProjectIds() == null ? null : query.getProjectIds().stream()
152+
.map(String::valueOf)
153+
.collect(Collectors.joining(","))
154+
),
155+
"projectRoles", Optional.ofNullable(
156+
query.getProjectRoles() == null ? null : query.getProjectRoles().stream()
157+
.map(projectRole -> projectRole.to(projectRole))
158+
.collect(Collectors.joining(","))
159+
),
160+
"languageIds", Optional.ofNullable(
161+
query.getLanguageIs() == null ? null : String.join(",", query.getLanguageIs())
162+
),
163+
"groupIds", Optional.ofNullable(
164+
query.getGroupIds() == null ? null : query.getGroupIds().stream()
165+
.map(String::valueOf)
166+
.collect(Collectors.joining(","))
167+
),
168+
"orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy())),
169+
"limit", Optional.ofNullable(query.getLimit()),
170+
"offset", Optional.ofNullable(query.getOffset())
171+
);
172+
TeamResponseList teamResponseList = this.httpClient.get(this.url + "/teams", new HttpRequestConfig(queryParams), TeamResponseList.class);
173+
return TeamResponseList.to(teamResponseList);
174+
}
175+
137176
/**
138177
* @param request request object
139178
* @return newly created team
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.crowdin.client.teams.model;
2+
3+
import com.crowdin.client.core.model.OrderByField;
4+
import com.crowdin.client.core.model.Pagination;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
8+
import java.util.List;
9+
10+
@Data
11+
@EqualsAndHashCode(callSuper = false)
12+
public class ListTeamsParams extends Pagination {
13+
private String search;
14+
private List<Long> projectIds;
15+
private List<ProjectRoles> projectRoles;
16+
private List<String> languageIs;
17+
private List<Long> groupIds;
18+
private List<OrderByField> orderBy;
19+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.crowdin.client.teams.model;
2+
3+
import com.crowdin.client.core.model.EnumConverter;
4+
5+
public enum ProjectRoles implements EnumConverter<ProjectRoles> {
6+
MANAGER, DEVELOPER, TRANSLATOR, PROOFREADER, LANGUAGE_COORDINATOR, MEMBER;
7+
8+
public static ProjectRoles from(String value) {
9+
return ProjectRoles.valueOf(value.toUpperCase());
10+
}
11+
12+
@Override
13+
public String to(ProjectRoles v) {
14+
return v.name().toLowerCase();
15+
}
16+
}

src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdAscTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,21 @@ public void listTeamsTest_orderByIdAsc() {
5454
assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId());
5555
assertEquals(name2, teamResponseList.getData().get(1).getData().getName());
5656
}
57+
58+
@Test
59+
public void listTeamsTest_newOrderByIdAsc() {
60+
OrderByField orderBy = new OrderByField();
61+
orderBy.setFieldName("id");
62+
orderBy.setOrderBy(SortOrder.ASC);
63+
64+
ListTeamsParams query = new ListTeamsParams();
65+
query.setOrderBy(singletonList(orderBy));
66+
67+
ResponseList<Team> teamResponseList = this.getTeamsApi().listTeams(null, null, singletonList(orderBy));
68+
assertEquals(2, teamResponseList.getData().size());
69+
assertEquals(teamId, teamResponseList.getData().get(0).getData().getId());
70+
assertEquals(name, teamResponseList.getData().get(0).getData().getName());
71+
assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId());
72+
assertEquals(name2, teamResponseList.getData().get(1).getData().getName());
73+
}
5774
}

src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdDescTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.crowdin.client.core.model.SortOrder;
66
import com.crowdin.client.framework.RequestMock;
77
import com.crowdin.client.framework.TestClient;
8+
import com.crowdin.client.teams.model.ListTeamsParams;
89
import com.crowdin.client.teams.model.Team;
910
import org.apache.http.client.methods.HttpGet;
1011
import org.junit.jupiter.api.Test;
@@ -46,4 +47,21 @@ public void listTeamsTest_orderByIdDesc() {
4647
assertEquals(name, teamResponseList.getData().get(1).getData().getName());
4748

4849
}
50+
51+
@Test
52+
public void listTeamsTest_newOrderByIdDesc() {
53+
OrderByField orderById = new OrderByField();
54+
orderById.setFieldName("id");
55+
orderById.setOrderBy(SortOrder.DESC);
56+
57+
ListTeamsParams query = new ListTeamsParams();
58+
query.setOrderBy(singletonList(orderById));
59+
60+
ResponseList<Team> teamResponseList = this.getTeamsApi().listTeams(query);
61+
assertEquals(2, teamResponseList.getData().size());
62+
assertEquals(team2Id, teamResponseList.getData().get(0).getData().getId());
63+
assertEquals(name2, teamResponseList.getData().get(0).getData().getName());
64+
assertEquals(teamId, teamResponseList.getData().get(1).getData().getId());
65+
assertEquals(name, teamResponseList.getData().get(1).getData().getName());
66+
}
4967
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.crowdin.client.teams;
2+
3+
import com.crowdin.client.core.model.ResponseList;
4+
import com.crowdin.client.framework.RequestMock;
5+
import com.crowdin.client.framework.TestClient;
6+
import com.crowdin.client.teams.model.ListTeamsParams;
7+
import com.crowdin.client.teams.model.Team;
8+
import org.apache.http.client.methods.HttpGet;
9+
import org.junit.jupiter.api.Test;
10+
11+
import java.util.Arrays;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
17+
public class TeamsApiListTeamsSearchByGroupIdTest extends TestClient {
18+
19+
private final Long teamId = 1L;
20+
private final Long team2Id = 2L;
21+
22+
@Override
23+
public List<RequestMock> getMocks() {
24+
return Arrays.asList(
25+
RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeamsOrderByIdAsc.json", new HashMap<String, String>() {{
26+
put("projectIds", "1,2,3");
27+
}})
28+
);
29+
}
30+
31+
@Test
32+
public void listTeamsTest_searchByGroupId() {
33+
List<Long> groupIds = Arrays.asList(1L, 2L, 3L);
34+
ListTeamsParams query = new ListTeamsParams();
35+
query.setProjectIds(groupIds);
36+
37+
ResponseList<Team> teamResponseList = this.getTeamsApi().listTeams(query);
38+
assertEquals(2, teamResponseList.getData().size());
39+
assertEquals(teamId, teamResponseList.getData().get(0).getData().getId());
40+
assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId());
41+
}
42+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.crowdin.client.teams;
2+
3+
import com.crowdin.client.core.model.ResponseList;
4+
import com.crowdin.client.framework.RequestMock;
5+
import com.crowdin.client.framework.TestClient;
6+
import com.crowdin.client.teams.model.ListTeamsParams;
7+
import com.crowdin.client.teams.model.Team;
8+
import org.apache.http.client.methods.HttpGet;
9+
import org.junit.jupiter.api.Test;
10+
11+
import java.util.Arrays;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
17+
public class TeamsApiListTeamsSearchByNameTest extends TestClient {
18+
19+
private final Long teamId = 1L;
20+
private final String name = "French";
21+
22+
@Override
23+
public List<RequestMock> getMocks() {
24+
return Arrays.asList(
25+
RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeams.json", new HashMap<String, String>() {{
26+
put("search", "French");
27+
}})
28+
);
29+
}
30+
31+
@Test
32+
public void listTeamsTest_searchByName() {
33+
ListTeamsParams query = new ListTeamsParams();
34+
query.setSearch("French");
35+
36+
ResponseList<Team> teamResponseList = this.getTeamsApi().listTeams(query);
37+
assertEquals(1, teamResponseList.getData().size());
38+
assertEquals(teamId, teamResponseList.getData().get(0).getData().getId());
39+
assertEquals(name, teamResponseList.getData().get(0).getData().getName());
40+
41+
}
42+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.crowdin.client.teams;
2+
3+
import com.crowdin.client.core.model.ResponseList;
4+
import com.crowdin.client.framework.RequestMock;
5+
import com.crowdin.client.framework.TestClient;
6+
import com.crowdin.client.teams.model.ListTeamsParams;
7+
import com.crowdin.client.teams.model.Team;
8+
import org.apache.http.client.methods.HttpGet;
9+
import org.junit.jupiter.api.Test;
10+
11+
import java.util.Arrays;
12+
import java.util.HashMap;
13+
import java.util.List;
14+
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
17+
public class TeamsApiListTeamsSearchByProjectIdTest extends TestClient {
18+
19+
private final Long teamId = 1L;
20+
private final Long team2Id = 2L;
21+
22+
@Override
23+
public List<RequestMock> getMocks() {
24+
return Arrays.asList(
25+
RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeamsOrderByIdAsc.json", new HashMap<String, String>() {{
26+
put("projectIds", "1,2,3");
27+
}})
28+
);
29+
}
30+
31+
@Test
32+
public void listTeamsTest_searchByProjectId() {
33+
List<Long> projectIds = Arrays.asList(1L, 2L, 3L);
34+
ListTeamsParams query = new ListTeamsParams();
35+
query.setProjectIds(projectIds);
36+
37+
ResponseList<Team> teamResponseList = this.getTeamsApi().listTeams(query);
38+
assertEquals(2, teamResponseList.getData().size());
39+
assertEquals(teamId, teamResponseList.getData().get(0).getData().getId());
40+
assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId());
41+
}
42+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.crowdin.client.teams;
2+
3+
import com.crowdin.client.core.model.ResponseList;
4+
import com.crowdin.client.framework.RequestMock;
5+
import com.crowdin.client.framework.TestClient;
6+
import com.crowdin.client.teams.model.ListTeamsParams;
7+
import com.crowdin.client.teams.model.ProjectRoles;
8+
import com.crowdin.client.teams.model.Team;
9+
import org.apache.http.client.methods.HttpGet;
10+
import org.junit.jupiter.api.Test;
11+
12+
import java.util.Arrays;
13+
import java.util.HashMap;
14+
import java.util.List;
15+
16+
import static org.junit.jupiter.api.Assertions.assertEquals;
17+
18+
public class TeamsApiListTeamsSearchByProjectRolesTest extends TestClient {
19+
20+
private final Long teamId = 1L;
21+
private final Long team2Id = 2L;
22+
23+
@Override
24+
public List<RequestMock> getMocks() {
25+
return Arrays.asList(
26+
RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeamsOrderByIdAsc.json", new HashMap<String, String>() {{
27+
put("projectRoles", "manager,language_coordinator");
28+
}})
29+
);
30+
}
31+
32+
@Test
33+
public void listTeamsTest_searchByProjectRoles() {
34+
List<ProjectRoles> projectRoles = Arrays.asList(ProjectRoles.MANAGER, ProjectRoles.LANGUAGE_COORDINATOR);
35+
36+
ListTeamsParams query = new ListTeamsParams();
37+
query.setProjectRoles(projectRoles);
38+
39+
ResponseList<Team> teamResponseList = this.getTeamsApi().listTeams(query);
40+
assertEquals(2, teamResponseList.getData().size());
41+
assertEquals(teamId, teamResponseList.getData().get(0).getData().getId());
42+
assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId());
43+
}
44+
}

0 commit comments

Comments
 (0)