예제 #1
0
	def testResultsInSection(self):
		# Results with "only search in section" enabled
		notebook = self.setUpNotebook(content=tests.FULL_NOTEBOOK)
		page = notebook.get_page(Path('TaskList'))
		navigation = tests.MockObject()
		navigation.open_page = lambda page: tests.MockObject()

		dialog = SearchDialog(None, notebook, page, navigation)
		dialog.namespacecheckbox.set_active(True)
		dialog.query_entry.set_text('*fix*')
		dialog.query_entry.activate()
		model = dialog.results_treeview.get_model()
		self.assertTrue(len(model) > 1)

		col = dialog.results_treeview.get_column(0)
		dialog.results_treeview.row_activated(Gtk.TreePath((0,)), col)
예제 #2
0
    def testOpenFolderCreate(self):
        from zim.gui.applications import open_folder_prompt_create
        from zim.fs import adapt_from_newfs

        widget = tests.MockObject()
        folder = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL)
        myfolder = folder.folder('test')
        entry = ApplicationManager().get_fallback_filebrowser()

        def answer_yes(dialog):
            dialog.answer_yes()

        def answer_no(dialog):
            dialog.answer_no()

        with tests.DialogContext(answer_no):
            open_folder_prompt_create(widget, myfolder)

        self.assertFalse(myfolder.exists())
        self.assertEqual(self.calls, [])

        with tests.DialogContext(answer_yes):
            open_folder_prompt_create(widget, myfolder)

        self.assertTrue(myfolder.exists())
        self.assertEqual(self.calls[-1],
                         (widget, entry, adapt_from_newfs(myfolder), None))
예제 #3
0
	def testTaskListTreeView(self):
		klass = PluginManager.get_plugin_class('tasklist')
		plugin = klass()

		notebook = tests.new_notebook()
		plugin.extend(notebook)
		notebook.index.check_and_update()

		from zim.plugins.tasklist.gui import TaskListTreeView
		view = TasksView.new_from_index(notebook.index)
		opener = tests.MockObject()
		treeview = TaskListTreeView(view, opener, task_labels=['TODO', 'FIXME'])

		menu = treeview.get_popup()

		# Check these do not cause errors - how to verify state ?
		tests.gtk_activate_menu_item(menu, _("Expand _All"))
		tests.gtk_activate_menu_item(menu, _("_Collapse All"))

		# Copy tasklist -> csv
		from zim.gui.clipboard import Clipboard
		tests.gtk_activate_menu_item(menu, 'gtk-copy')
		text = Clipboard.get_text()
		lines = text.splitlines()
		self.assertTrue(len(lines) > 10)
		self.assertTrue(len(lines[0].split(',')) > 3)
		self.assertFalse(any('<span' in l for l in lines)) # make sure encoding is removed

		# Test tags
		tags = treeview.get_tags()
		for tag in ('home', 'FIXME', '__no_tags__', 'tags'):
			self.assertIn(tag, tags)
			self.assertGreater(tags[tag], 0)
예제 #4
0
    def testOpenFile(self):
        from zim.gui.applications import open_file, NoApplicationFoundError
        from zim.fs import adapt_from_newfs

        widget = tests.MockObject()

        with self.assertRaises(FileNotFoundError):
            open_file(widget, File('/non-existing'))

        folder = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL)
        myfile = folder.file('test.txt')
        myfile.touch()

        manager = ApplicationManager()
        entry = manager.create('text/plain', 'test', 'test')
        manager.set_default_application('text/plain', entry)

        open_file(widget, myfile)
        self.assertEqual(self.calls[-1],
                         (widget, entry, adapt_from_newfs(myfile), None))

        open_file(widget, myfile, mimetype='text/plain')
        self.assertEqual(self.calls[-1],
                         (widget, entry, adapt_from_newfs(myfile), None))

        with self.assertRaises(NoApplicationFoundError):
            open_file(widget,
                      myfile,
                      mimetype='x-mimetype/x-with-no-application')
