示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
 def testOpenAboutDialog(self):
     from zim.gui.uiactions import MyAboutDialog
     MyAboutDialog.run = tests.Counter()
     self.uiactions.show_about()
     self.assertEqual(MyAboutDialog.run.count, 1)
示例#5
0
    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')
示例#6
0
    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)