emmental/tagdb/test_track.py

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 ])