예제 #1
0
    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")
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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
예제 #5
0
파일: event.py 프로젝트: LihMeh/outwiker
    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)
예제 #6
0
    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"])
예제 #7
0
파일: tabs.py 프로젝트: qyqx/outwiker
    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)
예제 #8
0
    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)
예제 #9
0
    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)
예제 #10
0
    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)
예제 #11
0
    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)
예제 #12
0
 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")
예제 #13
0
    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")
예제 #14
0
 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
예제 #15
0
 def testInvalidContent(self):
     """
     Тест страницы с испорченным контентом
     """
     wiki = WikiDocument.load(self.path)
     page = wiki["Испорченный content"]
     self.assertEqual(page.content, "")
예제 #16
0
    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)
예제 #17
0
    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)
예제 #18
0
    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
예제 #19
0
    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)
예제 #20
0
    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)
예제 #21
0
 def testNotPage (self):
     """
     Тест папок, которые не являются страницами
     """
     wiki = WikiDocument.load (path)
     page = wiki[u"Просто папка"]
     self.assertEqual (page, None)
예제 #22
0
    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)
예제 #23
0
 def testEmptyContent (self):
     """
     Тест страницы без файла контента
     """
     wiki = WikiDocument.load (path)
     page = wiki[u"Страница без контента"]
     self.assertEqual (page.content, "")
예제 #24
0
    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, "Бла-бла-бла")
예제 #25
0
    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)
예제 #26
0
파일: commands.py 프로젝트: Jenyay/outwiker
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
예제 #27
0
    def test_alias_readonly_01(self):
        newwiki = WikiDocument.load(self.path, readonly=True)
        page = newwiki[u'Страница 1']

        self.assertRaises(ReadonlyException,
                          self._changeAlias,
                          page, u'Тест')
예제 #28
0
    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")
예제 #29
0
    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)
예제 #30
0
    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)
예제 #31
0
    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)
예제 #32
0
    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"])
예제 #33
0
    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)
예제 #34
0
    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
예제 #35
0
    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)
예제 #36
0
    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"])
예제 #37
0
    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)
예제 #38
0
    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)
예제 #39
0
    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)
예제 #40
0
    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)
예제 #41
0
    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)
예제 #42
0
    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"])
예제 #43
0
    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, "Бла-бла-бла")
예제 #44
0
    def testAutoLineWrapReload(self):
        self.wikiroot["Страница 1"].autoLineWrap = False
        self.assertFalse(self.wikiroot["Страница 1"].autoLineWrap)

        wiki = WikiDocument.load(self.path)
        self.assertFalse(wiki["Страница 1"].autoLineWrap)
예제 #45
0
 def threadFunc(path, readonly):
     try:
         return WikiDocument.load(path, readonly)
     except IOError, error:
         return error
예제 #46
0
    def testSelection3(self):
        self.wikiroot.selectedPage = None
        wiki2 = WikiDocument.load(self.path)

        self.assertEqual(wiki2.selectedPage, None)
예제 #47
0
 def threadFunc(path, readonly):
     try:
         return WikiDocument.load(path, readonly)
     except BaseException as e:
         return e
예제 #48
0
    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")
예제 #49
0
 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")
예제 #50
0
 def testIcon(self):
     wiki = WikiDocument.load(self.path)
     self.assertEqual(os.path.basename(
         wiki[u"Страница 2/Страница 3/Страница 4"].icon),
         "__icon.gif")
예제 #51
0
    def test_alias_readonly_01(self):
        newwiki = WikiDocument.load(self.path, readonly=True)
        page = newwiki['Страница 1']

        self.assertRaises(ReadonlyException, self._changeAlias, page, 'Тест')
예제 #52
0
 def setUp(self):
     self.path = "testdata/samplewiki"
     self.root = WikiDocument.load(self.path)
예제 #53
0
 def setUp(self):
     self.path = u"../test/samplewiki"
     self.root = WikiDocument.load(self.path, readonly=True)
예제 #54
0
 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)