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.
108 lines
3.2 KiB
108 lines
3.2 KiB
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<Playlist> actual;
|
|
|
|
@Captor
|
|
ArgumentCaptor<List<MediaFile>> 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<MediaFile> getPlaylistFiles() {
|
|
List<MediaFile> 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;
|
|
}
|
|
}
|
|
|