예제 #5
0
    def testSearchDialog(self):
        '''Test SearchDialog'''
        from zim.gui.searchdialog import SearchDialog
        self.ui.notebook = tests.new_notebook()
        mainwindow = tests.MockObject()
        mainwindow.pageview = tests.MockObject()
        mainwindow.ui = self.ui  # XXX

        dialog = SearchDialog(mainwindow)
        dialog.query_entry.set_text('Foo')
        dialog.query_entry.activate()
        model = dialog.results_treeview.get_model()
        self.assertTrue(len(model) > 3)

        col = dialog.results_treeview.get_column(0)
        dialog.results_treeview.row_activated((0, ), col)
예제 #6
0
파일: index.py 프로젝트: pombredanne/zim
 def setUp(self):
     self.ui = tests.MockObject()
     self.ui.page = Path('Test')
     self.notebook = tests.new_notebook()
     self.ui.notebook = self.notebook
     self.model = PageTreeStore(self.notebook.index)
     self.treeview = PageTreeView(self.ui, self.model)
예제 #7
0
    def testTaskListTreeView(self):
        klass = PluginManager.get_plugin_class('tasklist')
        plugin = klass()

        notebook = tests.new_notebook()
        plugin.extend(notebook.index)
        index_ext = plugin.get_extension(IndexExtension)
        self.assertIsNotNone(index_ext)

        notebook.index.flush()
        notebook.index.update()

        from zim.plugins.tasklist import TaskListTreeView
        opener = tests.MockObject()
        treeview = TaskListTreeView(index_ext, opener)

        menu = treeview.get_popup()

        # Check these do not cause errors - how to verify state ?
        tests.gtk_activate_menu_item(menu, _("Expand _All"))
        tests.gtk_activate_menu_item(menu, _("_Collapse All"))

        # Copy tasklist -> csv
        from zim.gui.clipboard import Clipboard
        tests.gtk_activate_menu_item(menu, 'gtk-copy')
        text = Clipboard.get_text()
        lines = text.splitlines()
        self.assertTrue(len(lines) > 10)
        self.assertTrue(len(lines[0].split(',')) > 3)
        self.assertFalse(any('<span' in l
                             for l in lines))  # make sure encoding is removed
예제 #8
0
	def testContextMenu(self):
		notebook = self.setUpNotebook()
		navigation = tests.MockObject()
		pathbar = MyPathBar(None, notebook, navigation)
		button = pathbar.get_children()[2]
		menu = pathbar.get_button_popup(button)
		self.assertIsInstance(menu, Gtk.Menu)
예제 #9
0
    def runTest(self):
        def basename(name):
            if ":" in name:
                return name.split(":")[-1]
            else:
                return name

        db = sqlite3.connect(':memory:')
        db.row_factory = sqlite3.Row
        pi = PagesIndexer(db, None, tests.MockObject())
        for i, name, cont in self.PAGES:
            db.execute(
                'INSERT INTO pages(id, name, lowerbasename, sortkey, parent, source_file) VALUES (?, ?, ?, ?, 1, 1)',
                (i, name, basename(name).lower(), natural_sort_key(name)))

        ## Test PagesViewInternal methods
        iview = PagesViewInternal(db)
        i, pn = iview.resolve_pagename(Path(''), ['foo'])
        self.assertEqual((i, pn), (3, Path('Foo')))

        i, pn = iview.resolve_link(Path('Foo'), HRef.new_from_wiki_link('Bar'))
        self.assertEqual((i, pn), (2, Path('Bar')))

        ## Test the actual indexer
        pageindexer = tests.MaskedObject(pi, 'connect')
        indexer = LinksIndexer(db, pageindexer)

        for i, name, cont in self.PAGES:
            row = {
                'id': i,
                'name': name,
                'sortkey': natural_sort_key(name),
                'is_link_placeholder': False
            }
            indexer.on_page_row_inserted(pageindexer, row)

        ###
        pageindexer.setObjectAccess('insert_link_placeholder')
        for i, name, text in self.PAGES:
            tree = WikiParser().parse(text)
            row = {'id': i, 'name': name}
            indexer.on_page_changed(pageindexer, row, tree)

        indexer.update()

        links = sorted((r['source'], r['target'])
                       for r in db.execute('SELECT * FROM links'))
        self.assertEqual(links, [(3, 2), (3, 4)])

        ###
        pageindexer.setObjectAccess('remove_page')
        for i, name, cont in self.PAGES:
            row = {'id': i, 'name': name, 'is_link_placeholder': False}
            indexer.on_page_row_deleted(pageindexer, row)

        indexer.update()

        rows = db.execute('SELECT * FROM links').fetchall()
        self.assertEqual(rows, [])
