|
22 | 22 | import static org.mockito.ArgumentMatchers.any; |
23 | 23 | import static org.mockito.ArgumentMatchers.eq; |
24 | 24 | import static org.mockito.Mockito.mock; |
| 25 | +import static org.mockito.Mockito.times; |
25 | 26 | import static org.mockito.Mockito.verify; |
26 | 27 | import static org.mockito.Mockito.when; |
27 | 28 |
|
|
30 | 31 | import com.google.common.collect.Lists; |
31 | 32 | import com.google.protobuf.util.Durations; |
32 | 33 | import com.google.rpc.Code; |
| 34 | +import java.io.IOException; |
33 | 35 | import java.util.UUID; |
34 | 36 | import org.datatransferproject.api.launcher.Monitor; |
35 | 37 | import org.datatransferproject.datatransfer.google.common.GoogleCredentialFactory; |
@@ -284,6 +286,87 @@ public void importPlaylistItemsSkippableFauilre() throws Exception { |
284 | 286 | assertThat(executor.getErrors()).isEmpty(); |
285 | 287 | } |
286 | 288 |
|
| 289 | + @Test |
| 290 | + void importSingleRelease() throws Exception { |
| 291 | + // Set up |
| 292 | + MusicRelease release = new MusicRelease("icpndevtest", "test-release", null); |
| 293 | + ImmutableList<MusicRelease> releases = ImmutableList.of(release); |
| 294 | + MusicContainerResource data = new MusicContainerResource(null, null, null, releases); |
| 295 | + |
| 296 | + GoogleRelease googleRelease = new GoogleRelease(); |
| 297 | + googleRelease.setIcpn("icpndevtest"); |
| 298 | + googleRelease.setReleaseTitle("test-release"); |
| 299 | + when(googleMusicHttpApi.createRelease(any(GoogleRelease.class))) |
| 300 | + .thenReturn(googleRelease); |
| 301 | + |
| 302 | + // Run test |
| 303 | + ImportResult importResult = googleMusicImporter.importItem(uuid, executor, null, data); |
| 304 | + |
| 305 | + // Check results |
| 306 | + ArgumentCaptor<GoogleRelease> releaseArgumentCaptor = |
| 307 | + ArgumentCaptor.forClass(GoogleRelease.class); |
| 308 | + verify(googleMusicHttpApi) |
| 309 | + .createRelease(releaseArgumentCaptor.capture()); |
| 310 | + assertEquals("test-release", releaseArgumentCaptor.getValue().getTitle()); |
| 311 | + assertTrue(executor.isKeyCached("test-release")); |
| 312 | + assertEquals(importResult, ImportResult.OK); |
| 313 | + } |
| 314 | + |
| 315 | + @Test |
| 316 | + void importMultipleReleases() throws Exception { |
| 317 | + // Set up |
| 318 | + MusicRelease release1 = new MusicRelease("icpndevtest1", "test-release1", null); |
| 319 | + MusicRelease release2 = new MusicRelease("icpndevtest2", "test-release2", null); |
| 320 | + MusicRelease release3 = new MusicRelease("icpndevtest3", "test-release3", null); |
| 321 | + |
| 322 | + ImmutableList<MusicRelease> releases = ImmutableList.of(release1, release2, release3); |
| 323 | + MusicContainerResource data = new MusicContainerResource(null, null, null, releases); |
| 324 | + |
| 325 | + GoogleRelease googleRelease = new GoogleRelease(); |
| 326 | + googleRelease.setIcpn("icpndevtest"); |
| 327 | + googleRelease.setReleaseTitle("test-release"); |
| 328 | + when(googleMusicHttpApi.createRelease(any(GoogleRelease.class))) |
| 329 | + .thenReturn(googleRelease); |
| 330 | + |
| 331 | + // Run test |
| 332 | + ImportResult importResult = googleMusicImporter.importItem(uuid, executor, null, data); |
| 333 | + |
| 334 | + // Check results |
| 335 | + verify(googleMusicHttpApi,times(3)) |
| 336 | + .createRelease(any(GoogleRelease.class)); |
| 337 | + assertTrue(executor.isKeyCached("test-release3")); |
| 338 | + assertEquals(importResult, ImportResult.OK); |
| 339 | + } |
| 340 | + |
| 341 | + @Test |
| 342 | + void importMultipleReleasesWithOneFailure() throws Exception { |
| 343 | + // Set up |
| 344 | + MusicRelease release1 = new MusicRelease("icpndevtest1", "test-release1", null); |
| 345 | + MusicRelease release2 = new MusicRelease("icpndevtest2", "test-release2", null); |
| 346 | + MusicRelease release3 = new MusicRelease("icpndevtest3", "test-release3", null); |
| 347 | + |
| 348 | + ImmutableList<MusicRelease> releases = ImmutableList.of(release1, release2, release3); |
| 349 | + MusicContainerResource data = new MusicContainerResource(null, null, null, releases); |
| 350 | + |
| 351 | + GoogleRelease googleRelease = new GoogleRelease(); |
| 352 | + googleRelease.setIcpn("icpndevtest"); |
| 353 | + googleRelease.setReleaseTitle("test-release"); |
| 354 | + when(googleMusicHttpApi.createRelease(any(GoogleRelease.class))) |
| 355 | + .thenReturn(googleRelease) |
| 356 | + .thenThrow(new IOException("Not found")) |
| 357 | + .thenReturn(googleRelease); |
| 358 | + |
| 359 | + // Run test |
| 360 | + ImportResult importResult = googleMusicImporter.importItem(uuid, executor, null, data); |
| 361 | + |
| 362 | + // Check results |
| 363 | + verify(googleMusicHttpApi,times(3)) |
| 364 | + .createRelease(any(GoogleRelease.class)); |
| 365 | + assertTrue(executor.isKeyCached("test-release3")); |
| 366 | + assertEquals(1, executor.getErrors().size()); |
| 367 | + assertEquals(importResult, ImportResult.OK); |
| 368 | + } |
| 369 | + |
287 | 370 | private void importPlaylistSetUp(String playlistId, String playlistTitle) |
288 | 371 | throws Exception { |
289 | 372 | MusicPlaylist playlist = new MusicPlaylist(playlistId, playlistTitle, null, null, null); |
|
0 commit comments