|
1 | 1 | package com.smartling.api.files.v2; |
2 | 2 |
|
3 | 3 | import com.github.tomakehurst.wiremock.junit.WireMockRule; |
| 4 | +import com.smartling.api.files.v2.pto.DownloadMultipleFilesTranslationsPTO; |
4 | 5 | import com.smartling.api.files.v2.pto.DownloadTranslationPTO; |
| 6 | +import com.smartling.api.files.v2.pto.FileFilter; |
5 | 7 | import com.smartling.api.files.v2.pto.FileLocaleLastModifiedPTO; |
| 8 | +import com.smartling.api.files.v2.pto.FileLocalePTO; |
6 | 9 | import com.smartling.api.files.v2.pto.FileLocaleStatusResponse; |
| 10 | +import com.smartling.api.files.v2.pto.FileNameMode; |
7 | 11 | import com.smartling.api.files.v2.pto.GetFileLastModifiedPTO; |
| 12 | +import com.smartling.api.files.v2.pto.LocaleMode; |
8 | 13 | import com.smartling.api.files.v2.pto.UploadFilePTO; |
9 | 14 | import com.smartling.api.files.v2.pto.UploadFileResponse; |
10 | 15 | import com.smartling.api.files.v2.resteasy.ext.TranslatedFileMultipart; |
|
19 | 24 | import java.io.ByteArrayInputStream; |
20 | 25 | import java.io.InputStream; |
21 | 26 | import java.net.URL; |
22 | | -import java.util.Arrays; |
23 | 27 | import java.util.HashMap; |
24 | 28 | import java.util.Map; |
25 | 29 | import java.util.UUID; |
26 | 30 |
|
27 | 31 | import static com.github.tomakehurst.wiremock.client.WireMock.aMultipart; |
28 | 32 | import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; |
29 | 33 | import static com.github.tomakehurst.wiremock.client.WireMock.equalTo; |
| 34 | +import static com.github.tomakehurst.wiremock.client.WireMock.equalToJson; |
30 | 35 | import static com.github.tomakehurst.wiremock.client.WireMock.get; |
31 | 36 | import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; |
32 | 37 | import static com.github.tomakehurst.wiremock.client.WireMock.post; |
33 | 38 | import static com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor; |
34 | 39 | import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; |
35 | 40 | import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo; |
36 | 41 | import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching; |
37 | | -import static com.smartling.api.v2.tests.wiremock.SmartlingWireMock.success; |
38 | 42 | import static com.smartling.api.files.v2.pto.FileType.JSON; |
39 | 43 | import static com.smartling.api.files.v2.pto.RetrievalType.PUBLISHED; |
| 44 | +import static com.smartling.api.v2.tests.wiremock.SmartlingWireMock.postJson; |
| 45 | +import static com.smartling.api.v2.tests.wiremock.SmartlingWireMock.success; |
40 | 46 | import static java.nio.charset.StandardCharsets.UTF_8; |
| 47 | +import static java.util.Arrays.asList; |
41 | 48 | import static org.junit.Assert.assertEquals; |
42 | 49 |
|
43 | 50 | public class FilesApiIntTest |
@@ -153,7 +160,7 @@ public void shouldUploadFile() throws Exception |
153 | 160 | .fileUri(FILE_URI) |
154 | 161 | .file(new ByteArrayInputStream(rawBody.getBytes())) |
155 | 162 | .directives(directives) |
156 | | - .localeIdsToAuthorize(Arrays.asList("de-DE", "fr")) |
| 163 | + .localeIdsToAuthorize(asList("de-DE", "fr")) |
157 | 164 | .build()); |
158 | 165 |
|
159 | 166 | assertEquals(uploadFileResponse.getFileUri(), FILE_URI); |
@@ -260,4 +267,60 @@ public void shouldGetFileLocaleStatus() throws Exception |
260 | 267 | .withQueryParam("fileUri", equalTo(FILE_URI)) |
261 | 268 | ); |
262 | 269 | } |
| 270 | + |
| 271 | + @Test |
| 272 | + public void shouldRetrieveMultipleFilesTranslations() throws Exception |
| 273 | + { |
| 274 | + final String rawResponseBody = UUID.randomUUID().toString(); |
| 275 | + |
| 276 | + final FileLocalePTO firstFileLocalePTO = FileLocalePTO.builder() |
| 277 | + .fileUri(FILE_URI + "1") |
| 278 | + .localeIds(asList("de-DE", "fr")) |
| 279 | + .build(); |
| 280 | + |
| 281 | + final FileLocalePTO secondFileLocalePTO = FileLocalePTO.builder() |
| 282 | + .fileUri(FILE_URI + "2") |
| 283 | + .localeIds(asList("es-ES", "uk-UA", "zh-CN")) |
| 284 | + .build(); |
| 285 | + |
| 286 | + final DownloadMultipleFilesTranslationsPTO requestBody = DownloadMultipleFilesTranslationsPTO.builder() |
| 287 | + .files(asList(firstFileLocalePTO, secondFileLocalePTO)) |
| 288 | + .retrievalType(PUBLISHED) |
| 289 | + .includeOriginalStrings(true) |
| 290 | + .fileNameMode(FileNameMode.TRIM_LEADING) |
| 291 | + .localeMode(LocaleMode.LOCALE_IN_NAME) |
| 292 | + .zipFileName("archive.zip") |
| 293 | + .fileFilter(FileFilter.PUBLISHED_FILES_ONLY) |
| 294 | + .build(); |
| 295 | + |
| 296 | + smartlingApi.stubFor(postJson(urlPathMatching("/files-api/v2/projects/.+/files/zip")) |
| 297 | + .withRequestBody(equalToJson("{\n" + |
| 298 | + " \"files\": [{\n" + |
| 299 | + " \"fileUri\": \"" + FILE_URI + "1\",\n" + |
| 300 | + " \"localeIds\": [\"de-DE\", \"fr\"]\n" + |
| 301 | + " },{\n" + |
| 302 | + " \"fileUri\": \"" + FILE_URI + "2\",\n" + |
| 303 | + " \"localeIds\": [\"es-ES\", \"uk-UA\", \"zh-CN\"]\n" + |
| 304 | + " }],\n" + |
| 305 | + " \"retrievalType\": \"PUBLISHED\",\n" + |
| 306 | + " \"includeOriginalStrings\": true,\n" + |
| 307 | + " \"fileNameMode\": \"TRIM_LEADING\",\n" + |
| 308 | + " \"localeMode\": \"LOCALE_IN_NAME\",\n" + |
| 309 | + " \"zipFileName\": \"archive.zip\",\n" + |
| 310 | + " \"fileFilter\": \"PUBLISHED_FILES_ONLY\"\n" + |
| 311 | + "}") |
| 312 | + ) |
| 313 | + .willReturn(aResponse() |
| 314 | + .withHeader("Content-Type", "application/octet-stream") |
| 315 | + .withBody(rawResponseBody) |
| 316 | + ) |
| 317 | + ); |
| 318 | + |
| 319 | + final InputStream response = filesApi.downloadMultipleFileTranslations( |
| 320 | + PROJECT_ID, |
| 321 | + requestBody |
| 322 | + ); |
| 323 | + |
| 324 | + assertEquals(IOUtils.toString(response, UTF_8), rawResponseBody); |
| 325 | + } |
263 | 326 | } |
0 commit comments