예제 #10
0
	def testPersistent(self):
		# Make sure also not initialized values are kept
		text = '[Foo]\nb=test\na=test\n\n'
		file = tests.MockObject()
		file.readlines = lambda: text.splitlines(1)
		conf = INIConfigFile(file)
		self.assertEqual(list(conf['Foo'].all_items()), [('b', 'test'), ('a', 'test')])
		self.assertEqual(conf.dump(), text.splitlines(1))
예제 #11
0
    def runTest(self):
        window = tests.MockObject()
        window.pageview = setUpPageView()
        window.ui = tests.MockObject()
        window.ui.uimanager = tests.MockObject()
        window.ui.uistate = ConfigDict()
        window.ui.mainwindow = window  # XXX

        plugin = SourceViewPlugin()
        extension = MainWindowExtension(plugin, window)

        with tests.DialogContext(self.checkInsertCodeBlockDialog):
            extension.insert_sourceview()

        tree = window.pageview.get_parsetree()
        #~ print tree.tostring()
        obj = tree.find('object')
        self.assertTrue(obj.attrib['type'] == 'code')
예제 #12
0
	def setUp(self):
		self.ui = tests.MockObject()
		self.ui.page = Path('Test')
		self.notebook = tests.new_notebook()
		self.ui.notebook = self.notebook
		self.model = PageTreeStore(self.notebook.index)
		self.treeview = PageTreeView(self.ui, self.model)
		treepath = self.treeview.set_current_page(Path('Test'))
		self.treeview.select_treepath(treepath)
예제 #13
0
    def testNewPageDialog(self):
        '''Test NewPageDialog'''
        mainwindow = tests.MockObject()
        mainwindow.pageview = tests.MockObject()
        mainwindow.ui = self.ui
        mainwindow.ui.uistate = {
        }  # XXX needed to let Dialog what real ui object is ...

        for name, path in (
            (':new', ':new'),
                #('foo:new', ':Test:foo:new'),
            ('new', ':Test:foo:new'),
            ('+new', ':Test:foo:bar:new'),
        ):
            dialog = zim.gui.NewPageDialog(mainwindow)
            dialog.form.widgets['page'].set_text(name)
            dialog.assert_response_ok()
            self.assertEqual(self.ui.mock_calls[-1], ('save_page', ))
            self.assertEqual(self.ui.mock_calls[-2], ('open_page', Path(path)))
            page = self.ui.notebook.get_page(Path(path))
            self.assertTrue(page.exists())
            page.modified = False  # HACK so we can clean up
            self.ui.notebook.delete_page(page)

        for name, path in (
            (':new', ':Test:foo:bar:new'),
            ('foo:new', ':Test:foo:bar:foo:new'),
            ('new', ':Test:foo:bar:new'),
            ('+new', ':Test:foo:bar:new'),
        ):
            dialog = zim.gui.NewPageDialog(mainwindow, subpage=True)
            dialog.form.widgets['page'].set_text(name)
            dialog.assert_response_ok()
            self.assertEqual(self.ui.mock_calls[-1], ('save_page', ))
            self.assertEqual(self.ui.mock_calls[-2], ('open_page', Path(path)))
            page = self.ui.notebook.get_page(Path(path))
            self.assertTrue(page.exists())
            page.modified = False  # HACK so we can clean up
            self.ui.notebook.delete_page(page)

        dialog = zim.gui.NewPageDialog(mainwindow)
        dialog.form.widgets['page'].set_text(':Test:foo')
        self.assertRaises(Error, dialog.assert_response_ok)
