from testsupport import * ZopeTestCase.installProduct('ZCatalog') ZopeTestCase.installProduct('ZWiki') def test_suite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(Tests)) return suite class Tests(ZwikiTestCase): def test_excerptAt(self): self.page.edit(text='This is a test of the
\n excerptAt method,') self.assertEquals(self.page.excerptAt('excerptat',size=10,highlight=0), '\n excerptAt ') #self.assertEquals(self.page.excerptAt('this*',size=21,highlight=1), # 'This is a tes') #self.assertEquals(self.page.excerptAt('br',size=4), # 'e<br>\n') # XXX temp self.assertEquals(self.page.excerptAt('this*',size=21,highlight=1), 'This is a tes') self.assertEquals(self.page.excerptAt('br',size=4), 'e<br /') self.assertEquals(self.page.excerptAt('
',size=4,highlight=0), '<br />') self.assertEquals(self.page.excerptAt('nomatch'), 'This is a test of the<br />\n excerptAt method,') self.assertEquals(self.page.excerptAt(''), 'This is a test of the<br />\n excerptAt method,') def testWithPartialCatalog(self): # a number of things are known to be affected by a partial catalog # - usually a standard CMF/plone portal_catalog that wasn't set up # for Zwiki, but could also be a catalog that's had some of the # zwiki fields removed - eg IssueNo0623. These seem to boil down # to ensuring the brains returned by pages() have all expected # fields. self.page.setupCatalog() self.page.catalog().manage_delColumn('parents') brain = self.page.pages()[0] self.assert_(hasattr(brain,'parents')) def test_canonicalIdFrom(self): p = self.page self.assertEquals(p.canonicalIdFrom('WikiName'),'WikiName') self.assertEquals(p.canonicalIdFrom('ZWikiWikiNames2'),'ZWikiWikiNames2') self.assertEquals(p.canonicalIdFrom('a page with !'),'APageWith') self.assertEquals(p.canonicalIdFrom('a_page'),'APage') self.assertEquals(p.canonicalIdFrom('Test\xc3Page'),'Test_c3Page') # A tilde self.assertEquals(p.canonicalIdFrom('\xc3Page'),'X_c3Page') self.assertEquals(p.canonicalIdFrom('_c3Page'),'C3Page') def test_asAgeString(self): #p = self.page p = mockPage() self.assertEqual(p.asAgeString(p.last_edit_time),'some time') def test_pageIdsStartingWith(self): p = self.page p.create('TestPage2') self.assertEqual(p.pageIdsStartingWith('Test'), ['TestPage','TestPage2']) def test_pageNamesStartingWith(self): p = self.page p.title = 'Test Page' p.create('Test Page 2') self.assertEqual(p.pageNamesStartingWith('Test'), ['Test Page','Test Page 2']) def test_firstPageIdStartingWith(self): p = self.page p.create('TestPage2') self.assertEqual(p.firstPageIdStartingWith('Test'),'TestPage') def test_firstPageNameStartingWith(self): p = self.page p.title = 'Test Page' p.create('Test Page 2') self.assertEqual(p.firstPageNameStartingWith('Test'),'Test Page') def test_pageWithId(self): p = self.page self.failIf(p.pageWithId('nosuchid')) self.failUnless(p.pageWithId('TestPage')) self.failIf(p.pageWithId('testpage')) self.failUnless(p.pageWithId('testpage',ignore_case=1)) def test_pageWithName(self): p = self.page p.title = 'Test page' self.failUnless(p.pageWithName(p.title)) def test_pageWithFuzzyName(self): p = self.page p.title = 'Test page' self.failUnless(p.pageWithFuzzyName('Test page')) self.failUnless(p.pageWithFuzzyName(' Test page\t')) self.failUnless(p.pageWithFuzzyName('TestPage')) self.failUnless(p.pageWithFuzzyName('TEST Page')) self.failUnless(p.pageWithFuzzyName('Testpage')) self.failIf(p.pageWithFuzzyName('test')) self.failUnless(p.pageWithFuzzyName('test',allow_partial=1)) def test_backlinksFor(self): p = self.page p.title = 'Test Page' p.create('PageTwo',text='[Test Page]') p.create('PageThree',text='TestPage') self.assertEqual(len(p.backlinksFor('Test Page')),2) def test_isWikiName(self): p = self.page self.assert_(p.isWikiName('WikiName')) self.assert_(p.isWikiName('WikiName2')) self.assert_(p.isWikiName('AWikiName')) self.assert_(not p.isWikiName('Wikiname')) self.assert_(not p.isWikiName('Wiki2Name')) def test_isValidWikiLinkSyntax(self): self.assertEquals(self.p.isValidWikiLinkSyntax('WikiName'),1) self.p.use_wikiname_links = 0 self.assertEquals(self.p.isValidWikiLinkSyntax('WikiName'),0) self.p.use_wikiname_links = 1 self.assertEquals(self.p.isValidWikiLinkSyntax('WikiName'),1) self.assertEquals(self.p.isValidWikiLinkSyntax('[freeform name]'),1) self.p.use_bracket_links = 0 self.assertEquals(self.p.isValidWikiLinkSyntax('[freeform name]'),0) self.p.use_bracket_links = 1 self.assertEquals(self.p.isValidWikiLinkSyntax('[freeform name]'),1) self.assertEquals(self.p.isValidWikiLinkSyntax('[[double brackets]]'),1) self.p.use_double_bracket_links = 0 self.assertEquals(self.p.isValidWikiLinkSyntax('[[double brackets]]'),0) self.p.use_double_bracket_links = 1 self.assertEquals(self.p.isValidWikiLinkSyntax('[[double brackets]]'),1) def test_markLinksIn(self): self.assertEquals(self.p.markLinksIn('test'),'test') self.assertEquals(self.p.markLinksIn('http://url'), 'http://url') self.assertEquals( self.p.markLinksIn( 'WikiName, [freeform name], [[double brackets]], ((double parentheses))'), 'WikiName, [freeform name], [[double brackets]], ((double parentheses))') self.p.use_wikiname_links = 0 self.p.use_bracket_links = 0 self.p.use_double_bracket_links = 0 self.p.use_double_parenthesis_links = 1 self.assertEquals( self.p.markLinksIn( 'WikiName, [freeform name], [[double brackets]], ((double parentheses))'), 'WikiName, [freeform name], [[double brackets]], ((double parentheses))') def test_formatWikiname(self): self.assertEquals(self.p.formatWikiname('CamelCase'),'CamelCase') self.p.folder().space_wikinames = 1 self.assertEquals(self.p.formatWikiname('CamelCase'),'Camel Case') def test_renderLink(self): self.assertEquals( self.p.renderLink('[unbalanced (]')[-53:], 'page=unbalanced%20%28" title="create this page">?') self.assertEquals( self.p.renderLink('http://some.url'), 'http://some.url') #self.p.folder().space_wikinames = 1 #self.assertEquals(self.p.renderLink('CamelCase')[:10],'Camel Case') def test_renderLinksIn(self): self.assertEquals(self.p.renderLinksIn('nolink'),'nolink') self.assertEquals(self.p.renderLinksIn('http://a.b.c/d'), 'http://a.b.c/d') self.assertEquals(self.p.renderLinksIn('mailto://a@b.c'), 'mailto://a@b.c') #import pdb; pdb.set_trace() self.assertEquals(self.p.renderLinksIn('TestPage'), 'TestPage') # 'TestPage') self.assertEquals(self.p.renderLinksIn('NewTestPage'), 'NewTestPage?') # 'NewTestPage?') self.assertEquals(self.p.renderLinksIn('!TestPage'),'TestPage') self.assertEquals(self.p.renderLinksIn('[newpage]'), '[newpage]?') # '[newpage]?') # a problem with escaping remote wiki links was reported self.p.edit(text='RemoteWikiURL: URL/') self.assertEquals(self.p.renderLinksIn('TestPage:REMOTEPAGE'), 'TestPage:REMOTEPAGE') self.assertEquals(self.p.renderLinksIn('!TestPage:REMOTEPAGE'), 'TestPage:REMOTEPAGE') self.assertEquals(self.p.renderLinksIn('[ ]'), '[ ]?') # '[ ]?') # do display the brackets prior to page creation self.assertEquals(self.p.renderLinksIn('[newpage]'), '[newpage]?') # '[newpage]?') # don't link wikinames inside ... self.assertEquals(self.p.renderLinksIn('WikiName'), 'WikiName') # do link wikinames after with no closing self.assertEquals(self.p.renderLinksIn('WikiName'), # 'WikiName?') 'WikiName?') def Xtest_renderLink_speed(self): import time for i in range(999): self.p.create('TestPage%03d'%i) t = time.time() self.assertEquals(self.p.pageCount(),1000) print time.time() - t def test_displaysSubtopicsWithDtml(self): self.p.edit(text='') self.failIf(self.p.displaysSubtopicsWithDtml()) self.p.edit(text='