def testSubwikiParams (self): """ Проверка того, что установка параметров страницы как полноценной вики не портит исходные параметры """ param = StringOption (self.wikiroot["Страница 1"].params, "TestSection_1", "value1", "") param.value = "Значение 1" path = os.path.join (self.path, "Страница 1") subwiki = WikiDocument.load (path) subwikiparam = StringOption (subwiki.params, "TestSection_1", "value1", "") self.assertEqual (subwikiparam.value, "Значение 1") # Добавим новый параметр subwikiparam1 = StringOption (subwiki.params, "TestSection_1", "value1", "") subwikiparam2 = StringOption (subwiki.params, "TestSection_2", "value2", "") subwikiparam2.value = "Значение 2" self.assertEqual (subwikiparam1.value, "Значение 1") self.assertEqual (subwikiparam2.value, "Значение 2") # На всякий случай прочитаем вики еще раз wiki = WikiDocument.load (self.path) wikiparam1 = StringOption (wiki["Страница 1"].params, "TestSection_1", "value1", "") wikiparam2 = StringOption (wiki["Страница 1"].params, "TestSection_2", "value2", "") self.assertEqual (wikiparam1.value, "Значение 1") self.assertEqual (wikiparam2.value, "Значение 2")
def testInvalidWikiRoot2 (self): """ Тест на обработку ошибки в файле __page.opt корня вики """ def __createInvalidWiki2 (): # Здесь будет создаваться вики path = u"../test/testwiki" removeWiki (path) rootwiki = WikiDocument.create (path) TextPageFactory.create (rootwiki, u"Страница 1", []) TextPageFactory.create (rootwiki[u"Страница 1"], u"Страница 2", []) # Испортим файл __page.opt with open (os.path.join (rootwiki.path, u"__page.opt"), "w") as fp: fp.write (u"[General]\naaa=xxx\n<<<<<<<<wsfsdf sdf sdfasdfdsf \nasfasdsadf") return path path = __createInvalidWiki2 () self.assertRaises (RootFormatError, WikiDocument.load, path) # Сбросим файл __page.opt WikiDocument.clearConfigFile (path) # Теперь ошибок быть не должно WikiDocument.load (path) removeWiki (path)
def testInvalidWikiRoot2 (self): """ Тест на обработку ошибки в файле __page.opt корня вики """ def __createInvalidWiki2 (): # Здесь будет создаваться вики path = mkdtemp (prefix=u'Абырвалг абыр') removeDir (path) rootwiki = WikiDocument.create (path) factory = TextPageFactory() factory.create (rootwiki, u"Страница 1", []) factory.create (rootwiki[u"Страница 1"], u"Страница 2", []) # Испортим файл __page.opt with open (os.path.join (rootwiki.path, u"__page.opt"), "w") as fp: fp.write (u"[General]\naaa=xxx\n<<<<<<<<wsfsdf sdf sdfasdfdsf \nasfasdsadf") return path path = __createInvalidWiki2 () WikiDocument.load (path) removeDir (path)
def testLoad(self): path = u"../test/samplewiki" Application.onTreeUpdate += self.treeUpdate self.assertFalse(self.isTreeUpdate) WikiDocument.load(path) self.assertFalse(self.isTreeUpdate) self.assertEqual(self.treeUpdateSender, None) self.assertEqual(self.treeUpdateCount, 0) Application.onTreeUpdate -= self.treeUpdate
def testLoad_02 (self): path = u"../test/samplewiki" Application.getEvent ('onTreeUpdate').bind (self.treeUpdate) self.assertFalse(self.isTreeUpdate) WikiDocument.load (path) self.assertFalse (self.isTreeUpdate) self.assertEqual (self.treeUpdateSender, None) self.assertEqual (self.treeUpdateCount, 0) Application.getEvent ('onTreeUpdate').unbind (self.treeUpdate)
def testSaveTabs5(self): wiki = WikiDocument.load(self.wikiroot.path) self.application.wikiroot = wiki self.application.selectedPage = wiki["Страница 1"] self._tabsController.cloneTab() self._tabsController.openInTab(wiki["Страница 2"], True) self.assertEqual(self._tabsController.getTabsCount(), 3) # Загрузим вики еще раз, чтобы убедиться, что состояние вкладок мы не поменяли otherwiki = WikiDocument.load(self.wikiroot.path) self.application.wikiroot = otherwiki self.assertEqual(self._tabsController.getTabsCount(), 3) self.assertEqual(self.application.selectedPage, otherwiki["Страница 2"])
def testReadOnly (self): wikiReadOnly = WikiDocument.load (self.path, readonly=True) Application.wikiroot = wikiReadOnly Application.selectedPage = wikiReadOnly[u"Страница 1"] self._tabsController.cloneTab() self._tabsController.openInTab (wikiReadOnly[u"Страница 2"], True) self.assertEqual (self._tabsController.getTabsCount(), 3) # Загрузим вики еще раз, чтобы убедиться, что состояние вкладок мы не поменяли otherwiki = WikiDocument.load (self.path, readonly=True) Application.wikiroot = otherwiki self.assertEqual (self._tabsController.getTabsCount(), 1) self.assertEqual (Application.selectedPage, None)
def testReadOnly_03 (self): os.chmod (self._getConfigPath (self.wikiroot[u"Страница 2"]), stat.S_IRUSR | stat.S_IXUSR) wiki2 = WikiDocument.load (self.path) self.assertTrue (wiki2[u"Страница 2"].readonly) self.assertFalse (wiki2[u"Страница 2/Страница 3"].readonly) self.assertFalse (wiki2[u"Страница 2/Страница 3/Страница 4"].readonly)
def testReadOnly_02 (self): os.chmod (self._getConfigPath (self.wikiroot), stat.S_IRUSR | stat.S_IXUSR) wiki2 = WikiDocument.load (self.path) self.assertTrue (wiki2[u"Страница 1"].readonly) self.assertTrue (wiki2[u"Страница 1/Страница 5"].readonly) self.assertTrue (wiki2[u"Страница 2"].readonly)
def testLoadWiki(self): TextPageFactory().create(self.wikiroot, u"Страница 1", []) newdate = datetime.datetime(2012, 8, 24) self.wikiroot[u"Страница 1"].datetime = newdate newroot = WikiDocument.load(self.path) self.assertEqual(newroot[u"Страница 1"].datetime, newdate)
def testSelection(self): wikiroot = WikiDocument.load(self.path) html_page = wikiroot[u"Типы страниц/HTML-страница"] self.assertEqual( type(FactorySelector.getFactory(html_page.getTypeString())), HtmlPageFactory) text_page = wikiroot[u"Типы страниц/Текстовая страница"] self.assertEqual( type(FactorySelector.getFactory(text_page.getTypeString())), TextPageFactory) wiki_page = wikiroot[u"Типы страниц/wiki-страница"] self.assertEqual( type(FactorySelector.getFactory(wiki_page.getTypeString())), WikiPageFactory) search_page = wikiroot[u"Типы страниц/Страница поиска"] self.assertEqual( type(FactorySelector.getFactory(search_page.getTypeString())), SearchPageFactory) test_page = wikiroot[u"Типы страниц/TestPage"] self.assertEqual( type(FactorySelector.getFactory(test_page.getTypeString())), TextPageFactory)
def testCreateTextContent(self): wiki = WikiDocument.load(self.path) self.assertEqual(wiki["Страница 1"].content, "1234567") self.assertEqual(wiki["Страница 2/Страница 3"].content, "Абырвалг") self.assertEqual(wiki["Страница 2/Страница 3/Страница 4"].content, "Тарам-пам-пам") self.assertEqual(wiki["Страница 1/Страница 5"].content, "111111")
def testReplaceIcon(self): wiki = WikiDocument.load(self.path) wiki["Страница 1"].icon = self.icons[3] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.ico") wiki["Страница 1"].icon = self.icons[1] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.png") wiki["Страница 1"].icon = self.icons[0] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.gif") wiki["Страница 1"].icon = self.icons[2] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.jpg") wiki["Страница 1"].icon = self.icons[3] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.ico") wiki["Страница 1"].icon = self.icons[0] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.gif") wiki["Страница 1"].icon = self.icons[1] self.assertEqual(os.path.basename(wiki["Страница 1"].icon), "__icon.png")
def threadFunc (path, readonly): try: return WikiDocument.load (path, readonly) except IOError as error: return error except outwiker.core.exceptions.RootFormatError as error: return error
def testInvalidContent(self): """ Тест страницы с испорченным контентом """ wiki = WikiDocument.load(self.path) page = wiki["Испорченный content"] self.assertEqual(page.content, "")
def testAttach (self): page1 = u"Страница 1" page3 = u"Страница 2/Страница 3" filesPath = u"../test/samplefiles/" files = [u"accept.png", u"add.png", u"anchor.png"] fullFilesPath = [os.path.join (filesPath, fname) for fname in files] # Прикрепим к двум страницам файлы Attachment (self.wikiroot[page1]).attach (fullFilesPath) Attachment (self.wikiroot[page3]).attach ([fullFilesPath[0], fullFilesPath[1]]) # Заново загрузим вики wiki = WikiDocument.load (self.path) # Проверим, что файлы прикрепились к тем страницам, куда прикрепляли self.assertEqual (len (Attachment (wiki[page1]).attachmentFull), 3) self.assertEqual (len (Attachment (wiki[page3]).attachmentFull), 2) self.assertEqual (len (Attachment (wiki[u"Страница 2"]).attachmentFull), 0) # Проверим пути до прикрепленных файлов attachPathPage1 = TextPageAttachmentTest.getFullAttachPath (wiki, page1, files) attachPathPage3 = TextPageAttachmentTest.getFullAttachPath (wiki, page3, files) self.assertTrue (attachPathPage1[0] in Attachment (wiki[page1]).attachmentFull) self.assertTrue (attachPathPage1[1] in Attachment (wiki[page1]).attachmentFull) self.assertTrue (attachPathPage1[2] in Attachment (wiki[page1]).attachmentFull) self.assertTrue (attachPathPage3[0] in Attachment (wiki[page3]).attachmentFull) self.assertTrue (attachPathPage3[1] in Attachment (wiki[page3]).attachmentFull)
def testLoad(self): page = self.wikiroot[u"Страница 1"] page.title = u"Страница 1 new" wiki = WikiDocument.load(self.path) self.assertNotEqual(wiki[u"Страница 1 new"], None) self.assertEqual(wiki[u"Страница 1"], None)
def testPageSelectLoad (self): Application.onPageSelect += self.pageSelect removeWiki (self.path) rootwiki = WikiDocument.create (self.path) TextPageFactory.create (rootwiki, u"Страница 1", []) TextPageFactory.create (rootwiki, u"Страница 2", []) TextPageFactory.create (rootwiki[u"Страница 2"], u"Страница 3", []) document = WikiDocument.load (self.path) Application.wikiroot = document self.assertEqual (document.selectedPage, None) document.selectedPage = document[u"Страница 1"] self.assertEqual (document.selectedPage, document[u"Страница 1"]) self.assertEqual (self.isPageSelect, True) self.assertEqual (self.pageSelectSender, document[u"Страница 1"]) self.assertEqual (self.pageSelectCount, 1) document.selectedPage = document[u"Страница 2/Страница 3"] self.assertEqual (document.selectedPage, document[u"Страница 2/Страница 3"]) self.assertEqual (self.isPageSelect, True) self.assertEqual (self.pageSelectSender, document[u"Страница 2/Страница 3"]) self.assertEqual (self.pageSelectCount, 2) Application.onPageSelect -= self.pageSelect
def testLoadingOldVersion2(self): """ Тест на чтение вики старой версии, когда еще не было параметра order """ TextPageFactory().create(self.wikiroot, u"Страница 1", []) TextPageFactory().create(self.wikiroot, u"Страница 0", []) TextPageFactory().create(self.wikiroot, u"Страница 3", []) TextPageFactory().create(self.wikiroot, u"Страница 2", []) # Удалим параметры order IntegerOption(self.wikiroot[u"Страница 0"].params, PageConfig.sectionName, PageConfig.orderParamName, -1).remove_option() IntegerOption(self.wikiroot[u"Страница 1"].params, PageConfig.sectionName, PageConfig.orderParamName, -1).remove_option() IntegerOption(self.wikiroot[u"Страница 2"].params, PageConfig.sectionName, PageConfig.orderParamName, -1).remove_option() IntegerOption(self.wikiroot[u"Страница 3"].params, PageConfig.sectionName, PageConfig.orderParamName, -1).remove_option() wikiroot = WikiDocument.load(self.path) self.assertEqual(wikiroot[u"Страница 0"].order, 0) self.assertEqual(wikiroot[u"Страница 1"].order, 1) self.assertEqual(wikiroot[u"Страница 2"].order, 2) self.assertEqual(wikiroot[u"Страница 3"].order, 3)
def testSelection5 (self): self.rootwiki.selectedPage = self.rootwiki[u"Страница 2/Страница 3"] self.rootwiki[u"Страница 2"].remove() wiki2 = WikiDocument.load (self.path) self.assertEqual (wiki2.selectedPage, None)
def testNotPage (self): """ Тест папок, которые не являются страницами """ wiki = WikiDocument.load (path) page = wiki[u"Просто папка"] self.assertEqual (page, None)
def testAutoLineWrapRename (self): self.rootwiki[u"Страница 1"].autoLineWrap = False self.rootwiki[u"Страница 1"].title = u"Страница 666" self.assertFalse (self.rootwiki[u"Страница 666"].autoLineWrap) wiki = WikiDocument.load (self.path) self.assertFalse (wiki[u"Страница 666"].autoLineWrap)
def testEmptyContent (self): """ Тест страницы без файла контента """ wiki = WikiDocument.load (path) page = wiki[u"Страница без контента"] self.assertEqual (page.content, "")
def testChangeContent(self): from webpage.webnotepage import WebPageFactory wikiroot = WikiDocument.create(self.path) test_page = WebPageFactory().create(wikiroot, "Страница 1", []) test_page.content = "Абырвалг" self.application.wikiroot = wikiroot self.application.selectedPage = test_page pageview = self.application.mainWindow.pagePanel.pageView pageview.codeEditor.SetText("Бла-бла-бла") pageview.Save() self.application.selectedPage = None self.application.wikiroot = None wikiroot_other = WikiDocument.load(self.path) self.application.wikiroot = wikiroot_other self.application.selectedPage = wikiroot_other["Страница 1"] pageview = self.application.mainWindow.pagePanel.pageView pageContent = pageview.codeEditor.GetText() self.assertEqual(pageContent, "Бла-бла-бла")
def setUp (self): # Здесь будет создаваться вики self.path = mkdtemp (prefix=u'Абырвалг абыр') self._exampleStyleDir = u"../styles/example_jblog" self._exampleStyleDir2 = u"../styles/example_jnet" wiki = WikiDocument.create (self.path) factory = TextPageFactory() factory.create (wiki, u"Страница 1", []) factory.create (wiki, u"Страница 2", []) factory.create (wiki[u"Страница 2"], u"Страница 3", []) factory.create (wiki[u"Страница 2/Страница 3"], u"Страница 4", []) factory.create (wiki[u"Страница 1"], u"Страница 5", []) factory.create (wiki, u"страница 4", []) filesPath = u"../test/samplefiles/" files = [u"accept.png", u"add.png", u"anchor.png"] fullFilesPath = [os.path.join (filesPath, fname) for fname in files] Attachment (wiki[u"Страница 4"]).attach (fullFilesPath) Attachment (wiki[u"Страница 1/Страница 5"]).attach (fullFilesPath) self.wiki = WikiDocument.load (self.path, readonly=True)
def __rootFormatErrorHandle(path, readonly): """ Обработчик исключения outwiker.core.exceptions.RootFormatError """ if readonly: # Если вики открыт только для чтения, то нельзя изменять файлы __canNotLoadWikiMessage(path) return if (__wantClearWikiOptions(path) != wx.YES): return # Обнулим файл __page.opt WikiDocument.clearConfigFile(path) # Попробуем открыть вики еще раз try: # Загрузить вики wikiroot = WikiDocument.load(os.path.realpath(path), readonly) Application.wikiroot = wikiroot except IOError: __canNotLoadWikiMessage(path) except outwiker.core.exceptions.RootFormatError: __canNotLoadWikiMessage(path) finally: pass
def test_alias_readonly_01(self): newwiki = WikiDocument.load(self.path, readonly=True) page = newwiki[u'Страница 1'] self.assertRaises(ReadonlyException, self._changeAlias, page, u'Тест')
def testRestoreReadonly_02(self): from sessions.sessioncontroller import SessionController wiki = WikiDocument.load(self.wikiroot.path, readonly=True) self.application.wikiroot = wiki self.application.selectedPage = wiki["Страница 1"] tabsController = self.application.mainWindow.tabsController tabsController.openInTab(wiki["Страница 2"], True) tabsController.openInTab(wiki["Страница 1/Страница 3/Страница 4"], True) tabsController.openInTab(wiki["Страница 1/Страница 3"], False) controller = SessionController(self.application) session = controller.getCurrentSession() tabsController.closeTab(1) tabsController.closeTab(1) tabsController.closeTab(1) controller.restore(session) self.assertEqual(os.path.abspath(self.application.wikiroot.path), os.path.abspath(self.wikiroot.path)) self.assertTrue(self.application.wikiroot.readonly) self.assertEqual(os.path.abspath(self.application.wikiroot.path), os.path.abspath(self.wikiroot.path)) self.assertEqual(tabsController.getTabsCount(), 4) self.assertEqual(tabsController.getSelection(), 2) self.assertEqual(tabsController.getPage(0).title, "Страница 1") self.assertEqual(tabsController.getPage(1).title, "Страница 2") self.assertEqual(tabsController.getPage(2).title, "Страница 4") self.assertEqual(tabsController.getPage(3).title, "Страница 3")
def testRestore_05(self): from sessions.sessioncontroller import SessionController self.__createWiki2() wiki2 = WikiDocument.load(self.path2, True) self.application.wikiroot = self.wikiroot self.application.selectedPage = self.wikiroot["Страница 1"] tabsController = self.application.mainWindow.tabsController tabsController.openInTab(self.wikiroot["Страница 2"], True) controller = SessionController(self.application) session = controller.getCurrentSession() uid1 = self._getPageLink(self.wikiroot["Страница 1"]) uid2 = self._getPageLink(self.wikiroot["Страница 2"]) self.application.wikiroot = wiki2 self.assertEqual(tabsController.getTabsCount(), 1) controller.restore(session) self.assertEqual(os.path.abspath(self.application.wikiroot.path), os.path.abspath(self.wikiroot.path)) self.assertEqual(tabsController.getTabsCount(), 2) self.assertEqual(tabsController.getSelection(), 1) newsession = controller.getCurrentSession() self.assertEqual(newsession.pages[0], uid1) self.assertEqual(newsession.pages[1], uid2)
def testSaveSession_06(self): from sessions.sessionstorage import SessionStorage from sessions.sessioncontroller import SessionController tabsController = self.application.mainWindow.tabsController uid1 = self._getPageLink(self.wikiroot["Страница 1"]) uid2 = self._getPageLink(self.wikiroot["Страница 2"]) wiki = WikiDocument.load(self.wikiroot.path, True) self.application.wikiroot = wiki self.application.selectedPage = wiki["Страница 1"] tabsController.openInTab(wiki["Страница 2"], True) sessionName = "Имя сессии" controller = SessionController(self.application) session = controller.getCurrentSession() # Сохраним сессию дважды под одним и тем же именем SessionStorage(self.application.config).save(session, sessionName) SessionStorage(self.application.config).save(session, sessionName) otherStorage = SessionStorage(self.application.config) sessions = otherStorage.getSessions() self.assertEqual(len(sessions), 1) self.assertEqual(len(sessions[sessionName].pages), 2) self.assertEqual(sessions[sessionName].pages[0], uid1) self.assertEqual(sessions[sessionName].pages[1], uid2) self.assertEqual(sessions[sessionName].currentTab, 1) self.assertTrue(sessions[sessionName].readonly)
def testManySearchPages1(self): GlobalSearch.create(self.wikiroot) new_page = GlobalSearch.create(self.wikiroot, phrase="декабрь", tags=["Метка 1", "Метка 2"], strategy=AllTagsSearchStrategy) search_title = new_page.title wiki = WikiDocument.load(self.path) page = wiki[search_title] self.assertEqual(wiki[search_title + " 2"], None) self.assertNotEqual(page, None) self.assertEqual(page.phrase, "декабрь") self.assertEqual(len(page.searchTags), 2) self.assertTrue("Метка 1" in page.searchTags) self.assertTrue("Метка 2" in page.searchTags) self.assertEqual(page.strategy, AllTagsSearchStrategy)
def testSaveAfterRemove(self): self.application.wikiroot = self.wikiroot self.application.selectedPage = self.wikiroot["Страница 1"] self._tabsController.cloneTab() self._tabsController.openInTab(self.wikiroot["Страница 2"], True) self._tabsController.cloneTab() self._tabsController.cloneTab() self._tabsController.cloneTab() self.wikiroot["Страница 1"].remove() otherwiki = WikiDocument.load(self.wikiroot.path) self.application.wikiroot = otherwiki self.assertEqual(self._tabsController.getTabsCount(), 4) self.assertEqual(self._tabsController.getSelection(), 3) self.assertEqual(self._tabsController.getPage(0), otherwiki["Страница 2"]) self.assertEqual(self._tabsController.getPage(3), otherwiki["Страница 2"])
def testSetStrategy2(self): """ Тест на то, что сохраняется искомая фраза """ page = GlobalSearch.create(self.wikiroot) self.assertEqual(page.phrase, u"") self.assertEqual(page.searchTags, []) # Поменяем параметры через свойства page.strategy = AnyTagSearchStrategy self.assertEqual(page.strategy, AnyTagSearchStrategy) # Загрузим вики и прочитаем установленные параметры wiki = WikiDocument.load(self.path) searchPage = wiki[GlobalSearch.pageTitle] self.assertNotEqual(searchPage, None) self.assertEqual(searchPage.strategy, AnyTagSearchStrategy)
def testEmptyAttaches2 (self): """ Попытка прикрепления файлов к странице без папки __attach """ filesPath = "../test/samplefiles/" files = ["accept.png", "add.png", "anchor.png"] attaches = [os.path.join (filesPath, fname) for fname in files] wiki = WikiDocument.load (self.path) Attachment (wiki["Страница без аттачей"]).attach (attaches) self.assertEqual ( len (Attachment (wiki["Страница без аттачей"]).attachmentFull), 3 ) # Удалим прикрепленные файлы attachPath = Attachment (wiki["Страница без аттачей"]).getAttachPath() shutil.rmtree (attachPath) wiki["Страница без аттачей"].datetime = self.defaultdate
def testAddRemoveFactory(self): plugin = self.loader["TestPage"] path = "../test/samplewiki" wikiroot = WikiDocument.load(path) test_page = wikiroot["Типы страниц/TestPage"] self.assertEqual(type(test_page), plugin.TestPage) self.assertEqual(type(FactorySelector.getFactory(plugin.TestPage.getTypeString())), plugin.TestPageFactory) self.loader.clear() self.assertEqual(type(FactorySelector.getFactory(plugin.TestPage.getTypeString())), UnknownPageTypeFactory) self.loader.load(self.dirlist) self.assertEqual(type(FactorySelector.getFactory(plugin.TestPage.getTypeString())), plugin.TestPageFactory)
def testSetTags(self): """ Тест на то, что сохраняется искомая фраза """ page = GlobalSearch.create(self.wikiroot) search_title = page.title self.assertEqual(page.phrase, "") self.assertEqual(page.searchTags, []) # Поменяем параметры через свойства page.searchTags = ["тег1", "тег2"] self.assertEqual(page.searchTags, ["тег1", "тег2"]) # Загрузим вики и прочитаем установленные параметры wiki = WikiDocument.load(self.path) searchPage = wiki[search_title] self.assertNotEqual(searchPage, None) self.assertEqual(searchPage.searchTags, ["тег1", "тег2"])
def testTags(self): wiki = WikiDocument.load(self.path) self.assertTrue(u"метка 1" in wiki[u"Страница 1"].tags) self.assertEqual(len(wiki[u"Страница 1"].tags), 1) self.assertIn(u"метка 2", wiki[u"Страница 2/Страница 3"].tags) self.assertIn(u"метка 3", wiki[u"Страница 2/Страница 3"].tags) self.assertEqual(len(wiki[u"Страница 2/Страница 3"].tags), 2) self.assertIn(u"метка 1", wiki[u"Страница 2/Страница 3/Страница 4"].tags) self.assertIn(u"метка 2", wiki[u"Страница 2/Страница 3/Страница 4"].tags) self.assertIn(u"метка 4", wiki[u"Страница 2/Страница 3/Страница 4"].tags) self.assertEqual(len(wiki[u"Страница 2/Страница 3/Страница 4"].tags), 3)
def testManySearchPages3(self): factory = TextPageFactory() factory.create(self.wikiroot, '# Search', []) factory.create(self.wikiroot, '# Search' + " 2", []) factory.create(self.wikiroot, '# Search' + " 3", []) factory.create(self.wikiroot, '# Search' + " 4", []) GlobalSearch.create(self.wikiroot, phrase="декабрь", tags=["Метка 1", "Метка 2"], strategy=AllTagsSearchStrategy) wiki = WikiDocument.load(self.path) page = wiki['# Search' + " 5"] self.assertNotEqual(page, None) self.assertEqual(page.phrase, "декабрь") self.assertEqual(len(page.searchTags), 2) self.assertTrue("Метка 1" in page.searchTags) self.assertTrue("Метка 2" in page.searchTags) self.assertEqual(page.strategy, AllTagsSearchStrategy)
def testCursorPosition_readonly_01(self): self.application.wikiroot = self.wikiroot self.application.selectedPage = None # В исходном файле установим курсор на 3-ю позицию self.wikiroot["Страница"].content = "Бла-бла-бла" self.application.selectedPage = self.wikiroot["Страница"] self._getCodeEditor().SetSelection(3, 3) self.application.selectedPage = None # Теперь загрузим эту вики в режиме только для чтения и поменяем позицию wikiroot_ro = WikiDocument.load(self.wikiroot.path, readonly=True) self.application.wikiroot = wikiroot_ro self.application.selectedPage = wikiroot_ro["Страница"] self.assertEqual(self._getCodeEditor().GetCurrentPosition(), 3) self._getCodeEditor().SetSelection(0, 0) # После возвращения на страницу положение курсора не должно поменяться self.application.selectedPage = None self.application.selectedPage = wikiroot_ro["Страница"] self.assertEqual(self._getCodeEditor().GetCurrentPosition(), 3)
def testAttach(self): page1 = u"Страница 1" page3 = u"Страница 2/Страница 3" filesPath = u"../test/samplefiles/" files = [u"accept.png", u"add.png", u"anchor.png"] fullFilesPath = [os.path.join(filesPath, fname) for fname in files] # Прикрепим к двум страницам файлы Attachment(self.wikiroot[page1]).attach(fullFilesPath) Attachment(self.wikiroot[page3]).attach( [fullFilesPath[0], fullFilesPath[1]]) # Заново загрузим вики wiki = WikiDocument.load(self.path) # Проверим, что файлы прикрепились к тем страницам, куда прикрепляли self.assertEqual(len(Attachment(wiki[page1]).attachmentFull), 3) self.assertEqual(len(Attachment(wiki[page3]).attachmentFull), 2) self.assertEqual(len(Attachment(wiki[u"Страница 2"]).attachmentFull), 0) # Проверим пути до прикрепленных файлов attachPathPage1 = TextPageAttachmentTest.getFullAttachPath( wiki, page1, files) attachPathPage3 = TextPageAttachmentTest.getFullAttachPath( wiki, page3, files) self.assertTrue( attachPathPage1[0] in Attachment(wiki[page1]).attachmentFull) self.assertTrue( attachPathPage1[1] in Attachment(wiki[page1]).attachmentFull) self.assertTrue( attachPathPage1[2] in Attachment(wiki[page1]).attachmentFull) self.assertTrue( attachPathPage3[0] in Attachment(wiki[page3]).attachmentFull) self.assertTrue( attachPathPage3[1] in Attachment(wiki[page3]).attachmentFull)
def testSaveSession_07(self): from sessions.sessionstorage import SessionStorage from sessions.sessioncontroller import SessionController tabsController = self.application.mainWindow.tabsController # Создадим UID, а потом проверим, что они нормально прочитаются в # режиме только для чтения self._getPageLink(self.wikiroot["Страница 1"]) self._getPageLink(self.wikiroot["Страница 2"]) wiki = WikiDocument.load(self.wikiroot.path, True) self.application.wikiroot = wiki self.application.selectedPage = wiki["Страница 1"] tabsController.openInTab(wiki["Страница 2"], True) sessionName = "Имя сессии" controller = SessionController(self.application) session = controller.getCurrentSession() # Сохраним сессию дважды под одним и тем же именем storage = SessionStorage(self.application.config) storage.save(session, sessionName) storage.save(session, sessionName) otherStorage = SessionStorage(self.application.config) sessions = otherStorage.getSessions() self.assertEqual(len(sessions), 1) self.assertEqual(len(sessions[sessionName].pages), 2) self.assertEqual(sessions[sessionName].pages[0], self._getPageLink(wiki["Страница 1"])) self.assertEqual(sessions[sessionName].pages[1], self._getPageLink(wiki["Страница 2"])) self.assertEqual(sessions[sessionName].currentTab, 1) self.assertTrue(sessions[sessionName].readonly)
def testSaveTabs2(self): self.application.wikiroot = self.wikiroot self.application.selectedPage = self.wikiroot["Страница 1"] self._tabsController.openInTab(self.wikiroot["Страница 2"], False) self._tabsController.openInTab( self.wikiroot["Страница 2/Страница 3/Страница 4"], False) self.application.wikiroot = None self.assertEqual(self._tabsController.getTabsCount(), 0) otherwiki = WikiDocument.load(self.wikiroot.path) self.application.wikiroot = otherwiki self.assertEqual(self._tabsController.getTabsCount(), 3) self.assertEqual(self._tabsController.getSelection(), 0) self.assertEqual(self._tabsController.getPage(0), otherwiki["Страница 1"]) self.assertEqual(self._tabsController.getTabTitle(0), "Страница 1") self.assertEqual(self._tabsController.getPage(1), otherwiki["Страница 2/Страница 3/Страница 4"]) self.assertEqual(self._tabsController.getPage(2), otherwiki["Страница 2"])
def testChangeContent(self): plugin = self.loader["TestPage"] wikiroot = WikiDocument.create(self.wikiroot.path) test_page = plugin.TestPageFactory().create(wikiroot, "Страница 1", []) test_page.content = "Абырвалг" self.application.wikiroot = wikiroot self.application.selectedPage = test_page pageview = self.application.mainWindow.pagePanel.pageView pageview.text.SetValue("Бла-бла-бла") self.application.selectedPage = None self.application.wikiroot = None wikiroot_other = WikiDocument.load(self.wikiroot.path) self.application.wikiroot = wikiroot_other self.application.selectedPage = wikiroot_other["Страница 1"] pageview = self.application.mainWindow.pagePanel.pageView pageContent = pageview.text.GetValue() self.assertEqual(pageContent, "Бла-бла-бла")
def testAutoLineWrapReload(self): self.wikiroot["Страница 1"].autoLineWrap = False self.assertFalse(self.wikiroot["Страница 1"].autoLineWrap) wiki = WikiDocument.load(self.path) self.assertFalse(wiki["Страница 1"].autoLineWrap)
def threadFunc(path, readonly): try: return WikiDocument.load(path, readonly) except IOError, error: return error
def testSelection3(self): self.wikiroot.selectedPage = None wiki2 = WikiDocument.load(self.path) self.assertEqual(wiki2.selectedPage, None)
def threadFunc(path, readonly): try: return WikiDocument.load(path, readonly) except BaseException as e: return e
def test1(self): path = os.path.join(self.rootpath, "Страница 1") root = WikiDocument.load(path) self.assertEqual(len(root), 1) self.assertEqual(root["Страница 2"].title, "Страница 2")
def testPageCreate(self): wiki = WikiDocument.load(self.path) self.assertEqual(wiki[u"Страница 1"].title, u"Страница 1") self.assertEqual(wiki[u"Страница 2"].title, u"Страница 2") self.assertEqual(wiki[u"Страница 2/Страница 3"].title, u"Страница 3")
def testIcon(self): wiki = WikiDocument.load(self.path) self.assertEqual(os.path.basename( wiki[u"Страница 2/Страница 3/Страница 4"].icon), "__icon.gif")
def test_alias_readonly_01(self): newwiki = WikiDocument.load(self.path, readonly=True) page = newwiki['Страница 1'] self.assertRaises(ReadonlyException, self._changeAlias, page, 'Тест')
def setUp(self): self.path = "testdata/samplewiki" self.root = WikiDocument.load(self.path)
def setUp(self): self.path = u"../test/samplewiki" self.root = WikiDocument.load(self.path, readonly=True)
def testDeleteDate(self): TextPageFactory().create(self.wikiroot, "Страница 1", []) self.wikiroot["Страница 1"].params.remove_option( PageConfig.sectionName, PageConfig.datetimeParamName) self.wikiroot = WikiDocument.load(self.path) self.assertEqual(self.wikiroot["Страница 1"].datetime, None)