From 18f2b93f103e4c02a361bce4f7d137964a470038 Mon Sep 17 00:00:00 2001 From: korzol <48809063+korzol@users.noreply.github.com> Date: Tue, 14 Oct 2025 21:15:58 +0300 Subject: [PATCH 1/2] feat: Teams API new parameters --- .../com/crowdin/client/teams/TeamsApi.java | 39 ++++++++++++++++ .../client/teams/model/ListTeamsParams.java | 19 ++++++++ .../client/teams/model/ProjectRoles.java | 16 +++++++ .../TeamsApiListTeamsOrderByIdAscTest.java | 17 +++++++ .../TeamsApiListTeamsOrderByIdDescTest.java | 18 ++++++++ .../TeamsApiListTeamsSearchByGroupIdTest.java | 42 ++++++++++++++++++ .../TeamsApiListTeamsSearchByNameTest.java | 42 ++++++++++++++++++ ...eamsApiListTeamsSearchByProjectIdTest.java | 42 ++++++++++++++++++ ...sApiListTeamsSearchByProjectRolesTest.java | 44 +++++++++++++++++++ 9 files changed, 279 insertions(+) create mode 100644 src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java create mode 100644 src/main/java/com/crowdin/client/teams/model/ProjectRoles.java create mode 100644 src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByGroupIdTest.java create mode 100644 src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByNameTest.java create mode 100644 src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectIdTest.java create mode 100644 src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectRolesTest.java diff --git a/src/main/java/com/crowdin/client/teams/TeamsApi.java b/src/main/java/com/crowdin/client/teams/TeamsApi.java index 15b843a9..2b8a4a56 100644 --- a/src/main/java/com/crowdin/client/teams/TeamsApi.java +++ b/src/main/java/com/crowdin/client/teams/TeamsApi.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; public class TeamsApi extends CrowdinApi { public TeamsApi(Credentials credentials) { @@ -134,6 +135,44 @@ public ResponseList listTeams(Integer limit, Integer offset, List + *
  • Enterprise API Documentation
  • + * + */ + public ResponseList listTeams(ListTeamsParams params) throws HttpException, HttpBadRequestException { + ListTeamsParams query = Optional.ofNullable(params).orElse(new ListTeamsParams()); + + Map> queryParams = HttpRequestConfig.buildUrlParams( + "search", Optional.ofNullable(query.getSearch()), + "projectIds", Optional.ofNullable( + query.getProjectIds() == null ? null : query.getProjectIds().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")) + ), + "projectRoles", Optional.ofNullable( + query.getProjectRoles() == null ? null : query.getProjectRoles().stream() + .map(projectRole -> projectRole.to(projectRole)) + .collect(Collectors.joining(",")) + ), + "languageIds", Optional.ofNullable( + query.getLanguageIs() == null ? null : String.join(",", query.getLanguageIs()) + ), + "groupIds", Optional.ofNullable( + query.getGroupIds() == null ? null : query.getGroupIds().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")) + ), + "orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy())), + "limit", Optional.ofNullable(query.getLimit()), + "offset", Optional.ofNullable(query.getOffset()) + ); + TeamResponseList teamResponseList = this.httpClient.get(this.url + "/teams", new HttpRequestConfig(queryParams), TeamResponseList.class); + return TeamResponseList.to(teamResponseList); + } + /** * @param request request object * @return newly created team diff --git a/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java b/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java new file mode 100644 index 00000000..ba513fc1 --- /dev/null +++ b/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java @@ -0,0 +1,19 @@ +package com.crowdin.client.teams.model; + +import com.crowdin.client.core.model.OrderByField; +import com.crowdin.client.core.model.Pagination; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +public class ListTeamsParams extends Pagination { + private String search; + private List projectIds; + private List projectRoles; + private List languageIs; + private List groupIds; + private List orderBy; +} diff --git a/src/main/java/com/crowdin/client/teams/model/ProjectRoles.java b/src/main/java/com/crowdin/client/teams/model/ProjectRoles.java new file mode 100644 index 00000000..f89ba559 --- /dev/null +++ b/src/main/java/com/crowdin/client/teams/model/ProjectRoles.java @@ -0,0 +1,16 @@ +package com.crowdin.client.teams.model; + +import com.crowdin.client.core.model.EnumConverter; + +public enum ProjectRoles implements EnumConverter { + MANAGER, DEVELOPER, TRANSLATOR, PROOFREADER, LANGUAGE_COORDINATOR, MEMBER; + + public static ProjectRoles from(String value) { + return ProjectRoles.valueOf(value.toUpperCase()); + } + + @Override + public String to(ProjectRoles v) { + return v.name().toLowerCase(); + } +} diff --git a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdAscTest.java b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdAscTest.java index 01e90e27..36b7409d 100644 --- a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdAscTest.java +++ b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdAscTest.java @@ -54,4 +54,21 @@ public void listTeamsTest_orderByIdAsc() { assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId()); assertEquals(name2, teamResponseList.getData().get(1).getData().getName()); } + + @Test + public void listTeamsTest_newOrderByIdAsc() { + OrderByField orderBy = new OrderByField(); + orderBy.setFieldName("id"); + orderBy.setOrderBy(SortOrder.ASC); + + ListTeamsParams query = new ListTeamsParams(); + query.setOrderBy(singletonList(orderBy)); + + ResponseList teamResponseList = this.getTeamsApi().listTeams(null, null, singletonList(orderBy)); + assertEquals(2, teamResponseList.getData().size()); + assertEquals(teamId, teamResponseList.getData().get(0).getData().getId()); + assertEquals(name, teamResponseList.getData().get(0).getData().getName()); + assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId()); + assertEquals(name2, teamResponseList.getData().get(1).getData().getName()); + } } diff --git a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdDescTest.java b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdDescTest.java index 6dc7ed93..c896aca2 100644 --- a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdDescTest.java +++ b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsOrderByIdDescTest.java @@ -5,6 +5,7 @@ import com.crowdin.client.core.model.SortOrder; import com.crowdin.client.framework.RequestMock; import com.crowdin.client.framework.TestClient; +import com.crowdin.client.teams.model.ListTeamsParams; import com.crowdin.client.teams.model.Team; import org.apache.http.client.methods.HttpGet; import org.junit.jupiter.api.Test; @@ -46,4 +47,21 @@ public void listTeamsTest_orderByIdDesc() { assertEquals(name, teamResponseList.getData().get(1).getData().getName()); } + + @Test + public void listTeamsTest_newOrderByIdDesc() { + OrderByField orderById = new OrderByField(); + orderById.setFieldName("id"); + orderById.setOrderBy(SortOrder.DESC); + + ListTeamsParams query = new ListTeamsParams(); + query.setOrderBy(singletonList(orderById)); + + ResponseList teamResponseList = this.getTeamsApi().listTeams(query); + assertEquals(2, teamResponseList.getData().size()); + assertEquals(team2Id, teamResponseList.getData().get(0).getData().getId()); + assertEquals(name2, teamResponseList.getData().get(0).getData().getName()); + assertEquals(teamId, teamResponseList.getData().get(1).getData().getId()); + assertEquals(name, teamResponseList.getData().get(1).getData().getName()); + } } diff --git a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByGroupIdTest.java b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByGroupIdTest.java new file mode 100644 index 00000000..b217afa6 --- /dev/null +++ b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByGroupIdTest.java @@ -0,0 +1,42 @@ +package com.crowdin.client.teams; + +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.teams.model.ListTeamsParams; +import com.crowdin.client.teams.model.Team; +import org.apache.http.client.methods.HttpGet; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TeamsApiListTeamsSearchByGroupIdTest extends TestClient { + + private final Long teamId = 1L; + private final Long team2Id = 2L; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeamsOrderByIdAsc.json", new HashMap() {{ + put("projectIds", "1,2,3"); + }}) + ); + } + + @Test + public void listTeamsTest_searchByGroupId() { + List groupIds = Arrays.asList(1L, 2L, 3L); + ListTeamsParams query = new ListTeamsParams(); + query.setProjectIds(groupIds); + + ResponseList teamResponseList = this.getTeamsApi().listTeams(query); + assertEquals(2, teamResponseList.getData().size()); + assertEquals(teamId, teamResponseList.getData().get(0).getData().getId()); + assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId()); + } +} diff --git a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByNameTest.java b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByNameTest.java new file mode 100644 index 00000000..a4b5aab7 --- /dev/null +++ b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByNameTest.java @@ -0,0 +1,42 @@ +package com.crowdin.client.teams; + +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.teams.model.ListTeamsParams; +import com.crowdin.client.teams.model.Team; +import org.apache.http.client.methods.HttpGet; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TeamsApiListTeamsSearchByNameTest extends TestClient { + + private final Long teamId = 1L; + private final String name = "French"; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeams.json", new HashMap() {{ + put("search", "French"); + }}) + ); + } + + @Test + public void listTeamsTest_searchByName() { + ListTeamsParams query = new ListTeamsParams(); + query.setSearch("French"); + + ResponseList teamResponseList = this.getTeamsApi().listTeams(query); + assertEquals(1, teamResponseList.getData().size()); + assertEquals(teamId, teamResponseList.getData().get(0).getData().getId()); + assertEquals(name, teamResponseList.getData().get(0).getData().getName()); + + } +} diff --git a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectIdTest.java b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectIdTest.java new file mode 100644 index 00000000..330dde31 --- /dev/null +++ b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectIdTest.java @@ -0,0 +1,42 @@ +package com.crowdin.client.teams; + +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.teams.model.ListTeamsParams; +import com.crowdin.client.teams.model.Team; +import org.apache.http.client.methods.HttpGet; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TeamsApiListTeamsSearchByProjectIdTest extends TestClient { + + private final Long teamId = 1L; + private final Long team2Id = 2L; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeamsOrderByIdAsc.json", new HashMap() {{ + put("projectIds", "1,2,3"); + }}) + ); + } + + @Test + public void listTeamsTest_searchByProjectId() { + List projectIds = Arrays.asList(1L, 2L, 3L); + ListTeamsParams query = new ListTeamsParams(); + query.setProjectIds(projectIds); + + ResponseList teamResponseList = this.getTeamsApi().listTeams(query); + assertEquals(2, teamResponseList.getData().size()); + assertEquals(teamId, teamResponseList.getData().get(0).getData().getId()); + assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId()); + } +} diff --git a/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectRolesTest.java b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectRolesTest.java new file mode 100644 index 00000000..b2555b9f --- /dev/null +++ b/src/test/java/com/crowdin/client/teams/TeamsApiListTeamsSearchByProjectRolesTest.java @@ -0,0 +1,44 @@ +package com.crowdin.client.teams; + +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.teams.model.ListTeamsParams; +import com.crowdin.client.teams.model.ProjectRoles; +import com.crowdin.client.teams.model.Team; +import org.apache.http.client.methods.HttpGet; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class TeamsApiListTeamsSearchByProjectRolesTest extends TestClient { + + private final Long teamId = 1L; + private final Long team2Id = 2L; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/teams", HttpGet.METHOD_NAME, "api/teams/listTeamsOrderByIdAsc.json", new HashMap() {{ + put("projectRoles", "manager,language_coordinator"); + }}) + ); + } + + @Test + public void listTeamsTest_searchByProjectRoles() { + List projectRoles = Arrays.asList(ProjectRoles.MANAGER, ProjectRoles.LANGUAGE_COORDINATOR); + + ListTeamsParams query = new ListTeamsParams(); + query.setProjectRoles(projectRoles); + + ResponseList teamResponseList = this.getTeamsApi().listTeams(query); + assertEquals(2, teamResponseList.getData().size()); + assertEquals(teamId, teamResponseList.getData().get(0).getData().getId()); + assertEquals(team2Id, teamResponseList.getData().get(1).getData().getId()); + } +} From 12ee054f379b7d48f44673e2ac70a72849f529dc Mon Sep 17 00:00:00 2001 From: korzol <48809063+korzol@users.noreply.github.com> Date: Thu, 16 Oct 2025 18:19:37 +0300 Subject: [PATCH 2/2] feat: Users API new parameters --- .../client/core/http/HttpRequestConfig.java | 37 ++++++++++++++ .../com/crowdin/client/teams/TeamsApi.java | 2 +- .../client/teams/model/ListTeamsParams.java | 4 +- .../com/crowdin/client/users/UsersApi.java | 49 +++++++++++++++++++ .../client/users/model/ListUsersParams.java | 27 ++++++++++ .../client/users/model/OrganizationRoles.java | 16 ++++++ .../client/users/UsersApiOrderyIdAscTest.java | 18 ++++++- .../users/UsersApiOrderyIdDescTest.java | 18 ++++++- .../users/UsersApiSearchByNullTest.java | 36 ++++++++++++++ .../users/UsersApiSearchBySearchTest.java | 42 ++++++++++++++++ 10 files changed, 244 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/crowdin/client/users/model/ListUsersParams.java create mode 100644 src/main/java/com/crowdin/client/users/model/OrganizationRoles.java create mode 100644 src/test/java/com/crowdin/client/users/UsersApiSearchByNullTest.java create mode 100644 src/test/java/com/crowdin/client/users/UsersApiSearchBySearchTest.java diff --git a/src/main/java/com/crowdin/client/core/http/HttpRequestConfig.java b/src/main/java/com/crowdin/client/core/http/HttpRequestConfig.java index 7124fd08..35af4e80 100644 --- a/src/main/java/com/crowdin/client/core/http/HttpRequestConfig.java +++ b/src/main/java/com/crowdin/client/core/http/HttpRequestConfig.java @@ -177,4 +177,41 @@ public static Map buildUrlParams(String k1, T v1 put(k12, v12); }}; } + + public static Map buildUrlParams(String k1, T v1, String k2, T v2, String k3, T v3, String k4, T v4, String k5, T v5, String k6, T v6, String k7, T v7, String k8, T v8, String k9, T v9, String k10, T v10, String k11, T v11, String k12, T v12, String k13, T v13) { + return new HashMap() {{ + put(k1, v1); + put(k2, v2); + put(k3, v3); + put(k4, v4); + put(k5, v5); + put(k6, v6); + put(k7, v7); + put(k8, v8); + put(k9, v9); + put(k10, v10); + put(k11, v11); + put(k12, v12); + put(k13, v13); + }}; + } + + public static Map buildUrlParams(String k1, T v1, String k2, T v2, String k3, T v3, String k4, T v4, String k5, T v5, String k6, T v6, String k7, T v7, String k8, T v8, String k9, T v9, String k10, T v10, String k11, T v11, String k12, T v12, String k13, T v13, String k14, T v14) { + return new HashMap() {{ + put(k1, v1); + put(k2, v2); + put(k3, v3); + put(k4, v4); + put(k5, v5); + put(k6, v6); + put(k7, v7); + put(k8, v8); + put(k9, v9); + put(k10, v10); + put(k11, v11); + put(k12, v12); + put(k13, v13); + put(k14, v14); + }}; + } } diff --git a/src/main/java/com/crowdin/client/teams/TeamsApi.java b/src/main/java/com/crowdin/client/teams/TeamsApi.java index 2b8a4a56..74d0584c 100644 --- a/src/main/java/com/crowdin/client/teams/TeamsApi.java +++ b/src/main/java/com/crowdin/client/teams/TeamsApi.java @@ -158,7 +158,7 @@ public ResponseList listTeams(ListTeamsParams params) throws HttpException .collect(Collectors.joining(",")) ), "languageIds", Optional.ofNullable( - query.getLanguageIs() == null ? null : String.join(",", query.getLanguageIs()) + query.getLanguageIds() == null ? null : String.join(",", query.getLanguageIds()) ), "groupIds", Optional.ofNullable( query.getGroupIds() == null ? null : query.getGroupIds().stream() diff --git a/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java b/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java index ba513fc1..0ba8d1a7 100644 --- a/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java +++ b/src/main/java/com/crowdin/client/teams/model/ListTeamsParams.java @@ -8,12 +8,12 @@ import java.util.List; @Data -@EqualsAndHashCode(callSuper = false) +@EqualsAndHashCode(callSuper = true) public class ListTeamsParams extends Pagination { private String search; private List projectIds; private List projectRoles; - private List languageIs; + private List languageIds; private List groupIds; private List orderBy; } diff --git a/src/main/java/com/crowdin/client/users/UsersApi.java b/src/main/java/com/crowdin/client/users/UsersApi.java index 79961795..9854e130 100644 --- a/src/main/java/com/crowdin/client/users/UsersApi.java +++ b/src/main/java/com/crowdin/client/users/UsersApi.java @@ -10,6 +10,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; public class UsersApi extends CrowdinApi { public UsersApi(Credentials credentials) { @@ -243,6 +244,54 @@ public ResponseList listUsers(Status status, String search, TwoFactor twoF return UserResponseList.to(userResponseList); } + /** + * @param params ListUsersParams + * @return list of teams + * @see + */ + public ResponseList listUsers(ListUsersParams params) throws HttpException, HttpBadRequestException { + ListUsersParams query = Optional.ofNullable(params).orElse(new ListUsersParams()); + + Map> queryParams = HttpRequestConfig.buildUrlParams( + "status", Optional.ofNullable(query.getStatus()), + "search", Optional.ofNullable(query.getSearch()), + "twoFactor", Optional.ofNullable(query.getTwoFactor()), + "limit", Optional.ofNullable(query.getLimit()), + "offset", Optional.ofNullable(query.getOffset()), + "orderBy", Optional.ofNullable(OrderByField.generateSortParam(query.getOrderBy())), + "organizationRoles", Optional.ofNullable( + query.getOrganizationRoles() == null ? null : query.getOrganizationRoles().stream() + .map(organizationRole -> organizationRole.to(organizationRole)) + .collect(Collectors.joining(",")) + ), + "teamId", Optional.ofNullable(query.getTeamId()), + "projectIds", Optional.ofNullable( + query.getProjectIds() == null ? null : query.getProjectIds().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")) + ), + "projectRoles", Optional.ofNullable( + query.getProjectRoles() == null ? null : query.getProjectRoles().stream() + .map(projectRole -> projectRole.to(projectRole)) + .collect(Collectors.joining(",")) + ), + "languageIds", Optional.ofNullable( + query.getLanguageIds() == null ? null : String.join(",", query.getLanguageIds()) + ), + "groupIds", Optional.ofNullable( + query.getGroupIds() == null ? null : query.getGroupIds().stream() + .map(String::valueOf) + .collect(Collectors.joining(",")) + ), + "lastSeenFrom", Optional.ofNullable(query.getLastSeenFrom()), + "lastSeenTo", Optional.ofNullable(query.getLastSeenTo()) + ); + UserResponseList userResponseList = this.httpClient.get(this.url + "/users", new HttpRequestConfig(queryParams), UserResponseList.class); + return UserResponseList.to(userResponseList); + } + /** * @param request request object * @return invited user diff --git a/src/main/java/com/crowdin/client/users/model/ListUsersParams.java b/src/main/java/com/crowdin/client/users/model/ListUsersParams.java new file mode 100644 index 00000000..64cb2be8 --- /dev/null +++ b/src/main/java/com/crowdin/client/users/model/ListUsersParams.java @@ -0,0 +1,27 @@ +package com.crowdin.client.users.model; + +import com.crowdin.client.core.model.OrderByField; +import com.crowdin.client.core.model.Pagination; +import com.crowdin.client.teams.model.ProjectRoles; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ListUsersParams extends Pagination { + private List orderBy; + private Status status; + private String search; + private TwoFactor twoFactor; + private List organizationRoles; + private Long teamId; + private List projectIds; + private List projectRoles; + private List languageIds; + private List groupIds; + private Date lastSeenFrom; + private Date lastSeenTo; +} diff --git a/src/main/java/com/crowdin/client/users/model/OrganizationRoles.java b/src/main/java/com/crowdin/client/users/model/OrganizationRoles.java new file mode 100644 index 00000000..3e437626 --- /dev/null +++ b/src/main/java/com/crowdin/client/users/model/OrganizationRoles.java @@ -0,0 +1,16 @@ +package com.crowdin.client.users.model; + +import com.crowdin.client.core.model.EnumConverter; + +public enum OrganizationRoles implements EnumConverter { + ADMIN, MANAGER, VENDOR, CLIENT; + + public static OrganizationRoles from(String value){ + return OrganizationRoles.valueOf(value.toUpperCase()); + } + + @Override + public String to(OrganizationRoles v) { + return v.name().toLowerCase(); + } +} diff --git a/src/test/java/com/crowdin/client/users/UsersApiOrderyIdAscTest.java b/src/test/java/com/crowdin/client/users/UsersApiOrderyIdAscTest.java index b5da212d..92cd2608 100644 --- a/src/test/java/com/crowdin/client/users/UsersApiOrderyIdAscTest.java +++ b/src/test/java/com/crowdin/client/users/UsersApiOrderyIdAscTest.java @@ -9,7 +9,7 @@ import java.util.*; -import static java.util.Collections.singletonList; +import static java.util.Collections.*; import static org.junit.jupiter.api.Assertions.*; public class UsersApiOrderyIdAscTest extends TestClient { @@ -64,4 +64,20 @@ public void listUsersTest_orderByIdAsc() { assertEquals(userId, userResponseList.getData().get(0).getData().getId()); assertEquals(user2Id, userResponseList.getData().get(1).getData().getId()); } + + @Test + public void listUsersTest_newOrderByIdAsc() { + OrderByField orderById = new OrderByField(); + orderById.setFieldName("id"); + orderById.setOrderBy(SortOrder.ASC); + + ListUsersParams listUsersParams = new ListUsersParams(); + listUsersParams.setOrderBy(singletonList(orderById)); + + ResponseList userResponseList = this.getUsersApi().listUsers(listUsersParams); + + assertEquals(2, userResponseList.getData().size()); + assertEquals(userId, userResponseList.getData().get(0).getData().getId()); + assertEquals(user2Id, userResponseList.getData().get(1).getData().getId()); + } } diff --git a/src/test/java/com/crowdin/client/users/UsersApiOrderyIdDescTest.java b/src/test/java/com/crowdin/client/users/UsersApiOrderyIdDescTest.java index 6d1c6029..8260b43c 100644 --- a/src/test/java/com/crowdin/client/users/UsersApiOrderyIdDescTest.java +++ b/src/test/java/com/crowdin/client/users/UsersApiOrderyIdDescTest.java @@ -5,11 +5,11 @@ import com.crowdin.client.core.model.SortOrder; import com.crowdin.client.framework.RequestMock; import com.crowdin.client.framework.TestClient; +import com.crowdin.client.users.model.ListUsersParams; import com.crowdin.client.users.model.User; import org.apache.http.client.methods.HttpGet; import org.junit.jupiter.api.Test; -import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -49,4 +49,20 @@ public void listUsersTest_orderByIdDesc() { assertEquals(user2Id, userResponseList.getData().get(0).getData().getId()); assertEquals(userId, userResponseList.getData().get(1).getData().getId()); } + + @Test + public void listUsersTest_newOrderByIdDesc() { + OrderByField orderById = new OrderByField(); + orderById.setFieldName("id"); + orderById.setOrderBy(SortOrder.DESC); + + ListUsersParams listUsersParams = new ListUsersParams(); + listUsersParams.setOrderBy(singletonList(orderById)); + + ResponseList userResponseList = this.getUsersApi().listUsers(listUsersParams); + + assertEquals(2, userResponseList.getData().size()); + assertEquals(user2Id, userResponseList.getData().get(0).getData().getId()); + assertEquals(userId, userResponseList.getData().get(1).getData().getId()); + } } diff --git a/src/test/java/com/crowdin/client/users/UsersApiSearchByNullTest.java b/src/test/java/com/crowdin/client/users/UsersApiSearchByNullTest.java new file mode 100644 index 00000000..c4a551c9 --- /dev/null +++ b/src/test/java/com/crowdin/client/users/UsersApiSearchByNullTest.java @@ -0,0 +1,36 @@ +package com.crowdin.client.users; + +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.users.model.User; +import org.apache.http.client.methods.HttpGet; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class UsersApiSearchByNullTest extends TestClient { + + private final Long userId = 1L; + private final String username = "john_smith"; + + @Override + public List getMocks() { + return singletonList( + RequestMock.build(this.url + "/users", HttpGet.METHOD_NAME, "api/users/listUsers.json") + ); + } + + @Test + public void listUsersTest_Null() { + + ResponseList userResponseList = this.getUsersApi().listUsers(null); + + assertEquals(1, userResponseList.getData().size()); + assertEquals(userId, userResponseList.getData().get(0).getData().getId()); + assertEquals(username, userResponseList.getData().get(0).getData().getUsername()); + } +} diff --git a/src/test/java/com/crowdin/client/users/UsersApiSearchBySearchTest.java b/src/test/java/com/crowdin/client/users/UsersApiSearchBySearchTest.java new file mode 100644 index 00000000..f9d5c487 --- /dev/null +++ b/src/test/java/com/crowdin/client/users/UsersApiSearchBySearchTest.java @@ -0,0 +1,42 @@ +package com.crowdin.client.users; + +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.users.model.ListUsersParams; +import com.crowdin.client.users.model.User; +import org.apache.http.client.methods.HttpGet; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.List; + +import static java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class UsersApiSearchBySearchTest extends TestClient { + + private final Long userId = 1L; + private final String username = "john_smith"; + + @Override + public List getMocks() { + return singletonList( + RequestMock.build(this.url + "/users", HttpGet.METHOD_NAME, "api/users/listUsers.json", new HashMap() {{ + put("search", "john_smith"); + }}) + ); + } + + @Test + public void listUsersTest_newOrderByIdAsc() { + ListUsersParams listUsersParams = new ListUsersParams(); + listUsersParams.setSearch("john_smith"); + + ResponseList userResponseList = this.getUsersApi().listUsers(listUsersParams); + + assertEquals(1, userResponseList.getData().size()); + assertEquals(userId, userResponseList.getData().get(0).getData().getId()); + assertEquals(username, userResponseList.getData().get(0).getData().getUsername()); + } +}