From 4ce498d7b5c0c9cfa6d4b4e6ea80dd4e7fa9fb92 Mon Sep 17 00:00:00 2001 From: josdem Date: Sat, 22 Mar 2025 12:28:34 -0600 Subject: [PATCH 1/4] #83 Adding catching exception tests --- .../controller/MetadataControllerTest.java | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/test/java/com/josdem/jmetadata/controller/MetadataControllerTest.java b/src/test/java/com/josdem/jmetadata/controller/MetadataControllerTest.java index 1c25bed..6e5ba8a 100644 --- a/src/test/java/com/josdem/jmetadata/controller/MetadataControllerTest.java +++ b/src/test/java/com/josdem/jmetadata/controller/MetadataControllerTest.java @@ -20,10 +20,12 @@ import static org.mockito.Mockito.when; import com.josdem.jmetadata.event.Events; +import com.josdem.jmetadata.exception.TooMuchFilesException; import com.josdem.jmetadata.model.Metadata; import com.josdem.jmetadata.model.Model; import com.josdem.jmetadata.service.MetadataService; import java.io.File; +import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.Properties; @@ -42,6 +44,7 @@ @Slf4j class MetadataControllerTest { + public static final String MAX_FILES_ALLOWED = "50"; private MetadataController metadataController; @Mock private Properties properties; @@ -129,4 +132,51 @@ private void setFileChooserExpectations() { when(fileChooser.getSelectedFile()).thenReturn(file); when(configurator.getControlEngine()).thenReturn(controlEngine); } + + @Test + @DisplayName("catching IOException") + void shouldCatchIOException(TestInfo testInfo) throws Exception { + log.info(testInfo.getDisplayName()); + + setFileChooserExpectations(); + when(file.exists()).thenReturn(true); + when(metadataService.extractMetadata(file)).thenThrow(new IOException("IO Exception")); + + metadataController.getMetadata(); + + verify(controlEngine).fireEvent(Events.OPEN); + } + + @Test + @DisplayName("catching illegal argument exception") + void shouldCatchIllegalArgumentException(TestInfo testInfo) throws Exception { + log.info(testInfo.getDisplayName()); + + setFileChooserExpectations(); + when(file.exists()).thenReturn(true); + when(metadataService.extractMetadata(file)) + .thenThrow(new IllegalArgumentException("Illegal Argument Exception")); + + metadataController.getMetadata(); + + verify(controlEngine).fireEvent(Events.OPEN); + } + + @Test + @DisplayName("catching too much files exception") + void shouldCatchTooMuchFilesException(TestInfo testInfo) throws Exception { + log.info(testInfo.getDisplayName()); + + setFileChooserExpectations(); + when(file.exists()).thenReturn(true); + when(properties.getProperty("max.files.allowed")).thenReturn(MAX_FILES_ALLOWED); + when(metadataService.extractMetadata(file)) + .thenThrow(new TooMuchFilesException(Integer.valueOf(MAX_FILES_ALLOWED))); + + metadataController.getMetadata(); + + verify(controlEngine) + .fireEvent(Events.DIRECTORY_SELECTED, new ValueEvent<>(file.getAbsolutePath())); + verify(controlEngine).fireEvent(Events.MUCH_FILES_LOADED, new ValueEvent<>(MAX_FILES_ALLOWED)); + } } From 07ec8db4798dc9c4cc49c8488b80413a2cf6ccc4 Mon Sep 17 00:00:00 2001 From: josdem Date: Sat, 22 Mar 2025 12:47:43 -0600 Subject: [PATCH 2/4] #83 Validating not able to complete using MusicBrainz case --- .../jmetadata/controller/CompleteControllerTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java b/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java index 607e31d..e8e8779 100644 --- a/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java +++ b/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java @@ -151,4 +151,13 @@ void shouldNotCompleteMetadata() { controller.completeLastFmMetadata(metadataList); verify(coverArtService, never()).completeLastFM(metadata); } + + @Test + @DisplayName("not completing metadata with MusicBrainz service") + void shouldNotCompleteMetadataWithMusicBrainz() { + var metadataList = List.of(metadata); + when(musicBrainzCompleteServiceAdapter.canComplete(metadataList)).thenReturn(false); + + assertEquals(ActionResult.READY, controller.completeAlbumMetadata(metadataList)); + } } From ec473bd1736a8890e579a5ffc627f499e16aba73 Mon Sep 17 00:00:00 2001 From: josdem Date: Sat, 22 Mar 2025 13:12:38 -0600 Subject: [PATCH 3/4] #83 Adding missing tests in complete controller --- .../controller/CompleteController.java | 2 +- .../controller/CompleteControllerTest.java | 30 +++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/josdem/jmetadata/controller/CompleteController.java b/src/main/java/com/josdem/jmetadata/controller/CompleteController.java index 9569cd6..cc0e3a0 100644 --- a/src/main/java/com/josdem/jmetadata/controller/CompleteController.java +++ b/src/main/java/com/josdem/jmetadata/controller/CompleteController.java @@ -54,7 +54,7 @@ public class CompleteController { private final MusicBrainzCompleteServiceAdapter musicBrainzCompleteServiceAdapter; private final LastFMCompleteServiceAdapter lastFMCompleteServiceAdapter; - private RestService restService; + protected RestService restService; private CoverArtRestService coverArtRestService; @PostConstruct diff --git a/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java b/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java index e8e8779..445e243 100644 --- a/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java +++ b/src/test/java/com/josdem/jmetadata/controller/CompleteControllerTest.java @@ -17,6 +17,7 @@ package com.josdem.jmetadata.controller; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -28,6 +29,7 @@ import com.josdem.jmetadata.model.Metadata; import com.josdem.jmetadata.service.LastfmService; import com.josdem.jmetadata.service.MusicBrainzService; +import com.josdem.jmetadata.service.RestService; import com.josdem.jmetadata.service.impl.LastFMCompleteServiceAdapter; import com.josdem.jmetadata.service.impl.MusicBrainzCompleteServiceAdapter; import java.awt.Image; @@ -40,6 +42,8 @@ import org.junit.jupiter.api.TestInfo; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import retrofit2.Call; +import retrofit2.Response; @Slf4j class CompleteControllerTest { @@ -56,6 +60,7 @@ class CompleteControllerTest { @Mock private Image imageIcon; @Mock private LastFMCompleteServiceAdapter lastFMCompleteServiceAdapter; @Mock private MusicBrainzCompleteServiceAdapter musicBrainzCompleteServiceAdapter; + @Mock private RestService restService; private String artist = "Dave Deen"; private String title = "Footprints (Original Mix)"; @@ -88,6 +93,7 @@ void setup() throws Exception { musicBrainzService, musicBrainzCompleteServiceAdapter, lastFMCompleteServiceAdapter); + controller.restService = restService; } @Test @@ -136,7 +142,8 @@ void shouldNotUpdateMetadata(TestInfo testInfo) { @Test @DisplayName("completing metadata with LastFM service") - void shouldCompleteMetadata() { + void shouldCompleteMetadata(TestInfo testInfo) { + log.info(testInfo.getDisplayName()); var metadataList = List.of(metadata); when(lastFMCompleteServiceAdapter.canComplete(metadataList)).thenReturn(true); controller.completeLastFmMetadata(metadataList); @@ -145,7 +152,8 @@ void shouldCompleteMetadata() { @Test @DisplayName("not completing metadata with LastFM service") - void shouldNotCompleteMetadata() { + void shouldNotCompleteMetadata(TestInfo testInfo) { + log.info(testInfo.getDisplayName()); var metadataList = List.of(metadata); when(lastFMCompleteServiceAdapter.canComplete(metadataList)).thenReturn(false); controller.completeLastFmMetadata(metadataList); @@ -154,10 +162,26 @@ void shouldNotCompleteMetadata() { @Test @DisplayName("not completing metadata with MusicBrainz service") - void shouldNotCompleteMetadataWithMusicBrainz() { + void shouldNotCompleteMetadataWithMusicBrainz(TestInfo testInfo) { + log.info(testInfo.getDisplayName()); var metadataList = List.of(metadata); when(musicBrainzCompleteServiceAdapter.canComplete(metadataList)).thenReturn(false); assertEquals(ActionResult.READY, controller.completeAlbumMetadata(metadataList)); } + + @Test + @DisplayName("getting releases from MusicBrainz service") + void shouldGetReleasesFromMusicBrainz(TestInfo testInfo) throws Exception { + log.info(testInfo.getDisplayName()); + var metadataList = List.of(metadata); + var call = mock(Call.class); + var response = mock(Response.class); + + when(call.execute()).thenReturn(response); + when(musicBrainzCompleteServiceAdapter.canComplete(metadataList)).thenReturn(true); + when(restService.getReleases(album + " AND " + "artist:" + artist)).thenReturn(call); + + assertEquals(ActionResult.NEW, controller.completeAlbumMetadata(metadataList)); + } } From 3ae7c563b39b18ab92311d2d76d6f19bb5c9df2b Mon Sep 17 00:00:00 2001 From: josdem Date: Sat, 22 Mar 2025 13:13:25 -0600 Subject: [PATCH 4/4] #83 Setting release version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6899e3b..ae7add6 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { } group = 'com.josdem.jmetadata' -version = '1.3.10' +version = '1.4.0' java { toolchain {