jukebox code quality and unit tests
This commit is contained in:
@@ -24,10 +24,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
|
||||
@AutoConfigureMockMvc
|
||||
public class AirsonicRestApiIntTest {
|
||||
|
||||
public static final String CLIENT_NAME = "airsonic";
|
||||
public static final String AIRSONIC_USER = "admin";
|
||||
public static final String AIRSONIC_PASSWORD = "admin";
|
||||
public static final String EXPECTED_FORMAT = "json";
|
||||
private static final String CLIENT_NAME = "airsonic";
|
||||
private static final String AIRSONIC_USER = "admin";
|
||||
private static final String AIRSONIC_PASSWORD = "admin";
|
||||
private static final String EXPECTED_FORMAT = "json";
|
||||
|
||||
private static String AIRSONIC_API_VERSION;
|
||||
|
||||
|
||||
+2
-2
@@ -58,8 +58,8 @@ public abstract class AbstractAirsonicRestApiJukeboxIntTest {
|
||||
}
|
||||
}
|
||||
|
||||
protected static final String CLIENT_NAME = "airsonic";
|
||||
protected static final String JUKEBOX_PLAYER_NAME = CLIENT_NAME + "-jukebox";
|
||||
static final String CLIENT_NAME = "airsonic";
|
||||
static final String JUKEBOX_PLAYER_NAME = CLIENT_NAME + "-jukebox";
|
||||
private static final String EXPECTED_FORMAT = "json";
|
||||
private static String AIRSONIC_API_VERSION;
|
||||
|
||||
|
||||
+6
-6
@@ -27,12 +27,12 @@ public class AirsonicRestApiJukeboxIntTest extends AbstractAirsonicRestApiJukebo
|
||||
|
||||
@Override
|
||||
protected void createTestPlayer() {
|
||||
Player jukeBoxPlayer = new Player();
|
||||
jukeBoxPlayer.setName(JUKEBOX_PLAYER_NAME);
|
||||
jukeBoxPlayer.setUsername("admin");
|
||||
jukeBoxPlayer.setClientId(CLIENT_NAME + "-jukebox");
|
||||
jukeBoxPlayer.setTechnology(PlayerTechnology.JAVA_JUKEBOX);
|
||||
playerService.createPlayer(jukeBoxPlayer);
|
||||
Player jukeboxPlayer = new Player();
|
||||
jukeboxPlayer.setName(JUKEBOX_PLAYER_NAME);
|
||||
jukeboxPlayer.setUsername("admin");
|
||||
jukeboxPlayer.setClientId(CLIENT_NAME + "-jukebox");
|
||||
jukeboxPlayer.setTechnology(PlayerTechnology.JAVA_JUKEBOX);
|
||||
playerService.createPlayer(jukeboxPlayer);
|
||||
}
|
||||
|
||||
}
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,233 @@
|
||||
package org.airsonic.player.service;
|
||||
|
||||
import org.airsonic.player.domain.Player;
|
||||
import org.airsonic.player.domain.PlayerTechnology;
|
||||
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.verify;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(value = MockitoJUnitRunner.class)
|
||||
public class JukeboxServiceUnitTest {
|
||||
|
||||
private JukeboxService jukeboxService;
|
||||
@Mock
|
||||
private JukeboxLegacySubsonicService jukeboxLegacySubsonicService;
|
||||
@Mock
|
||||
private JukeboxJavaService jukeboxJavaService;
|
||||
private Player jukeboxPlayer;
|
||||
private Player legacyJukeboxPlayer;
|
||||
private Player nonJukeboxPlayer;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
jukeboxService = new JukeboxService(jukeboxLegacySubsonicService, jukeboxJavaService);
|
||||
jukeboxPlayer = generateJukeboxPlayer();
|
||||
legacyJukeboxPlayer = generateLegacyJukeboxPlayer();
|
||||
nonJukeboxPlayer = generateNonJukeboxPlayer();
|
||||
}
|
||||
|
||||
private Player generateNonJukeboxPlayer() {
|
||||
Player player = new Player();
|
||||
player.setId(0);
|
||||
player.setTechnology(PlayerTechnology.WEB);
|
||||
return player;
|
||||
}
|
||||
|
||||
private Player generateLegacyJukeboxPlayer() {
|
||||
Player player = new Player();
|
||||
player.setId(1);
|
||||
player.setTechnology(PlayerTechnology.JUKEBOX);
|
||||
return player;
|
||||
}
|
||||
|
||||
private Player generateJukeboxPlayer() {
|
||||
Player player = new Player();
|
||||
player.setId(2);
|
||||
player.setTechnology(PlayerTechnology.JAVA_JUKEBOX);
|
||||
return player;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPositionWithJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.setPosition(jukeboxPlayer, 0);
|
||||
// Then
|
||||
verify(jukeboxJavaService).setPosition(jukeboxPlayer, 0);
|
||||
}
|
||||
|
||||
@Test(expected = UnsupportedOperationException.class)
|
||||
public void setPositionWithLegacyJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.setPosition(legacyJukeboxPlayer, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getGainWithJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.getGain(jukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxJavaService).getGain(jukeboxPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getGainWithLegacyJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.getGain(legacyJukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).getGain();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getGainWithNonJukeboxPlayer() {
|
||||
// When
|
||||
float gain = jukeboxService.getGain(nonJukeboxPlayer);
|
||||
// Then
|
||||
assertThat(gain).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateJukebox() throws Exception {
|
||||
// When
|
||||
jukeboxService.updateJukebox(legacyJukeboxPlayer, 0);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPositionWithJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.getPosition(jukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxJavaService).getPosition(jukeboxPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPositionWithLegacyJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.getPosition(legacyJukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).getPosition();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getPasitionWithNonJukeboxPlayer() {
|
||||
// When
|
||||
int position = jukeboxService.getPosition(nonJukeboxPlayer);
|
||||
// Then
|
||||
assertThat(position).isEqualTo(0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setGainWithJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.setGain(jukeboxPlayer, 0.5f);
|
||||
// Then
|
||||
verify(jukeboxJavaService).setGain(jukeboxPlayer, 0.5f);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setGaintWithLegacyJukeboxPlayer() {
|
||||
// When
|
||||
jukeboxService.setGain(legacyJukeboxPlayer, 0.5f);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).setGain(0.5f);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.start(jukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxJavaService).start(jukeboxPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void startWithLegacyJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.start(legacyJukeboxPlayer);
|
||||
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void playWithJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.play(jukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxJavaService).play(jukeboxPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void playWithLegacyJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.play(legacyJukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stopWithJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.stop(jukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxJavaService).stop(jukeboxPlayer);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void stopWithLegacyJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.stop(legacyJukeboxPlayer);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void skipWithJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.skip(jukeboxPlayer, 0, 1);
|
||||
// Then
|
||||
verify(jukeboxJavaService).skip(jukeboxPlayer, 0, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void skipWithLegacyJukeboxPlayer() throws Exception {
|
||||
// When
|
||||
jukeboxService.skip(legacyJukeboxPlayer, 0, 1);
|
||||
// Then
|
||||
verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canControlWithJukeboxPlayer() {
|
||||
// When
|
||||
boolean canControl = jukeboxService.canControl(jukeboxPlayer);
|
||||
// Then
|
||||
assertThat(canControl).isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canControlWithLegacyJukeboxPlayer() {
|
||||
// When
|
||||
when(jukeboxLegacySubsonicService.getPlayer()).thenReturn(legacyJukeboxPlayer);
|
||||
boolean canControl = jukeboxService.canControl(legacyJukeboxPlayer);
|
||||
// Then
|
||||
assertThat(canControl).isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void canControlWithLegacyJukeboxPlayerWrongPlayer() {
|
||||
// When
|
||||
when(jukeboxLegacySubsonicService.getPlayer()).thenReturn(nonJukeboxPlayer);
|
||||
boolean canControl = jukeboxService.canControl(legacyJukeboxPlayer);
|
||||
// Then
|
||||
assertThat(canControl).isEqualTo(false);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user