diff --git a/src/main/java/lan/dk/podcastserver/manager/worker/downloader/AbstractDownloader.java b/src/main/java/lan/dk/podcastserver/manager/worker/downloader/AbstractDownloader.java index 4750653b4..d0450ce8e 100644 --- a/src/main/java/lan/dk/podcastserver/manager/worker/downloader/AbstractDownloader.java +++ b/src/main/java/lan/dk/podcastserver/manager/worker/downloader/AbstractDownloader.java @@ -144,9 +144,10 @@ public File getTagetFile (Item item) { } logger.info("Doublon sur le fichier en lien avec {} - {}, {}", item.getPodcast().getTitle(), item.getId(), item.getTitle() ); - return Files.createTempFile(finalFile.getParent(), FilenameUtils.getBaseName(getItemUrl()) + "-", "." + FilenameUtils.getExtension(getItemUrl()) + temporaryExtension).toFile(); + String fileName = finalFile.getFileName().toString(); + return Files.createTempFile(finalFile.getParent(), FilenameUtils.getBaseName(fileName) + "-", "." + FilenameUtils.getExtension(fileName) + temporaryExtension).toFile(); } catch (IOException e) { - logger.error("Erreur lors du renommage d'un doublon", e); + logger.error("Error during creation of target file", e); stopDownload(); return null; } diff --git a/src/test/java/lan/dk/podcastserver/manager/worker/downloader/HTTPDownloaderTest.java b/src/test/java/lan/dk/podcastserver/manager/worker/downloader/HTTPDownloaderTest.java index 0e61534aa..4cb717991 100644 --- a/src/test/java/lan/dk/podcastserver/manager/worker/downloader/HTTPDownloaderTest.java +++ b/src/test/java/lan/dk/podcastserver/manager/worker/downloader/HTTPDownloaderTest.java @@ -331,6 +331,7 @@ public void should_handle_exception_during_move() throws MalformedURLException { public void should_get_the_same_target_file_each_call() throws MalformedURLException { /* Given */ httpDownloader.setItem(item); + when(itemDownloadManager.getRootfolder()).thenReturn(ROOT_FOLDER); /* When */ httpDownloader.target = httpDownloader.getTagetFile(item); @@ -355,4 +356,36 @@ public void should_handle_duplicate_on_file_name() throws IOException { /* Then */ assertThat(targetFile).isNotEqualTo(Paths.get(ROOT_FOLDER, podcast.getTitle(), "file.mp4" + TEMPORARY_EXTENSION).toFile()); } + + @Test + public void should_handle_error_during_creation_of_temp_file() throws IOException { + /* Given */ + podcast.setTitle("bin"); + httpDownloader.setItem(item.setUrl("http://foo.bar.com/bash")); + + when(itemDownloadManager.getRootfolder()).thenReturn("/"); + when(podcastRepository.findOne(eq(podcast.getId()))).thenReturn(podcast); + when(itemRepository.save(any(Item.class))).then(i -> i.getArguments()[0]); + + /* When */ + File targetFile = httpDownloader.getTagetFile(item); + + /* Then */ + assertThat(item.getStatus()).isEqualTo(Status.STOPPED); + } + + @Test + public void should_save_sync_with_podcast() { + /* Given */ + httpDownloader.setItem(item); + + doThrow(RuntimeException.class).when(podcastRepository).findOne(anyInt()); + + /* When */ + httpDownloader.saveSyncWithPodcast(); + + /* Then */ + assertThat(httpDownloader.getItem()).isSameAs(item); + verify(itemRepository, never()).save(any(Item.class)); + } } \ No newline at end of file