예제 #14
0
	def testDeletePages(self):
		'''Check deleting a bookmark after deleting a page in the notebook.'''
		self.uistate['bookmarks'] = list(self.PATHS)
		navigation = tests.MockObject()
		bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '')
		for i, path in enumerate(self.PATHS):
			self.assertTrue(path in bar.paths)
			self.notebook.delete_page(Path(path))
			self.assertTrue(path not in bar.paths)
			self.assertEqual(len(bar.paths), self.LEN_PATHS - i - 1)
		self.assertEqual(bar.paths, [])
예제 #15
0
 def setUp(self):
     self.notebook = self.setUpNotebook(content=tests.FULL_NOTEBOOK)
     navigation = tests.MockObject()
     self.model = PageTreeStore(self.notebook.index)
     init_model_validator_wrapper(self, self.model)
     self.treeview = PageTreeView(self.notebook,
                                  navigation,
                                  model=self.model)
     treepath = self.treeview.set_current_page(Path('Test'))
     assert treepath is not None
     self.treeview.select_treepath(treepath)
예제 #16
0
	def testTreePathMethods(self):
		db = new_test_database()
		mockindex = tests.MockObject()
		mockindex._db = db
 		mockindex.update_iter = tests.MockObject()
 		mockindex.update_iter.pages = tests.MockObject()

		model = PagesTreeModelMixin(mockindex)

		# Test all pages
		for name, treepath in TREEPATHS:
			myiter = model.get_mytreeiter(treepath)
			self.assertEqual(myiter.row['name'], name)
			self.assertEqual(myiter.treepath, treepath)
			my_treepath = model.find(Path(name))
			self.assertEqual(my_treepath, treepath)

		# Test non-existing
		p = model.get_mytreeiter((1, 2, 3, 4, 5))
		self.assertIsNone(p)
		self.assertRaises(IndexNotFoundError, model.find, Path('non-existing-page'))
예제 #17
0
	def runTest(self):
		ui = MockUI()
		ui.notebook = tests.new_notebook()
		uistate = ConfigDict()
		widget = TagsPluginWidget(ui.notebook.index, uistate, ui)

		# Excersize all model switches and check we still have a sane state
		widget.toggle_treeview()
		widget.toggle_treeview()

		path = Path('Test:tags')
		ui.notebook.pages.lookup_by_pagename(path)
		treepath = widget.treeview.get_model().find(path)

		widget.disconnect_model()
		widget.reconnect_model()

		path = Path('Test:tags')
		treepath = widget.treeview.get_model().find(path)

		# Check signals
		widget.treeview.emit('populate-popup', gtk.Menu())
		widget.treeview.emit('insert-link', path)

		# Toggles in popup
		widget.toggle_show_full_page_name()
		widget.toggle_show_full_page_name()

		# Check tag filtering
		cloud = widget.tagcloud
		self.assertFalse(cloud.get_tag_filter())
		tag = None
		for button in cloud.get_children():
			if button.indextag.name == 'tags':
				tag = button.indextag
				button.clicked()
				break
		else:
			raise AssertionError('No button for @tags ?')

		selected = cloud.get_tag_filter()
		self.assertEqual(selected, [tag])
		model = widget.treeview.get_model()
		self.assertIsInstance(model, TaggedPageTreeStore)
		self.assertEqual(model.tags, [tag.name])

		# check menu and sorting of tag cloud
		cloud.emit('populate-popup', gtk.Menu())
		mockaction = tests.MockObject()
		mockaction.get_active = lambda: True
		cloud._switch_sorting(mockaction)
		mockaction.get_active = lambda: False
		cloud._switch_sorting(mockaction)
예제 #18
0
    def runTest(self):
        db = sqlite3.connect(':memory:')
        db.row_factory = sqlite3.Row

        indexer = TagsIndexer(db, tests.MockObject(), tests.MockObject())
        for i, name, text in self.PAGES:
            tree = WikiParser().parse(text)
            row = {'id': i, 'name': name}
            indexer.on_page_changed(None, row, tree)
        indexer.on_finish_update(None)

        self.assertTags(db, [('tag1', 1), ('tag2', 2), ('tag3', 3)], [(1, 2),
                                                                      (2, 2),
                                                                      (2, 3),
                                                                      (3, 3)])

        for i, name, content in self.PAGES:
            row = {'id': i, 'name': name}
            indexer.on_page_row_deleted(None, row)
        indexer.on_finish_update(None)

        self.assertTags(db, [], [])
예제 #19
0
	def runTest(self):
		someobject = tests.MockObject()
		someobject.uri = "file:///foo"

		for (input, uris, text) in (
			((File("/foo"),), (File("/foo").uri,), File("/foo").path),
			((File("~/foo"),), (File("~/foo").uri,), "~/foo"),
			(("file:///foo",), ("file:///foo",), "file:///foo"),
			((someobject,), ("file:///foo",), "file:///foo"),
			(("file:///foo", "file:///bar"), ("file:///foo", "file:///bar"), "file:///foo file:///bar"),
		):
			data = UriData(*input)
			self.assertEqual(data.get_data_as(URI_TARGET_ID), uris)
			self.assertEqual(data.get_data_as(TEXT_TARGET_ID), text)
예제 #20
0
파일: indexviews.py 프로젝트: thorhans/zimt
    def testTagsTreePathMethods(self):
        db = new_test_database()
        mockindex = tests.MockObject()
        mockindex._db = db
        mockindex.update_iter = tests.MockObject()
        mockindex.update_iter.pages = tests.MockObject()
        mockindex.update_iter.tags = tests.MockObject()

        model = TagsTreeModelMixin(mockindex, tags=('tag1', 'tag2'))
        tags = TagsView(db)

        # Test all pages
        for name, treepath in TREEPATHS_TAGS_12:
            myiter = model.get_mytreeiter(treepath)
            self.assertEqual(myiter.row['name'], name)
            self.assertEqual(myiter.treepath, Gtk.TreePath(treepath))
            if len(treepath) == 1:
                tag = tags.lookup_by_tagname(name)
                my_treepaths = model.find_all(tag)
            else:
                my_treepaths = model.find_all(Path(name))

            self.assertIn(Gtk.TreePath(treepath), my_treepaths)
            for treepath in my_treepaths:
                myiter = model.get_mytreeiter(treepath)
                self.assertEqual(myiter.row['name'], name)

        # Test no more data than above
        treepaths = list(self.walk_treepaths(model))
        self.assertEqual(treepaths, list(TREEPATHS_TAGS_12))

        # Test non-existing
        p = model.get_mytreeiter((1, 2, 3, 4, 5))
        self.assertIsNone(p)
        self.assertRaises(IndexNotFoundError, model.find_all,
                          Path('non-existing-page'))
예제 #21
0
    def testAttachFileDialog(self):
        '''Test AttachFileDialog'''
        tmp_dir = self.create_tmp_dir('testAttachFileDialog')
        file = File((tmp_dir, 'file_to_be_attached'))
        file.write('Test 1 2 3\n')
        newfile = File(
            (tmp_dir, 'attachments', 'Test', 'foo', 'file_to_be_attached'))
        self.assertTrue(file.exists())
        self.assertFalse(newfile.exists())

        mainwindow = tests.MockObject()
        mainwindow.pageview = tests.MockObject()
        mainwindow.ui = self.ui

        dialog = zim.gui.AttachFileDialog(mainwindow,
                                          self.ui.notebook,
                                          path=Path('Test:foo'))
        dialog.set_file(file)
        tests.gtk_process_events()
        dialog.assert_response_ok()

        self.assertTrue(file.exists())  # No move or delete happened
        self.assertTrue(newfile.exists())
        self.assertTrue(newfile.compare(file))
