package org.airsonic.player.service; import com.google.common.collect.Lists; import org.airsonic.player.dao.MediaFileDao; import org.airsonic.player.dao.PlaylistDao; import org.airsonic.player.domain.MediaFile; import org.airsonic.player.domain.Playlist; import org.airsonic.player.service.playlist.DefaultPlaylistExportHandler; import org.apache.commons.io.IOUtils; import org.apache.commons.io.output.ByteArrayOutputStream; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class PlaylistServiceTestExport { PlaylistService playlistService; @InjectMocks DefaultPlaylistExportHandler defaultPlaylistExportHandler; @Mock MediaFileDao mediaFileDao; @Mock PlaylistDao playlistDao; @Mock MediaFileService mediaFileService; @Mock SettingsService settingsService; @Mock SecurityService securityService; @Rule public TemporaryFolder folder = new TemporaryFolder(); @Captor ArgumentCaptor actual; @Captor ArgumentCaptor> medias; @Before public void setup() { playlistService = new PlaylistService(mediaFileDao, playlistDao, securityService, settingsService, Lists.newArrayList( defaultPlaylistExportHandler), Collections.emptyList()); } @Test public void testExportToM3U() throws Exception { when(mediaFileDao.getFilesInPlaylist(eq(23))).thenReturn(getPlaylistFiles()); when(settingsService.getPlaylistExportFormat()).thenReturn("m3u"); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); playlistService.exportPlaylist(23, outputStream); String actual = outputStream.toString(); Assert.assertEquals(IOUtils.toString(getClass().getResourceAsStream("/PLAYLISTS/23.m3u")), actual); } private List getPlaylistFiles() { List mediaFiles = new ArrayList<>(); MediaFile mf1 = new MediaFile(); mf1.setId(142); mf1.setPath("/some/path/to_album/to_artist/name - of - song.mp3"); mf1.setPresent(true); mediaFiles.add(mf1); MediaFile mf2 = new MediaFile(); mf2.setId(1235); mf2.setPath("/some/path/to_album2/to_artist/another song.mp3"); mf2.setPresent(true); mediaFiles.add(mf2); MediaFile mf3 = new MediaFile(); mf3.setId(198403); mf3.setPath("/some/path/to_album2/to_artist/another song2.mp3"); mf3.setPresent(false); mediaFiles.add(mf3); return mediaFiles; } }