1# This program is free software; you can redistribute it and/or modify 2# it under the terms of the GNU General Public License as published by 3# the Free Software Foundation; either version 2 of the License, or 4# (at your option) any later version. 5 6from tests import TestCase 7from tests.helper import realized 8 9from quodlibet import plugins 10from quodlibet import config 11 12from quodlibet.plugins import Plugin 13from quodlibet.plugins.cover import CoverSourcePlugin 14from quodlibet.qltk.models import ObjectStore 15from quodlibet.qltk.pluginwin import PluginWindow, PluginErrorWindow, \ 16 PluginListView, PluginEnabledFilterCombo, PluginPreferencesContainer, \ 17 EnabledType, PluginTypeFilterCombo 18 19 20class FakePlugin(object): 21 PLUGIN_ID = "fo<o" 22 PLUGIN_NAME = "b>ar" 23 PLUGIN_DESC = "quux" 24 25 @classmethod 26 def PluginPreferences(cls, parent): 27 return PluginEnabledFilterCombo() 28 29 30class FakePlugin2(FakePlugin): 31 32 @classmethod 33 def PluginPreferences(cls, parent): 34 return PluginWindow() 35 36 37PLUGIN = Plugin(FakePlugin) 38PLUGIN2 = Plugin(FakePlugin2) 39 40 41class TPluginWindow(TestCase): 42 def setUp(self): 43 plugins.init() 44 config.init() 45 46 def test_plugin_win(self): 47 win = PluginWindow() 48 win.destroy() 49 50 def test_plugin_error_window(self): 51 win = PluginErrorWindow(None, {"foo": ["bar", "quux"]}) 52 win.destroy() 53 54 def test_plugin_list(self): 55 model = ObjectStore() 56 model.append([PLUGIN]) 57 plist = PluginListView() 58 plist.set_model(model) 59 with realized(plist): 60 plist.select_by_plugin_id("foobar") 61 plist.destroy() 62 63 def test_enabled_filter_combo(self): 64 combo = PluginEnabledFilterCombo() 65 combo.refill(["a", "b", "c"], True) 66 self.assertEqual(combo.get_active_row()[1], EnabledType.ALL) 67 combo.destroy() 68 69 def test_type_filter_combo(self): 70 combo = PluginTypeFilterCombo() 71 # The ALL item should be first. 72 self.failUnlessEqual(combo.get_active_type(), object) 73 # Separator counts as one too 74 combo.set_active(1 + 1) 75 self.failUnlessEqual(combo.get_active_type(), CoverSourcePlugin) 76 combo.destroy() 77 78 def test_plugin_prefs(self): 79 cont = PluginPreferencesContainer() 80 cont.set_no_plugins() 81 cont.set_plugin(PLUGIN) 82 cont.set_plugin(None) 83 cont.set_plugin(PLUGIN) 84 cont.set_plugin(PLUGIN2) 85 86 def tearDown(self): 87 plugins.quit() 88 config.quit() 89