예제 #22
0
	def testOpenFolder(self):
		from zim.gui.applications import open_folder
		from zim.fs import adapt_from_newfs

		widget = tests.MockObject()

		with self.assertRaises(FileNotFoundError):
			open_folder(widget, File('/non-existing'))

		folder = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL)
		myfolder = folder.folder('test')
		myfolder.touch()

		entry = ApplicationManager().get_fallback_filebrowser()
		open_folder(widget, myfolder)
		self.assertEqual(self.calls[-1], (widget, entry, adapt_from_newfs(myfolder), None))
예제 #23
0
파일: indexers.py 프로젝트: thorhans/zimt
    def runTest(self):
        folder = self.setUpFolder()
        layout = FilesLayout(folder)
        db = sqlite3.connect(':memory:')
        db.row_factory = sqlite3.Row

        file_indexer = tests.MockObject()

        indexer = PagesIndexer(db, layout, file_indexer)

        id1 = indexer.insert_page(Path('Test'), None)
        with tests.LoggingFilter('zim.notebook.index',
                                 'Error while inserting page'):
            id2 = indexer.insert_page(Path('Test'), None)

        self.assertEqual(id1, id2)
예제 #24
0
    def runTest(self):
        opener = tests.MockObject()
        iconview = FileBrowserIconView(opener)

        dir = self.SRC_DIR.folder('data/pixmaps')
        iconview.set_folder(dir)

        # simulate idle events
        while not iconview._thumbnailer.queue_empty():
            iconview._on_check_thumbnail_queue()

        # refresh while nothing changed
        iconview.refresh()
        while not iconview._thumbnailer.queue_empty():
            iconview._on_check_thumbnail_queue()

        iconview.teardown_folder()
예제 #25
0
	def testOpenUrl(self):
		from zim.gui.applications import open_url

		widget = tests.MockObject()

		with self.assertRaises(ValueError):
			open_url(widget, '/test/some/file.txt')

		for uri in (
			'file://test/some/file.txt',
			'http://example.com',
			'mailto:[email protected]',
			'smb://host/share/file.txt',
		):
			open_url(widget, uri)
			self.assertEqual(self.calls[-1][2], uri)

		open_url(widget, '\\\\host\\share\\file.txt')
		self.assertEqual(self.calls[-1][2], 'smb://host/share/file.txt')
예제 #26
0
    def testLatexExport(self):
        from zim.formats.wiki import Parser as WikiParser
        from zim.formats.latex import Dumper as LatexDumper

        folder = self.setUpFolder()
        folder.file('equation001.tex').write('a + b')
        # equation002.tex does not exist - check fallback to image

        wiki = '{{./equation001.png?type=equation}}\n{{./equation002.png?type=equation}}\n'
        wanted = '\\begin{math}\na + b\n\\end{math}\n\n\\includegraphics[]{./equation002.png}\n\n'

        linker = tests.MockObject()
        linker.resolve_source_file = lambda name: folder.file(name)
        linker.img = lambda name: name

        tree = WikiParser().parse(wiki)
        latex = LatexDumper(linker).dump(tree)

        self.assertEqual(latex, wanted.splitlines(True))
예제 #27
0
    def runTest(self):
        notebook = self.setUpNotebook()
        config = VirtualConfigManager()
        navigation = tests.MockObject()
        model = PageTreeStore(notebook.index)
        init_model_validator_wrapper(self, model)
        treeview = PageTreeView(notebook, config, navigation, model=model)

        signals = []

        def signal_logger(o, *a):
            path = a[0].to_string()
            signal = a[-1]
            signals.append((signal, path))
            #print(">>>", signal, path)

        for signal in ('row-inserted', 'row-changed', 'row-deleted',
                       'row-has-child-toggled'):
            model.connect(signal, signal_logger, signal)

        for path in map(Path, self.PAGES):
            page = notebook.get_page(path)
            page.parse('plain', 'Test 123\n')
            notebook.store_page(page)

        expect_add = [('row-inserted', '0'), ('row-changed', '0'),
                      ('row-inserted', '0:0'), ('row-has-child-toggled', '0'),
                      ('row-changed', '0'), ('row-changed', '0:0'),
                      ('row-inserted', '0:1'), ('row-changed', '0'),
                      ('row-changed', '0:1'), ('row-inserted', '1'),
                      ('row-changed', '1'), ('row-inserted', '2'),
                      ('row-changed', '2')]
        self.assertEqual(signals, expect_add)
        signals[:] = []

        for path in reversed(self.PAGES):
            notebook.delete_page(Path(path))

        expect_del = [('row-deleted', '2'), ('row-deleted', '1'),
                      ('row-deleted', '0:1'), ('row-changed', '0'),
                      ('row-deleted', '0:0'), ('row-has-child-toggled', '0'),
                      ('row-changed', '0'), ('row-deleted', '0')]
        self.assertEqual(signals, expect_del)
