Anna Schumaker
b245b2073e
To remove a bunch of redundant names from the test functions Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
224 lines
7.1 KiB
Python
224 lines
7.1 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
import datetime
|
|
import db
|
|
import pathlib
|
|
import unittest
|
|
from gi.repository import GObject
|
|
from . import task
|
|
|
|
test_tracks = pathlib.Path("./data/Test Album")
|
|
test_track01 = test_tracks / "01 - Test Track.ogg"
|
|
|
|
class TestScannerTask(unittest.TestCase):
|
|
def test_task(self):
|
|
t = task.Task()
|
|
self.assertIsInstance(t, GObject.GObject)
|
|
with self.assertRaises(NotImplementedError):
|
|
t.run_task()
|
|
|
|
|
|
class TestScannerCommitTask(unittest.TestCase):
|
|
def test_task(self):
|
|
ct = task.CommitTask()
|
|
self.assertIsInstance(ct, task.Task)
|
|
self.assertEqual(ct.run_task(), None)
|
|
|
|
|
|
class TestScannerFileTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
ft = task.FileTask(lib, test_track01)
|
|
|
|
self.assertIsInstance(ft, task.Task)
|
|
self.assertEqual(ft.library, lib)
|
|
self.assertEqual(ft.filepath, test_track01)
|
|
|
|
self.assertIsNone(ft.run_task())
|
|
self.assertIsNone(ft.run_task())
|
|
|
|
artist = db.artist.Table.lookup("Test Artist")
|
|
self.assertIsNotNone(artist)
|
|
|
|
album = db.album.Table.lookup(artist, "Test Album",
|
|
datetime.date(2019, 2, 1))
|
|
self.assertIsNotNone(album)
|
|
|
|
self.assertIsNotNone(db.disc.Table.lookup(album, 1))
|
|
|
|
decade = db.decade.Table.lookup(2010)
|
|
self.assertIsNotNone(decade)
|
|
self.assertIsNotNone(db.year.Table.lookup(2019))
|
|
|
|
track = db.track.Table.lookup(test_track01)
|
|
self.assertEqual(track.number, 1)
|
|
self.assertEqual(track.length, 10)
|
|
self.assertEqual(track.title, "Test Track")
|
|
self.assertEqual(track.path, test_track01)
|
|
|
|
genre = db.genre.Table.lookup("Test")
|
|
self.assertEqual(genre.get_track(0), track)
|
|
|
|
new = db.user.Table.find("New Tracks")
|
|
self.assertEqual(new.get_track(0), track)
|
|
|
|
|
|
class TestScannerDirectoryTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
dt = task.DirectoryTask(lib, test_tracks)
|
|
|
|
self.assertIsInstance(dt, task.Task)
|
|
self.assertEqual(dt.library, lib)
|
|
self.assertEqual(dt.dirpath, test_tracks)
|
|
|
|
tasks = dt.run_task()
|
|
self.assertIsNotNone(tasks)
|
|
self.assertEqual(len(tasks), 15)
|
|
|
|
file_tasks = [ t for t in tasks if isinstance(t, task.FileTask) ]
|
|
dir_tasks = [ t for t in tasks if isinstance(t, task.DirectoryTask) ]
|
|
commit_task = [ t for t in tasks if isinstance(t, task.CommitTask) ]
|
|
|
|
self.assertEqual(len(file_tasks), 13)
|
|
self.assertEqual(len(dir_tasks), 1)
|
|
self.assertEqual(len(commit_task), 1)
|
|
|
|
|
|
class TestScannerCheckTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
for i in [ 1, 2, 3 ]:
|
|
db.make_fake_track(i, i, f"Test Track {i}", f"{lib.path}/{i}.ogg", lib.path)
|
|
track = db.make_fake_track(4, 4, "data/Test Album/04 - Test (Disc Two).ogg", lib.path)
|
|
|
|
tracks = [ db.track.Table.get(i) for i in [ 1, 2, 3, 4 ] ]
|
|
ct = task.CheckTask(tracks)
|
|
|
|
self.assertIsInstance(ct, task.Task)
|
|
self.assertEqual(ct.tracks, tracks)
|
|
|
|
self.assertIsNone(ct.run_task())
|
|
self.assertIsNone(db.track.Table.get(1))
|
|
self.assertIsNone(db.track.Table.get(2))
|
|
self.assertIsNone(db.track.Table.get(3))
|
|
self.assertEqual(db.track.Table.get(4), track)
|
|
|
|
|
|
class TestScannerCheckSchedulerTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
track = db.make_fake_track(1, 1, "Test Album Track", str(test_track01), str(test_tracks))
|
|
|
|
lib2 = db.library.Table.find("/a/b/c")
|
|
for i in range(75):
|
|
db.make_fake_track(i, i, f"Test Track {i}",f"/a/b/c/{i}.ogg", lib="/a/b/c")
|
|
|
|
cst = task.CheckSchedulerTask(lib2)
|
|
self.assertIsInstance(cst, task.Task)
|
|
self.assertEqual(cst.library, lib2)
|
|
|
|
tasks = cst.run_task()
|
|
self.assertEqual(len(tasks), 2)
|
|
self.assertIsInstance(tasks[0], task.CheckTask)
|
|
self.assertIsInstance(tasks[1], task.CheckTask)
|
|
self.assertEqual(len(tasks[0].tracks), 50)
|
|
self.assertEqual(len(tasks[1].tracks), 25)
|
|
tasks[0].run_task()
|
|
tasks[1].run_task()
|
|
|
|
self.assertEqual(db.track.Table.get(1), track)
|
|
for i in range(1, 76):
|
|
self.assertIsNone(db.track.Table.get(1+i))
|
|
|
|
|
|
class TestScannerRemoveTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
for i in [ 1, 2, 3, 4, 5 ]:
|
|
db.make_fake_track(i, i, f"Test Track {i}", f"{lib.path}/{i}.ogg", lib.path)
|
|
tracks = [ db.track.Table.get(i) for i in [ 1, 2, 3, 4, 5 ] ]
|
|
rt = task.RemoveTask(tracks)
|
|
|
|
self.assertIsInstance(rt, task.Task)
|
|
self.assertEqual(rt.tracks, tracks)
|
|
|
|
self.assertIsNone(rt.run_task())
|
|
for i in [ 1, 2, 3, 4, 5 ]:
|
|
self.assertIsNone(db.track.Table.get(i))
|
|
|
|
|
|
class TestScannerRemoveLibraryTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
rlt = task.RemoveLibraryTask(lib)
|
|
|
|
self.assertIsInstance(rlt, task.Task)
|
|
self.assertEqual(rlt.library, lib)
|
|
|
|
self.assertIsNone(rlt.run_task())
|
|
self.assertIsNone(db.library.Table.lookup(test_tracks))
|
|
|
|
|
|
class TestScannerRemoveLibrarySchedulerTask(unittest.TestCase):
|
|
def setUp(self):
|
|
db.reset()
|
|
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
for i in range(75):
|
|
db.make_fake_track(i, i, f"Test Track {i}",f"/a/b/c/{i}.ogg", lib.path)
|
|
|
|
rlst = task.RemoveLibrarySchedulerTask(lib)
|
|
self.assertIsInstance(rlst, task.Task)
|
|
self.assertEqual(rlst.library, lib)
|
|
|
|
tasks = rlst.run_task()
|
|
self.assertEqual(len(tasks), 3)
|
|
self.assertIsInstance(tasks[0], task.RemoveTask)
|
|
self.assertIsInstance(tasks[1], task.RemoveTask)
|
|
self.assertIsInstance(tasks[2], task.RemoveLibraryTask)
|
|
self.assertEqual(len(tasks[0].tracks), 50)
|
|
self.assertEqual(len(tasks[1].tracks), 25)
|
|
self.assertEqual(tasks[2].library, lib)
|
|
|
|
for t in tasks: t.run_task()
|
|
|
|
for i in range(1, 76):
|
|
self.assertIsNone(db.track.Table.get(i))
|
|
self.assertIsNone(db.library.Table.lookup(test_tracks))
|
|
|
|
|
|
class TestEnableLibraryTask(unittest.TestCase):
|
|
def test_task(self):
|
|
lib = db.library.Table.find(test_tracks)
|
|
elt = task.EnableLibraryTask(lib, False)
|
|
|
|
self.assertIsInstance(elt, task.Task)
|
|
self.assertEqual(elt.library, lib)
|
|
self.assertEqual(elt.enable, False)
|
|
|
|
self.assertIsNone(elt.run_task())
|
|
self.assertFalse(lib.enabled)
|
|
|
|
elt.enable = True
|
|
self.assertIsNone(elt.run_task())
|
|
self.assertTrue(lib.enabled)
|