From 98b36b3afa9660f6c4914b4374a350d5f6fbc648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9DAndrei=E2=80=9D?= <”andrei.chirila07121999@gmail.com”> Date: Wed, 22 Jan 2025 02:37:51 +0200 Subject: [PATCH] Add support for user report settings template * Added methods to handle User Report Settings Templates endpoints, reusing logic from existing Report Settings Templates methods. * Implemented tests to ensure the correct functionality of the newly added methods. * Created 4 JSON files for User Report Settings Templates, following the structure of existing Report Settings Templates. --- .../client/reports/ReportsApiTest.java | 50 ++++++++++++++++++- .../addUserReportSettingsTemplate.json | 29 +++++++++++ .../editUserReportSettingsTemplate.json | 7 +++ .../listUserReportSettingsTemplate.json | 40 +++++++++++++++ .../reports/userReportSettingsTemplate.json | 34 +++++++++++++ 5 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/api/reports/addUserReportSettingsTemplate.json create mode 100644 src/test/resources/api/reports/editUserReportSettingsTemplate.json create mode 100644 src/test/resources/api/reports/listUserReportSettingsTemplate.json create mode 100644 src/test/resources/api/reports/userReportSettingsTemplate.json diff --git a/src/test/java/com/crowdin/client/reports/ReportsApiTest.java b/src/test/java/com/crowdin/client/reports/ReportsApiTest.java index 04af0cbf..f749e89a 100644 --- a/src/test/java/com/crowdin/client/reports/ReportsApiTest.java +++ b/src/test/java/com/crowdin/client/reports/ReportsApiTest.java @@ -72,7 +72,12 @@ public List getMocks() { RequestMock.build(this.url + "/users/" + userId + "/reports/archives/" + archiveId, HttpDelete.METHOD_NAME), RequestMock.build(this.url + "/users/" + userId + "/reports/archives/" + archiveId + "/exports", HttpPost.METHOD_NAME, "api/reports/exportReportArchiveReques.json", "api/reports/reportGenerationStatus.json"), RequestMock.build(this.url + "/users/" + userId + "/reports/archives/" + archiveId + "/exports/" + exportId, HttpGet.METHOD_NAME, "api/reports/reportGenerationStatus.json"), - RequestMock.build(this.url + "/users/" + userId + "/reports/archives" + archiveId + "/exports/" + exportId + "/download", HttpGet.METHOD_NAME, "api/reports/downloadLink.json")); + RequestMock.build(this.url + "/users/" + userId + "/reports/archives" + archiveId + "/exports/" + exportId + "/download", HttpGet.METHOD_NAME, "api/reports/downloadLink.json"), + RequestMock.build(this.url + "/users/" + userId + "/reports/settings-templates", HttpGet.METHOD_NAME, "api/reports/listUserReportSettingsTemplate.json"), + RequestMock.build(this.url + "/users/" + userId + "/reports/settings-templates", HttpPost.METHOD_NAME, "api/reports/addUserReportSettingsTemplate.json", "api/reports/userReportSettingsTemplate.json"), + RequestMock.build(this.url + "/users/" + userId + "/reports/settings-templates/" + reportSettingsTemplateId, HttpGet.METHOD_NAME, "api/reports/userReportSettingsTemplate.json"), + RequestMock.build(this.url + "/users/" + userId + "/reports/settings-templates/" + reportSettingsTemplateId, HttpPatch.METHOD_NAME, "api/reports/editUserReportSettingsTemplate.json", "api/reports/userReportSettingsTemplate.json"), + RequestMock.build(this.url + "/users/" + userId + "/reports/settings-templates/" + reportSettingsTemplateId, HttpDelete.METHOD_NAME)); } private ReportSettingsTemplate createSettingsTemplate() { @@ -227,6 +232,49 @@ public void deleteReportSettingsTemplateTest() { this.getReportsApi().deleteReportSettingsTemplate(projectId, reportSettingsTemplateId); } + @Test + public void listUserReportSettingsTemplateTest() { + ResponseList userReportSettingsTemplateResponseList = this.getReportsApi().listUserReportSettingsTemplate(userId, null, null); + assertEquals(userReportSettingsTemplateResponseList.getData().size(), 1); + assertEquals(userReportSettingsTemplateResponseList.getData().get(0).getData().getId(), userId); + assertEquals(userReportSettingsTemplateResponseList.getData().get(0).getData().getName(), name); + } + + @Test + public void addUserReportSettingsTemplateTest() { + ReportSettingsTemplate request = createSettingsTemplate(); + request.setIsPublic(null); + ResponseObject userReportSettingsTemplateResponseObject = this.getReportsApi().addUserReportSettingsTemplate(userId, request); + ReportSettingsTemplate response = userReportSettingsTemplateResponseObject.getData(); + assertEquals(request.getName(), response.getName()); + assertEquals(request.getCurrency(), response.getCurrency()); + assertEquals(request.getUnit(), response.getUnit()); + assertEquals(request.getConfig(), response.getConfig()); + } + + @Test + public void getUserReportSettingsTemplateTest() { + ResponseObject responseObject = this.getReportsApi().getUserReportSettingsTemplate(userId, reportSettingsTemplateId); + assertEquals(responseObject.getData().getId(), userId); + assertEquals(responseObject.getData().getName(), name); + } + + @Test + public void editUserReportSettingsTemplateTest() { + PatchRequest request = new PatchRequest(); + request.setOp(PatchOperation.REPLACE); + request.setValue(name); + request.setPath("name"); + ResponseObject responseObject = this.getReportsApi().editUserReportSettingsTemplate(userId, reportSettingsTemplateId, singletonList(request)); + assertEquals(responseObject.getData().getId(), userId); + assertEquals(responseObject.getData().getName(), name); + } + + @Test + public void deleteUserReportSettingsTemplateTest() { + this.getReportsApi().deleteUserReportSettingsTemplate(userId, reportSettingsTemplateId); + } + @Test public void getListReportArchivesTest() { ResponseList responseObject = this.getReportsApi().listReportArchives(userId, null, null, null, null); diff --git a/src/test/resources/api/reports/addUserReportSettingsTemplate.json b/src/test/resources/api/reports/addUserReportSettingsTemplate.json new file mode 100644 index 00000000..5e0fde7b --- /dev/null +++ b/src/test/resources/api/reports/addUserReportSettingsTemplate.json @@ -0,0 +1,29 @@ +{ + "name": "my report template", + "currency": "USD", + "unit": "strings", + "config": { + "regularRates": [ + { + "mode": "no_match", + "value": 0.1 + } + ], + "individualRates": [ + { + "languageIds": [ + "uk" + ], + "userIds": [ + 20 + ], + "rates": [ + { + "mode": "tm_match", + "value": 0.1 + } + ] + } + ] + } +} \ No newline at end of file diff --git a/src/test/resources/api/reports/editUserReportSettingsTemplate.json b/src/test/resources/api/reports/editUserReportSettingsTemplate.json new file mode 100644 index 00000000..e7d04753 --- /dev/null +++ b/src/test/resources/api/reports/editUserReportSettingsTemplate.json @@ -0,0 +1,7 @@ +[ + { + "op": "replace", + "path": "name", + "value": "my report template" + } +] \ No newline at end of file diff --git a/src/test/resources/api/reports/listUserReportSettingsTemplate.json b/src/test/resources/api/reports/listUserReportSettingsTemplate.json new file mode 100644 index 00000000..31bfaee3 --- /dev/null +++ b/src/test/resources/api/reports/listUserReportSettingsTemplate.json @@ -0,0 +1,40 @@ +{ + "data": [ + { + "data": { + "id": 1, + "name": "my report template", + "currency": "USD", + "unit": "words", + "config": { + "regularRates": [ + { + "mode": "tm_match", + "value": 0.1 + } + ], + "individualRates": [ + { + "languageIds": [ + "uk" + ], + "userIds": [], + "rates": [ + { + "mode": "tm_match", + "value": 0.1 + } + ] + } + ] + }, + "createdAt": "2019-09-23T11:26:54+00:00", + "updatedAt": "2019-09-23T11:26:54+00:00" + } + } + ], + "pagination": { + "offset": 0, + "limit": 25 + } +} \ No newline at end of file diff --git a/src/test/resources/api/reports/userReportSettingsTemplate.json b/src/test/resources/api/reports/userReportSettingsTemplate.json new file mode 100644 index 00000000..a5315cab --- /dev/null +++ b/src/test/resources/api/reports/userReportSettingsTemplate.json @@ -0,0 +1,34 @@ +{ + "data": { + "id": 1, + "name": "my report template", + "currency": "USD", + "unit": "strings", + "config": { + "regularRates": [ + { + "mode": "no_match", + "value": 0.1 + } + ], + "individualRates": [ + { + "languageIds": [ + "uk" + ], + "userIds": [ + 20 + ], + "rates": [ + { + "mode": "tm_match", + "value": 0.1 + } + ] + } + ] + }, + "createdAt": "2019-09-23T11:26:54+00:00", + "updatedAt": "2019-09-23T11:26:54+00:00" + } +} \ No newline at end of file