174 lines
7.2 KiB
Python
174 lines
7.2 KiB
Python
# Copyright 2020 (c) Anna Schumaker.
|
|
from lib import publisher
|
|
from gi.repository import GObject
|
|
from . import tags
|
|
from . import track
|
|
import datetime
|
|
import pathlib
|
|
import unittest
|
|
|
|
test_tracks = pathlib.Path("./data/Test Album")
|
|
|
|
class FakeLibrary:
|
|
def __init__(self):
|
|
self.name = test_tracks
|
|
|
|
class TestTrack(unittest.TestCase):
|
|
def setUp(self):
|
|
tags.reset()
|
|
self.lib = FakeLibrary()
|
|
|
|
def tearDown(self):
|
|
tags.reset()
|
|
|
|
def test_track_init(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.trackid, 1)
|
|
self.assertEqual(trak.filepath(), test_tracks / "01 - Test Track.ogg")
|
|
self.assertIsInstance(trak, GObject.Object)
|
|
|
|
def test_track_album(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
artist = trak.artist
|
|
self.assertEqual(trak.album, tags.Album[artist, "Test Album"])
|
|
self.assertEqual(trak["album"], "Test Album")
|
|
|
|
def test_track_artist(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
|
|
self.assertEqual(trak["artist"], "Test Artist")
|
|
self.assertEqual(trak.artist.sort, "artist, test")
|
|
|
|
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
|
|
self.assertEqual(trak2.artist, tags.Artist["Test Album Artist"])
|
|
self.assertEqual(trak2.artist.sort, "album artist, test")
|
|
|
|
def test_track_decade(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.decade, tags.Decade["2010s"])
|
|
self.assertEqual(trak["decade"], "2010s")
|
|
|
|
def test_track_discnumber(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.discnumber, 1)
|
|
self.assertEqual(trak["discnumber"], "01")
|
|
|
|
def test_track_filepath(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.path, pathlib.Path("01 - Test Track.ogg"))
|
|
self.assertEqual(trak.filepath(), test_tracks / "01 - Test Track.ogg")
|
|
|
|
def test_track_genres(self):
|
|
trak = track.Track(1, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
|
|
genlist = [ tags.Genre["Test"], tags.Genre["Genre"], tags.Genre["List"] ]
|
|
self.assertEqual(trak.genres, genlist)
|
|
self.assertEqual(trak["genres"], "Test, Genre, List")
|
|
|
|
def test_track_length(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.length, 10)
|
|
self.assertEqual(trak["length"], "0:10")
|
|
trak.length = 61
|
|
self.assertEqual(trak["length"], "1:01")
|
|
trak.length = 3
|
|
self.assertEqual(trak["length"], "0:03")
|
|
|
|
def test_track_played(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
trak.playcount = 0
|
|
trak.lastplayed = None
|
|
self.assertEqual(trak["playcount"], "0")
|
|
self.assertEqual(trak["lastplayed"], "Never")
|
|
trak.played()
|
|
self.assertEqual(trak.playcount, 1)
|
|
self.assertEqual(trak.lastplayed.date(), datetime.date.today())
|
|
self.assertEqual(trak["playcount"], "1")
|
|
#self.assertEqual(trak["lastplayed"], str(datetime.date.today()))
|
|
trak.played()
|
|
self.assertEqual(trak.playcount, 2)
|
|
self.assertEqual(trak["playcount"], "2")
|
|
|
|
def test_track_title(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.title, "Test Track")
|
|
self.assertEqual(trak["title"], "Test Track")
|
|
|
|
def test_track_tracknumber(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.tracknumber, 1)
|
|
self.assertEqual(trak["tracknumber"], "1-01")
|
|
trak.tracknumber = 10
|
|
self.assertEqual(trak["tracknumber"], "1-10")
|
|
|
|
def test_track_year(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
self.assertEqual(trak.year, tags.Year[trak.decade, "2019"])
|
|
self.assertEqual(trak["year"], "2019")
|
|
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
|
|
self.assertEqual(trak2.year, tags.Year[trak2.decade, "2019"])
|
|
self.assertEqual(trak2["year"], "2019")
|
|
|
|
def test_track_playlists(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
default = [ tags.User["Collection"], tags.User["New Tracks"] ]
|
|
self.assertEqual(trak.playlists, default)
|
|
|
|
trak.add_to_playlist("Test")
|
|
self.assertEqual(trak.playlists, default + [ tags.User["Test"] ])
|
|
|
|
trak.remove_from_playlist("Test")
|
|
self.assertEqual(trak.playlists, default)
|
|
self.assertEqual(len(tags.User["Test"]), 0)
|
|
|
|
def test_track_about_to_remove(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
trak.about_to_remove()
|
|
|
|
self.assertEqual(len(tags.Artist), 0)
|
|
self.assertEqual(len(tags.Album), 0)
|
|
self.assertEqual(len(tags.Genre), 0)
|
|
self.assertEqual(len(tags.Decade), 0)
|
|
self.assertEqual(len(tags.Year), 0)
|
|
self.assertEqual(len(tags.User["Collection"]), 0)
|
|
self.assertEqual(len(tags.User["New Tracks"]), 0)
|
|
|
|
def test_track_state(self):
|
|
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
|
trak.add_to_playlist("Starred")
|
|
trak.add_to_playlist("Previous")
|
|
|
|
state = trak.__getstate__()
|
|
self.assertEqual(state["artist"], "Test Artist")
|
|
self.assertEqual(state["album"], "Test Album")
|
|
self.assertEqual(state["genres"], [ "Test" ])
|
|
self.assertEqual(state["decade"], "2010s")
|
|
self.assertEqual(state["year"], "2019")
|
|
self.assertEqual(state["playlists"], [ "Collection", "Starred" ])
|
|
|
|
tags.Artist["Test Artist"].tracks = [ 1 ]
|
|
tags.Album[trak.artist, "Test Album"].tracks = [ 1 ]
|
|
tags.Genre["Test"].tracks = [ 1 ]
|
|
tags.Decade["2010s"].tracks = [ 1 ]
|
|
tags.Year[trak.decade, "2019"].tracks = [ 1 ]
|
|
tags.User["Collection"].tracks = [ 1 ]
|
|
tags.User["Starred"].tracks = [ 1 ]
|
|
|
|
trak.__dict__.clear()
|
|
trak.__setstate__(state)
|
|
trak.__set_tags__()
|
|
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
|
|
self.assertEqual(trak.album, tags.Album[trak.artist, "Test Album"])
|
|
self.assertEqual(trak.genres, [ tags.Genre["Test"] ])
|
|
self.assertEqual(trak.decade, tags.Decade["2010s"])
|
|
self.assertEqual(trak.year, tags.Year[trak.decade, "2019"])
|
|
self.assertEqual(trak.playlists, [ tags.User["Collection"],
|
|
tags.User["Starred"] ])
|
|
|
|
self.assertEqual(tags.Artist["Test Artist"].tracks, [ trak ])
|
|
self.assertEqual(tags.Album[trak.artist, "Test Album"].tracks, [ trak ])
|
|
self.assertEqual(tags.Genre["Test"].tracks, [ trak ])
|
|
self.assertEqual(tags.Decade["2010s"].tracks, [ trak ])
|
|
self.assertEqual(tags.Year[trak.decade, "2019"].tracks, [ trak ])
|
|
self.assertEqual(tags.User["Collection"].tracks, [ trak ])
|
|
self.assertEqual(tags.User["Starred"].tracks, [ trak ])
|