93 lines
3.7 KiB
Python
93 lines
3.7 KiB
Python
# Copyright 2023 (c) Anna Schumaker.
|
|
"""Tests our Previous Tracks Playlist model."""
|
|
import pathlib
|
|
import tests.util
|
|
import emmental.playlist.previous
|
|
|
|
|
|
class TestPrevious(tests.util.TestCase):
|
|
"""Tests the Previous Playlist Gio.ListModel."""
|
|
|
|
def setUp(self):
|
|
"""Set up common variables."""
|
|
super().setUp()
|
|
self.sql.playlists.load(now=True)
|
|
self.previous = emmental.playlist.previous.Previous(
|
|
self.sql, self.sql.playlists.previous)
|
|
|
|
self.library = self.sql.libraries.create(pathlib.Path("/a/b"))
|
|
self.album = self.sql.albums.create("Test Album", "Artist", "2023")
|
|
self.medium = self.sql.media.create(self.album, "", number=1)
|
|
self.year = self.sql.years.create(2023)
|
|
|
|
self.tracks = [self.sql.tracks.create(self.library,
|
|
pathlib.Path(f"/a/b/{i}.ogg"),
|
|
self.medium, self.year, number=i)
|
|
for i in range(1, 6)]
|
|
|
|
def test_init(self):
|
|
"""Test that the Previous Playlist was set up correctly."""
|
|
self.assertIsInstance(self.previous,
|
|
emmental.playlist.playlist.Playlist)
|
|
self.assertEqual(self.previous.playlist, self.sql.playlists.previous)
|
|
|
|
def test_can_go_forward(self):
|
|
"""Test the can-go-forward property."""
|
|
self.assertFalse(self.previous.can_go_forward)
|
|
|
|
self.tracks[0].start()
|
|
self.assertFalse(self.previous.can_go_forward)
|
|
|
|
self.tracks[1].start()
|
|
self.assertFalse(self.previous.can_go_forward)
|
|
|
|
self.previous.next_track()
|
|
self.assertTrue(self.previous.can_go_forward)
|
|
|
|
def test_start_tracks(self):
|
|
"""Test that tracks added to the playlist are sorted correctly."""
|
|
self.tracks[0].start()
|
|
self.assertEqual(self.previous[0], self.tracks[0])
|
|
self.assertEqual(self.previous.current_track, self.tracks[0])
|
|
|
|
self.tracks[1].start()
|
|
self.assertEqual(self.previous[0], self.tracks[1])
|
|
self.assertEqual(self.previous[1], self.tracks[0])
|
|
|
|
self.tracks[2].start()
|
|
self.assertEqual(self.previous[0], self.tracks[2])
|
|
self.assertEqual(self.previous[1], self.tracks[1])
|
|
self.assertEqual(self.previous[2], self.tracks[0])
|
|
|
|
def test_previous_track(self):
|
|
"""Test the previous_track() function."""
|
|
self.assertIsNone(self.previous.previous_track())
|
|
|
|
for track in self.tracks:
|
|
track.start()
|
|
|
|
self.previous.current_track = self.tracks[0]
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[1])
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[2])
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[3])
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[4])
|
|
self.assertIsNone(self.previous.previous_track())
|
|
|
|
self.previous.playlist = None
|
|
self.assertIsNone(self.previous.previous_track())
|
|
|
|
def test_next_previous_track(self):
|
|
"""Test mixing the next_track() and previous_track() functions."""
|
|
for track in self.tracks:
|
|
track.start()
|
|
|
|
self.assertEqual(self.previous.next_track(), self.tracks[3])
|
|
self.assertEqual(self.previous.next_track(), self.tracks[2])
|
|
self.assertEqual(self.previous.next_track(), self.tracks[1])
|
|
self.assertEqual(self.previous.next_track(), self.tracks[0])
|
|
self.assertIsNone(self.previous.next_track())
|
|
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[1])
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[2])
|
|
self.assertEqual(self.previous.previous_track(), self.tracks[3])
|