Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ plugins {
}

group = 'com.josdem.jmetadata'
version = '1.3.10'
version = '1.4.0'

java {
toolchain {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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 {
Expand All @@ -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)";
Expand Down Expand Up @@ -88,6 +93,7 @@ void setup() throws Exception {
musicBrainzService,
musicBrainzCompleteServiceAdapter,
lastFMCompleteServiceAdapter);
controller.restService = restService;
}

@Test
Expand Down Expand Up @@ -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);
Expand All @@ -145,10 +152,36 @@ 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);
verify(coverArtService, never()).completeLastFM(metadata);
}

@Test
@DisplayName("not completing metadata with MusicBrainz service")
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));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -42,6 +44,7 @@
@Slf4j
class MetadataControllerTest {

public static final String MAX_FILES_ALLOWED = "50";
private MetadataController metadataController;

@Mock private Properties properties;
Expand Down Expand Up @@ -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));
}
}