100 lines
3.9 KiB
Python
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()
|