def testShowServerDialog(self): from zim.main import ZIM_APPLICATION ZIM_APPLICATION._running = True # HACK from zim.gui.server import ServerWindow ServerWindow.show_all = tests.Counter() ServerWindow.present = tests.Counter() self.uiactions.show_server_gui() self.assertEqual(ServerWindow.present.count, 1)
def testInitialization(self): '''Test Gtk interface initialization''' # test read only (starts readonly because notebook has no dir or file) #~ self.assertTrue(self.ui.readonly) self.ui.set_readonly(False) self.assertFalse(self.ui.readonly) self.ui.set_readonly(True) self.assertTrue(self.ui.readonly) # TODO more tests for readonly pages etc. # test populating menus menu = gtk.Menu() self.ui.populate_popup('page_popup', menu) items = menu.get_children() self.assertGreater(len(items), 3) # check registering an URL handler func = tests.Counter(True) self.ui.register_url_handler('foo', func) self.ui.open_url('foo://bar') self.assertTrue(func.count == 1) self.ui.unregister_url_handler(func) # check default plugins are loaded self.assertGreaterEqual(len(self.ui.plugins), 3)
def runTest(self): counter = tests.Counter() callback = DelayedCallback(500, lambda o: counter()) for i in range(3): callback('foo') for i in range(10): time.sleep(1) tests.gtk_process_events() if callback.timer_id is None: break self.assertEqual(counter.count, 1)
def testOpenAboutDialog(self): from zim.gui.uiactions import MyAboutDialog MyAboutDialog.run = tests.Counter() self.uiactions.show_about() self.assertEqual(MyAboutDialog.run.count, 1)
def runTest(self): manager = self.manager ## Test basic file file = manager.get_config_file('foo.conf') self.assertIsInstance(file, ConfigFile) self.assertEquals(file.read(), 'FOO!\n') newfile = manager.get_config_file('foo.conf') self.assertEqual(id(file), id(newfile)) ## Test basic dict dict = manager.get_config_dict('<profile>/dict.conf') self.assertIsInstance(dict, INIConfigFile) dict['FOO'].setdefault('foo', 'xxx') self.assertEqual(dict['FOO']['foo'], 'test') newdict = manager.get_config_dict('<profile>/dict.conf') self.assertEqual(id(dict), id(newdict)) dict['FOO'].setdefault('bar', 'yyy') dict['FOO'].setdefault('newkey', 'ja') dict['FOO']['foo'] = 'dus' text = manager.get_config_file('dict.conf').read() # We implicitly test that updates are stored already automatically self.assertEquals(text, '''\ [FOO] foo=dus bar=test123 newkey=ja ''') ## Test profile switch changed_counter = tests.Counter() dict['FOO'].connect('changed', changed_counter) manager.set_profile('myprofile') self.assertEqual(changed_counter.count, 1) newfile = manager.get_config_file('foo.conf') self.assertEqual(newfile.file, file.file) self.assertFalse('myprofile' in newfile.file.path) newfile = manager.get_config_file('<profile>/dict.conf') self.assertMatchPath(newfile.file, self.prefix + '/profiles/myprofile/dict.conf') newdict = manager.get_config_dict('<profile>/dict.conf') self.assertEqual(id(newdict), id(dict)) self.assertEqual(newdict.file, newfile) self.assertEqual(dict['FOO']['foo'], 'myprofile') self.assertEqual(dict['FOO']['bar'], 'test123') ## Test profile backward compatibility manager.set_profile('oldprofile') self.assertEqual(changed_counter.count, 2) conffile = manager.get_config_file('<profile>/preferences.conf') file, defaults = conffile.file, list(conffile.defaults) self.assertMatchPath( file, self.prefix + '/profiles/oldprofile/preferences.conf') self.assertMatchPath(defaults[0], self.prefix + '/profiles/oldprofile.conf') conffile = manager.get_config_file('<profile>/style.conf') file, defaults = conffile.file, list(conffile.defaults) self.assertMatchPath(file, self.prefix + '/profiles/oldprofile/style.conf') self.assertMatchPath(defaults[0], self.prefix + '/styles/oldprofile.conf')
def runTest(self): dir = Dir(self.create_tmp_dir()) notebook = Notebook.new_from_dir(dir) page = notebook.get_page(Path('SomePage')) orig_store_page_1 = notebook.store_page orig_store_page_2 = notebook.store_page_async store_page_counter = tests.Counter() def wrapper1(page): store_page_counter() orig_store_page_1(page) def wrapper2(page, tree): store_page_counter() return orig_store_page_2(page, tree) notebook.store_page = wrapper1 notebook.store_page_async = wrapper2 pageview = tests.MockObject() pageview.readonly = False handler = SavePageHandler(pageview, notebook, lambda: page) # Normal operation self.assertFalse(page.modified) handler.try_save_page() self.assertEqual(store_page_counter.count, 0) self.assertFalse(page.modified) handler.save_page_now() self.assertEqual(store_page_counter.count, 1) page.modified = True handler.try_save_page() self.assertEqual(store_page_counter.count, 2) ongoing_operation(notebook)() # effectively a join self.assertFalse(page.modified) page.modified = True handler.save_page_now() self.assertEqual(store_page_counter.count, 3) self.assertFalse(page.modified) # With errors def wrapper3(page): raise AssertionError def wrapper4(page, tree): def error_cb(): raise AssertionError return orig_store_page_2(page, error_cb) notebook.store_page = wrapper3 notebook.store_page_async = wrapper4 page.modified = True def catch_dialog(dialog): assert isinstance(dialog, SavePageErrorDialog) with tests.LoggingFilter('zim'): with tests.DialogContext(catch_dialog): handler.save_page_now() self.assertTrue(page.modified) # For autosave first error is ignore, 2nd results in dialog self.assertFalse(handler._error_event and handler._error_event.is_set()) with tests.LoggingFilter('zim'): handler.try_save_page() ongoing_operation(notebook)() # effectively a join self.assertTrue(handler._error_event and handler._error_event.is_set()) with tests.LoggingFilter('zim'): with tests.DialogContext(catch_dialog): handler.try_save_page() self.assertTrue(page.modified)