From 1665a3942c8b76200f09de8012ae260a42fa4d03 Mon Sep 17 00:00:00 2001 From: Bulat Khafizov Date: Tue, 17 Mar 2026 13:33:06 +0300 Subject: [PATCH 1/4] Created Style Guides API --- src/main/java/com/crowdin/client/Client.java | 4 + .../client/styleguide/StyleGuidesApi.java | 128 ++++++++++++++++++ .../model/AddStyleGuideRequest.java | 15 ++ .../model/ListStyleGuidesParams.java | 14 ++ .../client/styleguide/model/StyleGuide.java | 21 +++ .../model/StyleGuideResponseList.java | 25 ++++ .../model/StyleGuideResponseObject.java | 8 ++ .../client/styleguide/StyleGuidesApiTest.java | 88 ++++++++++++ .../api/styleguide/addStyleGuideRequest.json | 8 ++ .../api/styleguide/listStyleGuides.json | 20 +++ .../resources/api/styleguide/styleGuide.json | 12 ++ 11 files changed, 343 insertions(+) create mode 100644 src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java create mode 100644 src/main/java/com/crowdin/client/styleguide/model/AddStyleGuideRequest.java create mode 100644 src/main/java/com/crowdin/client/styleguide/model/ListStyleGuidesParams.java create mode 100644 src/main/java/com/crowdin/client/styleguide/model/StyleGuide.java create mode 100644 src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseList.java create mode 100644 src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseObject.java create mode 100644 src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java create mode 100644 src/test/resources/api/styleguide/addStyleGuideRequest.json create mode 100644 src/test/resources/api/styleguide/listStyleGuides.json create mode 100644 src/test/resources/api/styleguide/styleGuide.json diff --git a/src/main/java/com/crowdin/client/Client.java b/src/main/java/com/crowdin/client/Client.java index 6145770a8..a2776b5bc 100644 --- a/src/main/java/com/crowdin/client/Client.java +++ b/src/main/java/com/crowdin/client/Client.java @@ -27,6 +27,7 @@ import com.crowdin.client.stringcomments.StringCommentsApi; import com.crowdin.client.stringcorrections.StringCorrectionsApi; import com.crowdin.client.stringtranslations.StringTranslationsApi; +import com.crowdin.client.styleguide.StyleGuidesApi; import com.crowdin.client.tasks.TasksApi; import com.crowdin.client.teams.TeamsApi; import com.crowdin.client.translationmemory.TranslationMemoryApi; @@ -76,6 +77,7 @@ public class Client extends CrowdinApi { private final BranchesApi branchesApi; private final AIApi aiApi; private final StringCorrectionsApi stringCorrectionsApi; + private final StyleGuidesApi styleGuidesApi; public Client(Credentials credentials) { super(credentials); @@ -113,6 +115,7 @@ public Client(Credentials credentials) { this.branchesApi = new BranchesApi(credentials); this.aiApi = new AIApi(credentials); this.stringCorrectionsApi = new StringCorrectionsApi(credentials); + this.styleGuidesApi = new StyleGuidesApi(credentials); } public Client(Credentials credentials, ClientConfig clientConfig) { @@ -151,6 +154,7 @@ public Client(Credentials credentials, ClientConfig clientConfig) { this.branchesApi = new BranchesApi(credentials, clientConfig); this.aiApi = new AIApi(credentials, clientConfig); this.stringCorrectionsApi = new StringCorrectionsApi(credentials, clientConfig); + this.styleGuidesApi = new StyleGuidesApi(credentials, clientConfig); } } diff --git a/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java b/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java new file mode 100644 index 000000000..f0491a32b --- /dev/null +++ b/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java @@ -0,0 +1,128 @@ +package com.crowdin.client.styleguide; + +import com.crowdin.client.core.CrowdinApi; +import com.crowdin.client.core.http.HttpRequestConfig; +import com.crowdin.client.core.http.exceptions.HttpBadRequestException; +import com.crowdin.client.core.http.exceptions.HttpException; +import com.crowdin.client.core.model.*; +import com.crowdin.client.styleguide.model.*; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +public class StyleGuidesApi extends CrowdinApi { + public StyleGuidesApi(Credentials credentials) { + super(credentials); + } + + public StyleGuidesApi(Credentials credentials, ClientConfig clientConfig) { + super(credentials, clientConfig); + } + + /** + * @param styleGuideId style guide identifier + * @see + */ + public void deleteStyleGuide(Long styleGuideId) throws HttpException, HttpBadRequestException { + this.httpClient.delete(this.url + "/style-guides/" + styleGuideId, new HttpRequestConfig(), Void.class); + } + + /** + * @param styleGuideId style guide identifier + * @param request request object + * @return updated style guide + * @see + */ + public ResponseObject editStyleGuide(Long styleGuideId, List request) throws HttpException, HttpBadRequestException { + StyleGuideResponseObject styleGuideResponseObject = this.httpClient.patch(this.url + "/style-guides/" + styleGuideId, request, new HttpRequestConfig(), StyleGuideResponseObject.class); + return ResponseObject.of(styleGuideResponseObject.getData()); + } + + /** + * @param styleGuideId style guide identifier + * @return style guide + * @see + */ + public ResponseObject getStyleGuide(Long styleGuideId) throws HttpException, HttpBadRequestException { + StyleGuideResponseObject styleGuideResponseObject = this.httpClient.get(this.url + "/style-guides/" + styleGuideId, new HttpRequestConfig(), StyleGuideResponseObject.class); + return ResponseObject.of(styleGuideResponseObject.getData()); + } + + /** + * @param request request object + * @return newly created style guide + * @see + */ + public ResponseObject addStyleGuide(AddStyleGuideRequest request) throws HttpException, HttpBadRequestException { + StyleGuideResponseObject styleGuideResponseObject = this.httpClient.post(this.url + "/style-guides", request, new HttpRequestConfig(), StyleGuideResponseObject.class); + return ResponseObject.of(styleGuideResponseObject.getData()); + } + + /** + * @param userId user identifier + * @param limit maximum number of items to retrieve (default 25) + * @param offset starting offset in the collection (default 0) + * @return list of style guides + * @see + */ + public ResponseList listStyleGuide(Long userId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException { + ListStyleGuidesParams params = new ListStyleGuidesParams(); + params.setUserId(userId); + params.setLimit(limit); + params.setOffset(offset); + return listStyleGuide(params); + } + + /** + * @param userId user identifier + * @param limit maximum number of items to retrieve (default 25) + * @param offset starting offset in the collection (default 0) + * @param orderBy list of OrderByField + * @return list of style guides + * @see + */ + public ResponseList listStyleGuide(Long userId, Integer limit, Integer offset, List orderBy) throws HttpException, HttpBadRequestException { + ListStyleGuidesParams params = new ListStyleGuidesParams(); + params.setUserId(userId); + params.setLimit(limit); + params.setOffset(offset); + params.setOrderByList(orderBy); + return listStyleGuide(params); + } + + public ResponseList listStyleGuide(ListStyleGuidesParams params) { + ListStyleGuidesParams query = Optional.ofNullable(params).orElse(new ListStyleGuidesParams()); + + String orderBy = query.getOrderByList() != null + ? OrderByField.generateSortParam(query.getOrderByList()) + : query.getOrderBy(); + + Map> queryParams = HttpRequestConfig.buildUrlParams( + "userId", Optional.ofNullable(query.getUserId()), + "limit", Optional.ofNullable(query.getLimit()), + "offset", Optional.ofNullable(query.getOffset()), + "orderBy", Optional.ofNullable(orderBy) + ); + StyleGuideResponseList styleGuideResponseList = this.httpClient.get(this.url + "/style-guides", new HttpRequestConfig(queryParams), StyleGuideResponseList.class); + return StyleGuideResponseList.to(styleGuideResponseList); + } +} diff --git a/src/main/java/com/crowdin/client/styleguide/model/AddStyleGuideRequest.java b/src/main/java/com/crowdin/client/styleguide/model/AddStyleGuideRequest.java new file mode 100644 index 000000000..6e883308f --- /dev/null +++ b/src/main/java/com/crowdin/client/styleguide/model/AddStyleGuideRequest.java @@ -0,0 +1,15 @@ +package com.crowdin.client.styleguide.model; + +import lombok.Data; + +import java.util.List; + +@Data +public class AddStyleGuideRequest { + private String name; + private String aiInstructions; + private List languageIds; + private List projectIds; + private Boolean isShared; + private Long storageId; +} diff --git a/src/main/java/com/crowdin/client/styleguide/model/ListStyleGuidesParams.java b/src/main/java/com/crowdin/client/styleguide/model/ListStyleGuidesParams.java new file mode 100644 index 000000000..ed3a776db --- /dev/null +++ b/src/main/java/com/crowdin/client/styleguide/model/ListStyleGuidesParams.java @@ -0,0 +1,14 @@ +package com.crowdin.client.styleguide.model; + +import com.crowdin.client.core.model.OrderByField; +import com.crowdin.client.core.model.Pagination; +import lombok.Data; + +import java.util.List; + +@Data +public class ListStyleGuidesParams extends Pagination { + private Long userId; + private String orderBy; + private List orderByList; +} diff --git a/src/main/java/com/crowdin/client/styleguide/model/StyleGuide.java b/src/main/java/com/crowdin/client/styleguide/model/StyleGuide.java new file mode 100644 index 000000000..4fc5bf453 --- /dev/null +++ b/src/main/java/com/crowdin/client/styleguide/model/StyleGuide.java @@ -0,0 +1,21 @@ +package com.crowdin.client.styleguide.model; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +public class StyleGuide { + private Long id; + private String name; + private String aiInstructions; + private Long userId; + private List languageIds; + private List projectIds; + private Boolean isShared; + private String webUrl; + private String downloadLink; + private Date createdAt; + private Date updatedAt; +} diff --git a/src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseList.java b/src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseList.java new file mode 100644 index 000000000..daccb9c34 --- /dev/null +++ b/src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseList.java @@ -0,0 +1,25 @@ +package com.crowdin.client.styleguide.model; + +import com.crowdin.client.core.model.Pagination; +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.core.model.ResponseObject; +import lombok.Data; + +import java.util.List; +import java.util.stream.Collectors; + +@Data +public class StyleGuideResponseList { + private List data; + private Pagination pagination; + + public static ResponseList to(StyleGuideResponseList styleGuideResponseList) { + return ResponseList.of( + styleGuideResponseList.getData().stream() + .map(StyleGuideResponseObject::getData) + .map(ResponseObject::of) + .collect(Collectors.toList()), + styleGuideResponseList.getPagination() + ); + } +} diff --git a/src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseObject.java b/src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseObject.java new file mode 100644 index 000000000..b00e7dc21 --- /dev/null +++ b/src/main/java/com/crowdin/client/styleguide/model/StyleGuideResponseObject.java @@ -0,0 +1,8 @@ +package com.crowdin.client.styleguide.model; + +import lombok.Data; + +@Data +public class StyleGuideResponseObject { + private StyleGuide data; +} diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java new file mode 100644 index 000000000..5cdac275d --- /dev/null +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java @@ -0,0 +1,88 @@ +package com.crowdin.client.styleguide; + +import com.crowdin.client.core.model.PatchOperation; +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.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.styleguide.model.AddStyleGuideRequest; +import com.crowdin.client.styleguide.model.StyleGuide; +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.Arrays; +import java.util.List; + +import static java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class StyleGuidesApiTest extends TestClient { + + private final Long styleGuideId = 2L; + private final Long storageId = 1L; + private final String name = "Be My Eyes iOS's Style Guide"; + private final String aiInstructions = "string"; + private final List languageIds = Arrays.asList("uk", "fr", "de"); + private final List projectIds = Arrays.asList(1L, 2L, 3L); + private final Boolean isShared = false; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/style-guides", HttpGet.METHOD_NAME, "api/styleguide/listStyleGuides.json"), + RequestMock.build(this.url + "/style-guides", HttpPost.METHOD_NAME, "api/styleguide/addStyleGuideRequest.json", "api/styleguide/styleGuide.json"), + RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpGet.METHOD_NAME, "api/styleguide/styleGuide.json"), + RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpDelete.METHOD_NAME), + RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpPatch.METHOD_NAME, "api/glossaries/editGlossary.json", "api/styleguide/styleGuide.json") + ); + } + + @Test + public void listStyleGuidesTest() { + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null); + assertEquals(styleGuideResponseList.getData().size(), 1); + assertEquals(styleGuideResponseList.getData().get(0).getData().getId(), styleGuideId); + assertEquals(styleGuideResponseList.getData().get(0).getData().getName(), name); + } + + @Test + public void addStyleGuideTest() { + AddStyleGuideRequest request = new AddStyleGuideRequest(); + request.setName(name); + request.setAiInstructions(aiInstructions); + request.setLanguageIds(languageIds); + request.setProjectIds(projectIds); + request.setIsShared(isShared); + request.setStorageId(storageId); + ResponseObject styleGuideResponseObject = this.getStyleGuidesApi().addStyleGuide(request); + assertEquals(styleGuideResponseObject.getData().getId(), styleGuideId); + assertEquals(styleGuideResponseObject.getData().getName(), name); + } + + @Test + public void getStyleGuideTest() { + ResponseObject styleGuideResponseObject = this.getStyleGuidesApi().getStyleGuide(styleGuideId); + assertEquals(styleGuideResponseObject.getData().getId(), styleGuideId); + assertEquals(styleGuideResponseObject.getData().getName(), name); + } + + @Test + public void deleteStyleGuideTest() { + this.getStyleGuidesApi().deleteStyleGuide(styleGuideId); + } + + @Test + public void editStyleGuideTest() { + PatchRequest request = new PatchRequest(); + request.setOp(PatchOperation.REPLACE); + request.setValue(name); + request.setPath("/name"); + ResponseObject styleGuideResponseObject = this.getStyleGuidesApi().editStyleGuide(styleGuideId, singletonList(request)); + assertEquals(styleGuideResponseObject.getData().getId(), styleGuideId); + assertEquals(styleGuideResponseObject.getData().getName(), name); + } +} diff --git a/src/test/resources/api/styleguide/addStyleGuideRequest.json b/src/test/resources/api/styleguide/addStyleGuideRequest.json new file mode 100644 index 000000000..09e268679 --- /dev/null +++ b/src/test/resources/api/styleguide/addStyleGuideRequest.json @@ -0,0 +1,8 @@ +{ + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "storageId": 1 +} diff --git a/src/test/resources/api/styleguide/listStyleGuides.json b/src/test/resources/api/styleguide/listStyleGuides.json new file mode 100644 index 000000000..ced42c504 --- /dev/null +++ b/src/test/resources/api/styleguide/listStyleGuides.json @@ -0,0 +1,20 @@ +{ + "data": [ + { + "data": { + "id": 2, + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "userId": 2, + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "createdAt": "2019-09-16T13:42:04+00:00" + } + } + ], + "pagination": { + "offset": 0, + "limit": 25 + } +} diff --git a/src/test/resources/api/styleguide/styleGuide.json b/src/test/resources/api/styleguide/styleGuide.json new file mode 100644 index 000000000..b7d1c2262 --- /dev/null +++ b/src/test/resources/api/styleguide/styleGuide.json @@ -0,0 +1,12 @@ +{ + "data": { + "id": 2, + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "userId": 2, + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "createdAt": "2019-09-16T13:42:04+00:00" + } +} From 8a32b98f0085674ff1b9863a85a5430a8463b471 Mon Sep 17 00:00:00 2001 From: Bulat Khafizov Date: Tue, 17 Mar 2026 13:45:13 +0300 Subject: [PATCH 2/4] Fixes some problems with tests --- .../com/crowdin/client/styleguide/StyleGuidesApiTest.java | 2 +- .../resources/api/styleguide/addStyleGuideRequest.json | 2 +- src/test/resources/api/styleguide/editStyleGuide.json | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/api/styleguide/editStyleGuide.json diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java index 5cdac275d..673788a14 100644 --- a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java @@ -37,7 +37,7 @@ public List getMocks() { RequestMock.build(this.url + "/style-guides", HttpPost.METHOD_NAME, "api/styleguide/addStyleGuideRequest.json", "api/styleguide/styleGuide.json"), RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpGet.METHOD_NAME, "api/styleguide/styleGuide.json"), RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpDelete.METHOD_NAME), - RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpPatch.METHOD_NAME, "api/glossaries/editGlossary.json", "api/styleguide/styleGuide.json") + RequestMock.build(this.url + "/style-guides/" + styleGuideId, HttpPatch.METHOD_NAME, "api/styleguide/editStyleGuide.json", "api/styleguide/styleGuide.json") ); } diff --git a/src/test/resources/api/styleguide/addStyleGuideRequest.json b/src/test/resources/api/styleguide/addStyleGuideRequest.json index 09e268679..7d7384a63 100644 --- a/src/test/resources/api/styleguide/addStyleGuideRequest.json +++ b/src/test/resources/api/styleguide/addStyleGuideRequest.json @@ -1,7 +1,7 @@ { "name": "Be My Eyes iOS's Style Guide", "aiInstructions": "string", - "languageId": ["uk", "fr", "de"], + "languageIds": ["uk", "fr", "de"], "projectIds": [1, 2, 3], "isShared": false, "storageId": 1 diff --git a/src/test/resources/api/styleguide/editStyleGuide.json b/src/test/resources/api/styleguide/editStyleGuide.json new file mode 100644 index 000000000..25b6dacce --- /dev/null +++ b/src/test/resources/api/styleguide/editStyleGuide.json @@ -0,0 +1,7 @@ +[ + { + "op": "replace", + "path": "/name", + "value": "Be My Eyes iOS's Style Guide" + } +] From a99bf3c103cc9ba72a4f69c548b9b10c1b9012c7 Mon Sep 17 00:00:00 2001 From: Bulat Khafizov Date: Tue, 17 Mar 2026 14:00:37 +0300 Subject: [PATCH 3/4] Added tests for list order --- ...eGuidesApiStyleGuidesOrderByIdAscTest.java | 55 +++++++++++++++++++ ...GuidesApiStyleGuidesOrderByIdDescTest.java | 44 +++++++++++++++ .../listStyleGuidesOrderByIdAsc.json | 32 +++++++++++ .../listStyleGuidesOrderByIdDesc.json | 32 +++++++++++ 4 files changed, 163 insertions(+) create mode 100644 src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java create mode 100644 src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java create mode 100644 src/test/resources/api/styleguide/listStyleGuidesOrderByIdAsc.json create mode 100644 src/test/resources/api/styleguide/listStyleGuidesOrderByIdDesc.json diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java new file mode 100644 index 000000000..e93fa1ff2 --- /dev/null +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java @@ -0,0 +1,55 @@ +package com.crowdin.client.styleguide; + +import com.crowdin.client.core.model.OrderByField; +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.core.model.SortOrder; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.styleguide.model.StyleGuide; +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 java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class StyleGuidesApiStyleGuidesOrderByIdAscTest extends TestClient { + + private final Long styleGuideId = 2L; + private final Long styleGuide2Id = 3L; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/style-guides", HttpGet.METHOD_NAME, "api/styleguide/listStyleGuidesOrderByIdAsc.json", new HashMap() {{ + put("orderBy", "id%20asc"); + }}) + ); + } + + @Test + public void listStyleGuidesTest_orderByIdNull() { + OrderByField orderById = new OrderByField(); + orderById.setFieldName("id"); + + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null, singletonList(orderById)); + assertEquals(2, styleGuideResponseList.getData().size()); + assertEquals(styleGuideId, styleGuideResponseList.getData().get(0).getData().getId()); + assertEquals(styleGuide2Id, styleGuideResponseList.getData().get(1).getData().getId()); + } + + @Test + public void listStyleGuidesTest_orderByIdAsc() { + OrderByField orderById = new OrderByField(); + orderById.setFieldName("id"); + orderById.setOrderBy(SortOrder.ASC); + + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null, singletonList(orderById)); + assertEquals(2, styleGuideResponseList.getData().size()); + assertEquals(styleGuideId, styleGuideResponseList.getData().get(0).getData().getId()); + assertEquals(styleGuide2Id, styleGuideResponseList.getData().get(1).getData().getId()); + } +} diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java new file mode 100644 index 000000000..1f9e79b95 --- /dev/null +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java @@ -0,0 +1,44 @@ +package com.crowdin.client.styleguide; + +import com.crowdin.client.core.model.OrderByField; +import com.crowdin.client.core.model.ResponseList; +import com.crowdin.client.core.model.SortOrder; +import com.crowdin.client.framework.RequestMock; +import com.crowdin.client.framework.TestClient; +import com.crowdin.client.styleguide.model.StyleGuide; +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 java.util.Collections.singletonList; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class StyleGuidesApiStyleGuidesOrderByIdDescTest extends TestClient { + + private final Long styleGuideId = 2L; + private final Long styleGuide2Id = 3L; + + @Override + public List getMocks() { + return Arrays.asList( + RequestMock.build(this.url + "/style-guides", HttpGet.METHOD_NAME, "api/styleguide/listStyleGuidesOrderByIdDesc.json", new HashMap() {{ + put("orderBy", "id%20desc"); + }}) + ); + } + + @Test + public void listStyleGuidesTest_orderByIdDesc() { + OrderByField orderById = new OrderByField(); + orderById.setFieldName("id"); + orderById.setOrderBy(SortOrder.DESC); + + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null, singletonList(orderById)); + assertEquals(2, styleGuideResponseList.getData().size()); + assertEquals(styleGuide2Id, styleGuideResponseList.getData().get(0).getData().getId()); + assertEquals(styleGuideId, styleGuideResponseList.getData().get(1).getData().getId()); + } +} diff --git a/src/test/resources/api/styleguide/listStyleGuidesOrderByIdAsc.json b/src/test/resources/api/styleguide/listStyleGuidesOrderByIdAsc.json new file mode 100644 index 000000000..40b000ac5 --- /dev/null +++ b/src/test/resources/api/styleguide/listStyleGuidesOrderByIdAsc.json @@ -0,0 +1,32 @@ +{ + "data": [ + { + "data": { + "id": 2, + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "userId": 2, + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "createdAt": "2019-09-16T13:42:04+00:00" + } + }, + { + "data": { + "id": 3, + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "userId": 2, + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "createdAt": "2019-09-16T13:42:04+00:00" + } + } + ], + "pagination": { + "offset": 0, + "limit": 25 + } +} diff --git a/src/test/resources/api/styleguide/listStyleGuidesOrderByIdDesc.json b/src/test/resources/api/styleguide/listStyleGuidesOrderByIdDesc.json new file mode 100644 index 000000000..026bc4699 --- /dev/null +++ b/src/test/resources/api/styleguide/listStyleGuidesOrderByIdDesc.json @@ -0,0 +1,32 @@ +{ + "data": [ + { + "data": { + "id": 3, + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "userId": 2, + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "createdAt": "2019-09-16T13:42:04+00:00" + } + }, + { + "data": { + "id": 2, + "name": "Be My Eyes iOS's Style Guide", + "aiInstructions": "string", + "userId": 2, + "languageId": ["uk", "fr", "de"], + "projectIds": [1, 2, 3], + "isShared": false, + "createdAt": "2019-09-16T13:42:04+00:00" + } + } + ], + "pagination": { + "offset": 0, + "limit": 25 + } +} From 5784da7bf2bd8e84b5cc59540f8bfe31da2e5f12 Mon Sep 17 00:00:00 2001 From: Bulat Khafizov Date: Tue, 17 Mar 2026 14:35:47 +0300 Subject: [PATCH 4/4] Fixed pr issues --- .../client/styleguide/StyleGuidesApi.java | 10 +++++----- ...leGuidesApiStyleGuidesOrderByIdAscTest.java | 4 ++-- ...eGuidesApiStyleGuidesOrderByIdDescTest.java | 2 +- .../client/styleguide/StyleGuidesApiTest.java | 18 +++++++++++++++++- .../api/styleguide/listStyleGuides.json | 2 +- .../resources/api/styleguide/styleGuide.json | 2 +- 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java b/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java index f0491a32b..abdd384c7 100644 --- a/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java +++ b/src/main/java/com/crowdin/client/styleguide/StyleGuidesApi.java @@ -81,12 +81,12 @@ public ResponseObject addStyleGuide(AddStyleGuideRequest request) th *
  • Enterprise API Documentation
  • * */ - public ResponseList listStyleGuide(Long userId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException { + public ResponseList listStyleGuides(Long userId, Integer limit, Integer offset) throws HttpException, HttpBadRequestException { ListStyleGuidesParams params = new ListStyleGuidesParams(); params.setUserId(userId); params.setLimit(limit); params.setOffset(offset); - return listStyleGuide(params); + return listStyleGuides(params); } /** @@ -100,16 +100,16 @@ public ResponseList listStyleGuide(Long userId, Integer limit, Integ *
  • Enterprise API Documentation
  • * */ - public ResponseList listStyleGuide(Long userId, Integer limit, Integer offset, List orderBy) throws HttpException, HttpBadRequestException { + public ResponseList listStyleGuides(Long userId, Integer limit, Integer offset, List orderBy) throws HttpException, HttpBadRequestException { ListStyleGuidesParams params = new ListStyleGuidesParams(); params.setUserId(userId); params.setLimit(limit); params.setOffset(offset); params.setOrderByList(orderBy); - return listStyleGuide(params); + return listStyleGuides(params); } - public ResponseList listStyleGuide(ListStyleGuidesParams params) { + public ResponseList listStyleGuides(ListStyleGuidesParams params) throws HttpException, HttpBadRequestException { ListStyleGuidesParams query = Optional.ofNullable(params).orElse(new ListStyleGuidesParams()); String orderBy = query.getOrderByList() != null diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java index e93fa1ff2..c00c1e329 100644 --- a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdAscTest.java @@ -35,7 +35,7 @@ public void listStyleGuidesTest_orderByIdNull() { OrderByField orderById = new OrderByField(); orderById.setFieldName("id"); - ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null, singletonList(orderById)); + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuides(null, null, null, singletonList(orderById)); assertEquals(2, styleGuideResponseList.getData().size()); assertEquals(styleGuideId, styleGuideResponseList.getData().get(0).getData().getId()); assertEquals(styleGuide2Id, styleGuideResponseList.getData().get(1).getData().getId()); @@ -47,7 +47,7 @@ public void listStyleGuidesTest_orderByIdAsc() { orderById.setFieldName("id"); orderById.setOrderBy(SortOrder.ASC); - ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null, singletonList(orderById)); + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuides(null, null, null, singletonList(orderById)); assertEquals(2, styleGuideResponseList.getData().size()); assertEquals(styleGuideId, styleGuideResponseList.getData().get(0).getData().getId()); assertEquals(styleGuide2Id, styleGuideResponseList.getData().get(1).getData().getId()); diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java index 1f9e79b95..e31ed5e23 100644 --- a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiStyleGuidesOrderByIdDescTest.java @@ -36,7 +36,7 @@ public void listStyleGuidesTest_orderByIdDesc() { orderById.setFieldName("id"); orderById.setOrderBy(SortOrder.DESC); - ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null, singletonList(orderById)); + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuides(null, null, null, singletonList(orderById)); assertEquals(2, styleGuideResponseList.getData().size()); assertEquals(styleGuide2Id, styleGuideResponseList.getData().get(0).getData().getId()); assertEquals(styleGuideId, styleGuideResponseList.getData().get(1).getData().getId()); diff --git a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java index 673788a14..ddf25ec41 100644 --- a/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java +++ b/src/test/java/com/crowdin/client/styleguide/StyleGuidesApiTest.java @@ -43,10 +43,14 @@ public List getMocks() { @Test public void listStyleGuidesTest() { - ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuide(null, null, null); + ResponseList styleGuideResponseList = this.getStyleGuidesApi().listStyleGuides(null, null, null); assertEquals(styleGuideResponseList.getData().size(), 1); assertEquals(styleGuideResponseList.getData().get(0).getData().getId(), styleGuideId); assertEquals(styleGuideResponseList.getData().get(0).getData().getName(), name); + assertEquals(styleGuideResponseList.getData().get(0).getData().getAiInstructions(), aiInstructions); + assertEquals(styleGuideResponseList.getData().get(0).getData().getIsShared(), isShared); + assertEquals(styleGuideResponseList.getData().get(0).getData().getLanguageIds(), languageIds); + assertEquals(styleGuideResponseList.getData().get(0).getData().getProjectIds(), projectIds); } @Test @@ -61,6 +65,10 @@ public void addStyleGuideTest() { ResponseObject styleGuideResponseObject = this.getStyleGuidesApi().addStyleGuide(request); assertEquals(styleGuideResponseObject.getData().getId(), styleGuideId); assertEquals(styleGuideResponseObject.getData().getName(), name); + assertEquals(styleGuideResponseObject.getData().getAiInstructions(), aiInstructions); + assertEquals(styleGuideResponseObject.getData().getIsShared(), isShared); + assertEquals(styleGuideResponseObject.getData().getLanguageIds(), languageIds); + assertEquals(styleGuideResponseObject.getData().getProjectIds(), projectIds); } @Test @@ -68,6 +76,10 @@ public void getStyleGuideTest() { ResponseObject styleGuideResponseObject = this.getStyleGuidesApi().getStyleGuide(styleGuideId); assertEquals(styleGuideResponseObject.getData().getId(), styleGuideId); assertEquals(styleGuideResponseObject.getData().getName(), name); + assertEquals(styleGuideResponseObject.getData().getAiInstructions(), aiInstructions); + assertEquals(styleGuideResponseObject.getData().getIsShared(), isShared); + assertEquals(styleGuideResponseObject.getData().getLanguageIds(), languageIds); + assertEquals(styleGuideResponseObject.getData().getProjectIds(), projectIds); } @Test @@ -84,5 +96,9 @@ public void editStyleGuideTest() { ResponseObject styleGuideResponseObject = this.getStyleGuidesApi().editStyleGuide(styleGuideId, singletonList(request)); assertEquals(styleGuideResponseObject.getData().getId(), styleGuideId); assertEquals(styleGuideResponseObject.getData().getName(), name); + assertEquals(styleGuideResponseObject.getData().getAiInstructions(), aiInstructions); + assertEquals(styleGuideResponseObject.getData().getIsShared(), isShared); + assertEquals(styleGuideResponseObject.getData().getLanguageIds(), languageIds); + assertEquals(styleGuideResponseObject.getData().getProjectIds(), projectIds); } } diff --git a/src/test/resources/api/styleguide/listStyleGuides.json b/src/test/resources/api/styleguide/listStyleGuides.json index ced42c504..a4ab3698d 100644 --- a/src/test/resources/api/styleguide/listStyleGuides.json +++ b/src/test/resources/api/styleguide/listStyleGuides.json @@ -6,7 +6,7 @@ "name": "Be My Eyes iOS's Style Guide", "aiInstructions": "string", "userId": 2, - "languageId": ["uk", "fr", "de"], + "languageIds": ["uk", "fr", "de"], "projectIds": [1, 2, 3], "isShared": false, "createdAt": "2019-09-16T13:42:04+00:00" diff --git a/src/test/resources/api/styleguide/styleGuide.json b/src/test/resources/api/styleguide/styleGuide.json index b7d1c2262..e4ba6963f 100644 --- a/src/test/resources/api/styleguide/styleGuide.json +++ b/src/test/resources/api/styleguide/styleGuide.json @@ -4,7 +4,7 @@ "name": "Be My Eyes iOS's Style Guide", "aiInstructions": "string", "userId": 2, - "languageId": ["uk", "fr", "de"], + "languageIds": ["uk", "fr", "de"], "projectIds": [1, 2, 3], "isShared": false, "createdAt": "2019-09-16T13:42:04+00:00"