commit
						06a8e2dc02
					
				| @ -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); | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue