You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
3.6 KiB
126 lines
3.6 KiB
package org.airsonic.player.service;
|
|
|
|
import org.airsonic.player.domain.*;
|
|
import org.airsonic.player.service.jukebox.JavaPlayerFactory;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
import org.junit.runner.RunWith;
|
|
import org.mockito.Mock;
|
|
import org.mockito.runners.MockitoJUnitRunner;
|
|
|
|
import static org.mockito.Mockito.*;
|
|
|
|
@RunWith(MockitoJUnitRunner.class)
|
|
public class JukeboxJavaServiceUnitTest {
|
|
|
|
private static final String USER_NAME = "admin";
|
|
|
|
private JukeboxJavaService service;
|
|
@Mock
|
|
private Player airsonicPlayer;
|
|
@Mock
|
|
private AudioScrobblerService audioScrobblerService;
|
|
@Mock
|
|
private StatusService statusService;
|
|
@Mock
|
|
private SecurityService securityService;
|
|
@Mock
|
|
private MediaFileService mediaFileService;
|
|
@Mock
|
|
private JavaPlayerFactory javaPlayerFactory;
|
|
@Mock
|
|
private com.github.biconou.AudioPlayer.api.Player player;
|
|
@Mock
|
|
private User user;
|
|
@Mock
|
|
private PlayQueue playQueue;
|
|
@Mock
|
|
private MediaFile mediaFile;
|
|
|
|
|
|
@Before
|
|
public void setup() {
|
|
service = new JukeboxJavaService(audioScrobblerService, statusService, securityService, mediaFileService, javaPlayerFactory);
|
|
when(airsonicPlayer.getTechnology()).thenReturn(PlayerTechnology.JAVA_JUKEBOX);
|
|
when(airsonicPlayer.getUsername()).thenReturn(USER_NAME);
|
|
when(javaPlayerFactory.createJavaPlayer()).thenReturn(player);
|
|
when(securityService.getUserByName(USER_NAME)).thenReturn(user);
|
|
when(user.isJukeboxRole()).thenReturn(true);
|
|
when(airsonicPlayer.getPlayQueue()).thenReturn(playQueue);
|
|
when(playQueue.getCurrentFile()).thenReturn(mediaFile);
|
|
}
|
|
|
|
@Test
|
|
public void play() {
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
// Then
|
|
verify(javaPlayerFactory).createJavaPlayer();
|
|
verify(player).play();
|
|
}
|
|
|
|
@Test
|
|
public void playForNonDefaultMixer() {
|
|
// Given
|
|
when(airsonicPlayer.getJavaJukeboxMixer()).thenReturn("mixer");
|
|
when(javaPlayerFactory.createJavaPlayer("mixer")).thenReturn(player);
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
// Then
|
|
verify(javaPlayerFactory).createJavaPlayer("mixer");
|
|
verify(player).play();
|
|
}
|
|
|
|
@Test
|
|
public void playAndStop() {
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
// Then
|
|
verify(javaPlayerFactory).createJavaPlayer();
|
|
verify(player).play();
|
|
// When
|
|
service.stop(airsonicPlayer);
|
|
// Then
|
|
verifyNoMoreInteractions(javaPlayerFactory);
|
|
verify(player).pause();
|
|
|
|
}
|
|
|
|
@Test
|
|
public void playWithNonJukeboxUser() {
|
|
// Given
|
|
when(user.isJukeboxRole()).thenReturn(false);
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
// Then
|
|
verify(javaPlayerFactory).createJavaPlayer();
|
|
verify(player, never()).play();
|
|
}
|
|
|
|
@Test(expected = RuntimeException.class)
|
|
public void playWithNonJukeboxPlayer() {
|
|
// Given
|
|
when(airsonicPlayer.getTechnology()).thenReturn(PlayerTechnology.WEB);
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
}
|
|
|
|
@Test
|
|
public void playWithNoPlayQueueEmpty() {
|
|
// Given
|
|
when(playQueue.getCurrentFile()).thenReturn(null);
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
// Then
|
|
verify(javaPlayerFactory).createJavaPlayer();
|
|
verify(player, never()).play();
|
|
}
|
|
|
|
@Test(expected = RuntimeException.class)
|
|
public void playerInitProblem() {
|
|
// Given
|
|
when(javaPlayerFactory.createJavaPlayer()).thenReturn(null);
|
|
// When
|
|
service.play(airsonicPlayer);
|
|
}
|
|
} |