Make tracklist.add() only take and return lists
This commit is contained in:
parent
3dc1586213
commit
ae9a257091
@ -3,7 +3,7 @@ from __future__ import unicode_literals
|
||||
import logging
|
||||
import random
|
||||
|
||||
from mopidy.models import TlTrack, Track
|
||||
from mopidy.models import TlTrack
|
||||
|
||||
from . import listener
|
||||
|
||||
@ -70,26 +70,17 @@ class TracklistController(object):
|
||||
the tracklist. If ``at_position`` is not given, the tracks are appended
|
||||
to the end of the tracklist.
|
||||
|
||||
If ``tracks`` is a track object, a single
|
||||
:class:`mopidy.models.TlTrack` object is returned. If ``tracks`` is a
|
||||
list, a list of :class:`mopidy.models.TlTrack` is returned.
|
||||
|
||||
Triggers the :meth:`mopidy.core.CoreListener.tracklist_changed` event.
|
||||
|
||||
:param track: track to add
|
||||
:type track: :class:`mopidy.models.Track`
|
||||
:param tracks: tracks to add
|
||||
:type tracks: list of :class:`mopidy.models.Track`
|
||||
:param at_position: position in tracklist to add track
|
||||
:type at_position: int or :class:`None`
|
||||
:rtype: a single or a list of :class:`mopidy.models.TlTrack`
|
||||
:rtype: list of :class:`mopidy.models.TlTrack`
|
||||
"""
|
||||
assert at_position is None or at_position <= len(self._tl_tracks), \
|
||||
'at_position can not be greater than tracklist length'
|
||||
|
||||
single_add = False
|
||||
if isinstance(tracks, Track):
|
||||
tracks = [tracks]
|
||||
single_add = True
|
||||
|
||||
tl_tracks = []
|
||||
for track in tracks:
|
||||
tl_track = TlTrack(self._next_tlid, track)
|
||||
@ -104,10 +95,7 @@ class TracklistController(object):
|
||||
if tl_tracks:
|
||||
self._increase_version()
|
||||
|
||||
if single_add:
|
||||
return tl_tracks[0]
|
||||
else:
|
||||
return tl_tracks
|
||||
return tl_tracks
|
||||
|
||||
def clear(self):
|
||||
"""
|
||||
|
||||
@ -3,9 +3,7 @@ from __future__ import unicode_literals
|
||||
|
||||
def populate_tracklist(func):
|
||||
def wrapper(self):
|
||||
self.tl_tracks = []
|
||||
for track in self.tracks:
|
||||
self.tl_tracks.append(self.core.tracklist.add(track))
|
||||
self.tl_tracks = self.core.tracklist.add(self.tracks)
|
||||
return func(self)
|
||||
|
||||
wrapper.__name__ = func.__name__
|
||||
|
||||
@ -36,17 +36,17 @@ class TracklistControllerTest(object):
|
||||
|
||||
def test_add(self):
|
||||
for track in self.tracks:
|
||||
tl_track = self.controller.add(track)
|
||||
tl_tracks = self.controller.add([track])
|
||||
self.assertEqual(track, self.controller.tracks[-1])
|
||||
self.assertEqual(tl_track, self.controller.tl_tracks[-1])
|
||||
self.assertEqual(track, tl_track.track)
|
||||
self.assertEqual(tl_tracks[0], self.controller.tl_tracks[-1])
|
||||
self.assertEqual(track, tl_tracks[0].track)
|
||||
|
||||
def test_add_at_position(self):
|
||||
for track in self.tracks[:-1]:
|
||||
tl_track = self.controller.add(track, 0)
|
||||
tl_tracks = self.controller.add([track], 0)
|
||||
self.assertEqual(track, self.controller.tracks[0])
|
||||
self.assertEqual(tl_track, self.controller.tl_tracks[0])
|
||||
self.assertEqual(track, tl_track.track)
|
||||
self.assertEqual(tl_tracks[0], self.controller.tl_tracks[0])
|
||||
self.assertEqual(track, tl_tracks[0].track)
|
||||
|
||||
@populate_tracklist
|
||||
def test_add_at_position_outside_of_playlist(self):
|
||||
|
||||
@ -27,7 +27,7 @@ class LocalPlaybackControllerTest(PlaybackControllerTest, unittest.TestCase):
|
||||
def add_track(self, path):
|
||||
uri = path_to_uri(path_to_data_dir(path))
|
||||
track = Track(uri=uri, length=4464)
|
||||
self.tracklist.add(track)
|
||||
self.tracklist.add([track])
|
||||
|
||||
def test_uri_scheme(self):
|
||||
self.assertIn('file', self.core.uri_schemes)
|
||||
|
||||
@ -26,14 +26,14 @@ class BackendEventsTest(unittest.TestCase):
|
||||
self.assertEqual(send.call_args[0][0], 'playlists_loaded')
|
||||
|
||||
def test_pause_sends_track_playback_paused_event(self, send):
|
||||
self.core.tracklist.add(Track(uri='dummy:a'))
|
||||
self.core.tracklist.add([Track(uri='dummy:a')])
|
||||
self.core.playback.play().get()
|
||||
send.reset_mock()
|
||||
self.core.playback.pause().get()
|
||||
self.assertEqual(send.call_args[0][0], 'track_playback_paused')
|
||||
|
||||
def test_resume_sends_track_playback_resumed(self, send):
|
||||
self.core.tracklist.add(Track(uri='dummy:a'))
|
||||
self.core.tracklist.add([Track(uri='dummy:a')])
|
||||
self.core.playback.play()
|
||||
self.core.playback.pause().get()
|
||||
send.reset_mock()
|
||||
@ -41,20 +41,20 @@ class BackendEventsTest(unittest.TestCase):
|
||||
self.assertEqual(send.call_args[0][0], 'track_playback_resumed')
|
||||
|
||||
def test_play_sends_track_playback_started_event(self, send):
|
||||
self.core.tracklist.add(Track(uri='dummy:a'))
|
||||
self.core.tracklist.add([Track(uri='dummy:a')])
|
||||
send.reset_mock()
|
||||
self.core.playback.play().get()
|
||||
self.assertEqual(send.call_args[0][0], 'track_playback_started')
|
||||
|
||||
def test_stop_sends_track_playback_ended_event(self, send):
|
||||
self.core.tracklist.add(Track(uri='dummy:a'))
|
||||
self.core.tracklist.add([Track(uri='dummy:a')])
|
||||
self.core.playback.play().get()
|
||||
send.reset_mock()
|
||||
self.core.playback.stop().get()
|
||||
self.assertEqual(send.call_args_list[0][0][0], 'track_playback_ended')
|
||||
|
||||
def test_seek_sends_seeked_event(self, send):
|
||||
self.core.tracklist.add(Track(uri='dummy:a', length=40000))
|
||||
self.core.tracklist.add([Track(uri='dummy:a', length=40000)])
|
||||
self.core.playback.play().get()
|
||||
send.reset_mock()
|
||||
self.core.playback.seek(1000).get()
|
||||
@ -62,7 +62,7 @@ class BackendEventsTest(unittest.TestCase):
|
||||
|
||||
def test_tracklist_add_sends_tracklist_changed_event(self, send):
|
||||
send.reset_mock()
|
||||
self.core.tracklist.add(Track(uri='dummy:a')).get()
|
||||
self.core.tracklist.add([Track(uri='dummy:a')]).get()
|
||||
self.assertEqual(send.call_args[0][0], 'tracklist_changed')
|
||||
|
||||
def test_tracklist_clear_sends_tracklist_changed_event(self, send):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user