scanner: Add a RemoveTask
For unconditionally removing a list of tracks Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
19278af3b8
commit
0f57b10500
|
@ -92,3 +92,14 @@ class CheckSchedulerTask(Task):
|
|||
|
||||
def run_task(self):
|
||||
return [ CheckTask(tracks) for tracks in self.track_chunks() ]
|
||||
|
||||
|
||||
class RemoveTask(Task):
|
||||
def __init__(self, tracks):
|
||||
Task.__init__(self)
|
||||
self.tracks = tracks
|
||||
|
||||
def run_task(self):
|
||||
for track in self.tracks:
|
||||
db.track.Table.delete(track)
|
||||
db.commit()
|
||||
|
|
|
@ -160,3 +160,22 @@ class TestScannerCheckSchedulerTask(unittest.TestCase):
|
|||
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_scanner_remove_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))
|
||||
|
|
Loading…
Reference in New Issue