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.assertj.core.api.Assertions.*; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(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() { // 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() { // When jukeboxService.start(jukeboxPlayer); // Then verify(jukeboxJavaService).start(jukeboxPlayer); } @Test public void startWithLegacyJukeboxPlayer() { // When jukeboxService.start(legacyJukeboxPlayer); // Then verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0); } @Test public void playWithJukeboxPlayer() { // When jukeboxService.play(jukeboxPlayer); // Then verify(jukeboxJavaService).play(jukeboxPlayer); } @Test public void playWithLegacyJukeboxPlayer() { // When jukeboxService.play(legacyJukeboxPlayer); // Then verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0); } @Test public void stopWithJukeboxPlayer() { // When jukeboxService.stop(jukeboxPlayer); // Then verify(jukeboxJavaService).stop(jukeboxPlayer); } @Test public void stopWithLegacyJukeboxPlayer() { // When jukeboxService.stop(legacyJukeboxPlayer); // Then verify(jukeboxLegacySubsonicService).updateJukebox(legacyJukeboxPlayer, 0); } @Test public void skipWithJukeboxPlayer() { // When jukeboxService.skip(jukeboxPlayer, 0, 1); // Then verify(jukeboxJavaService).skip(jukeboxPlayer, 0, 1); } @Test public void skipWithLegacyJukeboxPlayer() { // 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); } }