emmental/sidebar/test_library.py

100 lines
3.9 KiB
Python

# Copyright 2021 (c) Anna Schumaker.
from . import library
from . import tagbox
from gi.repository import Gtk, Gio, GLib
import pathlib
import tagdb
import unittest
main_context = GLib.main_context_default()
test_library = pathlib.Path("./data/Test Library").absolute()
test_artist1 = test_library / "Test Artist 01"
class TestLibrarySidebar(unittest.TestCase):
def tearDown(self):
tagdb.reset()
library.TagBox.clear()
def test_library_sidebar_init(self):
self.assertIsInstance(library.TagBox, library.LibraryTagBox)
self.assertIsInstance(library.TagBox, tagbox.TagBox)
self.assertIsInstance(library.Add, Gtk.MenuButton)
self.assertIsInstance(library.Box, Gtk.Box)
self.assertTrue(library.Box.has_css_class("linked"))
self.assertTrue(library.Box.get_hexpand())
self.assertIn(library.TagBox, library.Box)
self.assertIn(library.Add, library.Box)
def test_library_sidebar_row(self):
library.TagBox = library.LibraryTagBox(tagdb.Library, "folder-music")
lib_tag = tagdb.Library.add(test_artist1)
lib_tag.scan().join()
library.TagBox.bus.complete()
row = lib_tag.widgets
self.assertIsInstance(row, library.LibraryTagRow)
self.assertIsInstance(row.update, Gtk.Button)
self.assertIsInstance(row.remove, Gtk.Button)
self.assertIsInstance(row.box, Gtk.Box)
self.assertTrue(row.update.get_hexpand())
self.assertTrue(row.remove.get_hexpand())
self.assertTrue(row.box.has_css_class("linked"))
self.assertIn(row.box, row.grid)
self.assertIn(row.update, row.box)
self.assertIn(row.remove, row.box)
row.update_clicked(row.update)
lib_tag.scan.join()
row.remove_clicked(row.remove)
lib_tag.clear.join()
library.TagBox.bus.complete()
self.assertIsNone(library.TagBox[0])
def test_library_sidebar_add(self):
self.assertIsInstance(library.Popover, Gtk.Popover)
self.assertTrue(library.Popover.has_css_class("normal-icons"))
self.assertEqual(library.Add.get_icon_name(), "folder-new")
self.assertEqual(library.Add.get_direction(), Gtk.ArrowType.UP)
self.assertTrue(library.Add.has_css_class("large-icons"))
self.assertEqual(library.Add.get_popover(), library.Popover)
self.assertEqual(library.Popover.get_child(), library.DirBox)
def test_library_sidebar_dir_chooser(self):
self.assertIsInstance(library.DirFilter, Gtk.FileFilter)
self.assertIsInstance(library.DirChooser, Gtk.FileChooserWidget)
self.assertIsInstance(library.DirSelect, Gtk.Button)
self.assertIsInstance(library.DirBox, Gtk.Box)
self.assertEqual(library.DirChooser.get_filter(), library.DirFilter)
self.assertEqual(library.DirChooser.get_action(),
Gtk.FileChooserAction.SELECT_FOLDER)
self.assertFalse(library.DirChooser.get_create_folders())
self.assertIn(library.DirChooser, library.DirBox)
self.assertEqual(library.DirSelect.get_label(), "Select Folder")
self.assertTrue(library.DirSelect.has_css_class("suggested-action"))
self.assertIn(library.DirSelect, library.DirBox)
library.Popover.popup()
gfile = Gio.File.new_for_path(str(test_library))
self.assertTrue(library.DirChooser.set_current_folder(gfile))
while main_context.iteration(may_block=False): pass
self.assertEqual(library.selected_path(), test_library)
gfile = Gio.File.new_for_path(str(test_artist1))
self.assertTrue(library.DirChooser.set_file(gfile))
while main_context.iteration(may_block=False): pass
self.assertEqual(library.selected_path(), test_artist1)
library.on_select(library.DirSelect)
self.assertFalse(library.Popover.is_visible())
self.assertIn(test_artist1, tagdb.Library.store)
tagdb.Library[test_artist1].scan.join()