emmental/scanner/test_widgets.py

92 lines
3.0 KiB
Python
Raw Normal View History

# Copyright 2021 (c) Anna Schumaker.
import db
import unittest
from gi.repository import Gtk
from . import queue
from . import task
from . import widgets
class FakeTask(task.Task):
def run_task(self): return None
class TestScannerProgressBar(unittest.TestCase):
def test_progress_bar(self):
q = queue.TaskQueue()
pb = widgets.ProgressBar(q)
self.assertIsInstance(pb, Gtk.ProgressBar)
self.assertTrue( pb.get_hexpand())
self.assertFalse(pb.get_visible())
self.assertEqual(pb.get_valign(), Gtk.Align.CENTER)
self.assertEqual(pb.queue, q)
for i in range(3): q.push(FakeTask())
self.assertTrue(pb.get_visible())
for i in [ 1, 2, 0 ]:
q.run()
self.assertEqual(pb.get_fraction(), i/3)
self.assertFalse(pb.get_visible())
class TestScannerUpdateButton(unittest.TestCase):
def test_update_button(self):
lib = db.library.Table.find("/a/b/c")
q = queue.TaskQueue()
ub = widgets.UpdateButton(lib, q)
self.assertIsInstance(ub, Gtk.Button)
self.assertIsInstance(ub, widgets.ScannerButton)
self.assertEqual(ub.get_icon_name(), "view-refresh")
self.assertEqual(ub.library, lib)
self.assertEqual(ub.queue, q)
self.assertTrue(ub.get_hexpand())
ub.emit("clicked")
self.assertEqual(len(q.tasks), 2)
self.assertIsInstance(q.tasks[0], task.CheckSchedulerTask)
self.assertIsInstance(q.tasks[1], task.DirectoryTask)
q.tasks_finished()
class TestScannerUpdateAllButton(unittest.TestCase):
def test_update_all_button(self):
db.reset()
lib1 = db.library.Table.find("/a/b/c")
lib2 = db.library.Table.find("/d/e/f")
q = queue.TaskQueue()
uba = widgets.UpdateAllButton(q)
self.assertIsInstance(uba, Gtk.Button)
self.assertIsInstance(uba, widgets.ScannerButton)
self.assertEqual(uba.get_icon_name(), "view-refresh")
self.assertEqual(uba.queue, q)
self.assertTrue(uba.get_hexpand())
uba.emit("clicked")
self.assertEqual(len(q.tasks), 4)
self.assertIsInstance(q.tasks[0], task.CheckSchedulerTask)
self.assertIsInstance(q.tasks[1], task.DirectoryTask)
self.assertIsInstance(q.tasks[2], task.CheckSchedulerTask)
self.assertIsInstance(q.tasks[3], task.DirectoryTask)
q.tasks_finished()
class TestScannerRemoveButton(unittest.TestCase):
def test_remove_button(self):
lib = db.library.Table.find("/a/b/c")
q = queue.TaskQueue()
rb = widgets.RemoveButton(lib, q)
self.assertIsInstance(rb, Gtk.Button)
self.assertIsInstance(rb, widgets.ScannerButton)
self.assertEqual(rb.get_icon_name(), "list-remove")
self.assertEqual(rb.library, lib)
self.assertEqual(rb.queue, q)
self.assertTrue(rb.get_hexpand())
rb.emit("clicked")
self.assertEqual(len(q.tasks), 1)
self.assertIsInstance(q.tasks[0], task.RemoveLibrarySchedulerTask)
q.tasks_finished()