예제 #28
0
파일: tags.py 프로젝트: thorhans/zimt
    def testTreeView(self):
        self.notebook.index.flush()  # we want to index ourselves
        navigation = tests.MockObject()
        treestore = self.storeclass(self.notebook.index, self.tags)
        init_model_validator_wrapper(self, treestore)
        treeview = self.viewclass(self.notebook, navigation, treestore)

        # Process signals on by one
        self.assertEqual(self.notebook.pages.n_all_pages(),
                         0)  # assert we start blank
        for p in self.notebook.index.update_iter():
            tests.gtk_process_events()
        tests.gtk_process_events()

        # Try some TreeView methods
        path = Path('foobar')
        treepath = treeview.get_model().find(path)
        self.assertEqual(treeview.set_current_page(path), treepath)
        col = treeview.get_column(0)
        treeview.row_activated(treepath, col)

        #~ treeview.emit('popup-menu')
        treeview.emit('insert-link', path)
        treeview.emit('copy')

        # Check signals for page change
        page = self.notebook.get_page(Path('Foo'))

        page.parse('wiki', 'Fooo @tag1 @tag2\n')
        self.notebook.store_page(page)
        tests.gtk_process_events()

        page.parse('wiki', 'Fooo @foo @bar @tag2\n')
        self.notebook.store_page(page)
        tests.gtk_process_events()

        # Check if all the signals go OK in delete
        for page in reversed(list(
                self.notebook.pages.walk())):  # delete bottom up
            self.notebook.delete_page(page)
            tests.gtk_process_events()
예제 #29
0
	def testGeneral(self):
		'''Test general functions: add, delete bookmarks.'''
		navigation = tests.MockObject()
		bar = BookmarkBar(self.notebook, navigation, self.uistate, get_page_func = lambda: '')
		bar.max_bookmarks = 15 # set maximum number of bookmarks

		# Add paths to the beginning of the bar.
		for i, path in enumerate(self.PATHS):
			bar._add_new(path, add_bookmarks_to_beginning = True)
			self.assertEqual(len(bar.paths), i + 1)
		self.assertTrue(bar.paths == list(reversed(self.PATHS)))

		# Add paths to the end of the bar.
		bar.paths = []
		for i, path in enumerate(self.PATHS):
			bar._add_new(path, add_bookmarks_to_beginning = False)
			self.assertEqual(len(bar.paths), i + 1)
		self.assertEqual(bar.paths, list(self.PATHS))

		# Check that the same path can't be added to the bar.
		bar._add_new(self.PATHS[0])
		bar._add_new(self.PATHS[1])
		self.assertEqual(bar.paths, list(self.PATHS))

		# Delete paths from the bar.
		for i, button in enumerate(bar.scrolledbox.get_scrolled_children()):
			path = button.zim_path
			self.assertTrue(path in bar.paths)
			bar.delete(button.zim_path)
			self.assertEqual(len(bar.paths), self.LEN_PATHS - i - 1)
			self.assertTrue(path not in bar.paths)
		self.assertEqual(bar.paths, [])

		# Delete all bookmarks from the bar.
		bar.delete_all()
		self.assertEqual(bar.paths, [])
예제 #30
0
 def testActivatePage(self):
     navigation = tests.MockObject()
     pathbar = MyPathBar(None, None, navigation)
     button = pathbar.get_children()[2]
     button.clicked()
     self.assertEqual(navigation.mock_calls, [('open_page', Path('bbb'))])