[Pywikipedia-l] SVN: [6120] branches/rewrite/pywikibot/tests/page_tests.py
russblau at svn.wikimedia.org
russblau at svn.wikimedia.org
Wed Nov 26 20:02:30 UTC 2008
Revision: 6120
Author: russblau
Date: 2008-11-26 20:02:30 +0000 (Wed, 26 Nov 2008)
Log Message:
-----------
page tests
Modified Paths:
--------------
branches/rewrite/pywikibot/tests/page_tests.py
Modified: branches/rewrite/pywikibot/tests/page_tests.py
===================================================================
--- branches/rewrite/pywikibot/tests/page_tests.py 2008-11-25 18:43:39 UTC (rev 6119)
+++ branches/rewrite/pywikibot/tests/page_tests.py 2008-11-26 20:02:30 UTC (rev 6120)
@@ -14,11 +14,16 @@
import pywikibot
import pywikibot.page
-site = pywikibot.Site("en", "wikipedia")
+site = pywikibot.Site()
+mainpage = pywikibot.Page(pywikibot.page.Link("Main Page", site))
+maintalk = pywikibot.Page(pywikibot.page.Link("Talk:Main Page", site))
+badpage = pywikibot.Page(pywikibot.page.Link("There is no page with this title",
+ site))
-
class TestLinkObject(unittest.TestCase):
"""Test cases for Link objects"""
+
+ enwiki = pywikibot.Site("en", "wikipedia")
namespaces = {0: [u""], # en.wikipedia.org namespaces for testing
1: [u"Talk:"], # canonical form first, then others
2: [u"User:"], # must end with :
@@ -62,11 +67,11 @@
for num in self.namespaces:
for prefix in self.namespaces[num]:
l = pywikibot.page.Link(prefix+self.titles.keys()[0],
- site)
+ self.enwiki)
self.assertEqual(l.namespace, num)
# namespace prefixes are case-insensitive
m = pywikibot.page.Link(prefix.lower()+self.titles.keys()[1],
- site)
+ self.enwiki)
self.assertEqual(m.namespace, num)
def testTitles(self):
@@ -81,14 +86,21 @@
class TestPageObject(unittest.TestCase):
+ def testGeneral(self):
+ self.assertEqual(str(mainpage), "[[%s:%s]]"
+ % (site.lang, mainpage.title()))
+ self.assertTrue(mainpage < maintalk)
+
def testSite(self):
"""Test site() method"""
- p1 = pywikibot.Page(site, u"Help:Test page#Testing")
- self.assertEqual(p1.site(), site)
+ self.assertEqual(mainpage.site(), site)
+ self.assertEqual(mainpage.encoding(), site.encoding())
def testNamespace(self):
"""Test namespace() method"""
- # TODO
+ self.assertEqual(mainpage.namespace(), 0)
+ self.assertEqual(maintalk.namespace(), 1)
+ self.assertEqual(badpage.namespace(), 0)
def testTitle(self):
"""Test title() method options."""
@@ -131,6 +143,8 @@
u"[[en:Image:Jean-Léon Gérôme 003.jpg]]")
self.assertEqual(p2.title(asLink=True, textlink=True),
u"[[:Image:Jean-Léon Gérôme 003.jpg]]")
+ self.assertEqual(p2.title(as_filename=True),
+ u"Image_Jean-Léon_Gérôme_003.jpg")
def testSection(self):
"""Test section() method."""
@@ -160,47 +174,101 @@
self.assertEqual(p2.isCategory(), True)
self.assertEqual(p3.isCategory(), False)
- # testIsImage -- todo
+ def testIsImage(self):
+ p1 = pywikibot.Page(site, u"First page")
+ p2 = pywikibot.Page(site, u"Image:Second page")
+ p3 = pywikibot.Page(site, u"Image talk:Second page")
+ self.assertEqual(p1.isImage(), False)
+ self.assertEqual(p2.isImage(), True)
+ self.assertEqual(p3.isImage(), False)
def testApiMethods(self):
"""Test various methods that rely on API."""
# since there is no way to predict what data the wiki will return,
# we only check that the returned objects are of correct type.
- main = pywikibot.Page(site, u"Main Page")
- self.assertEqual(type(main.get()), unicode)
- self.assertEqual(type(main.latestRevision()), int)
- self.assertEqual(type(main.userName()), unicode)
- self.assertEqual(type(main.isIpEdit()), bool)
- self.assertEqual(type(main.exists()), bool)
- self.assertEqual(type(main.isRedirectPage()), bool)
- self.assertEqual(type(main.isEmpty()), bool)
- self.assertEqual(type(main.toggleTalkPage()), type(main))
- self.assertEqual(type(main.isDisambig()), bool)
- self.assertEqual(type(main.canBeEdited()), bool)
- self.assertEqual(type(main.botMayEdit()), bool)
- for p in main.getReferences():
- self.assertEqual(type(p), type(main))
- for p in main.backlinks():
- self.assertEqual(type(p), type(main))
- for p in main.embeddedin():
- self.assertEqual(type(p), type(main))
- for p in main.linkedPages():
- self.assertEqual(type(p), type(main))
- for p in main.interwiki():
- self.assertEqual(type(p), pywikibot.page.Link)
- for p in main.langlinks():
- self.assertEqual(type(p), pywikibot.page.Link)
- for p in main.imagelinks():
- self.assertEqual(type(p), pywikibot.page.ImagePage)
- for p in main.templates():
- self.assertEqual(type(p), type(main))
- # todo - templatesWithParameters
- for p in main.categories():
- self.assertEqual(type(p), pywikibot.page.Category)
- for p in main.extlinks():
- self.assertEqual(type(p), unicode)
- # more to come
+ self.assertTrue(isinstance(mainpage.get(), unicode))
+ self.assertTrue(isinstance(maintalk.get(), unicode))
+ self.assertRaises(pywikibot.NoPage, badpage.get)
+ self.assertTrue(isinstance(mainpage.latestRevision(), int))
+ self.assertTrue(isinstance(mainpage.userName(), unicode))
+ self.assertTrue(isinstance(mainpage.isIpEdit(), bool))
+ self.assertTrue(isinstance(mainpage.exists(), bool))
+ self.assertTrue(isinstance(mainpage.isRedirectPage(), bool))
+ self.assertTrue(isinstance(mainpage.isEmpty(), bool))
+ self.assertEqual(mainpage.toggleTalkPage(), maintalk)
+ self.assertEqual(maintalk.toggleTalkPage(), mainpage)
+ self.assertTrue(isinstance(mainpage.isDisambig(), bool))
+ self.assertTrue(isinstance(mainpage.canBeEdited(), bool))
+ self.assertTrue(isinstance(mainpage.botMayEdit(), bool))
+ self.assertTrue(isinstance(mainpage.editTime(), unicode))
+ self.assertTrue(isinstance(mainpage.previousRevision(), int))
+ self.assertTrue(isinstance(mainpage.permalink(), basestring))
+ def testReferences(self):
+ pywikibot.set_debug("comm")
+ count = 0
+ for p in mainpage.getReferences():
+ count += 1
+ self.assertTrue(isinstance(p, pywikibot.Page))
+ if count >= 10:
+ break
+ count = 0
+ for p in mainpage.backlinks():
+ count += 1
+ self.assertTrue(isinstance(p, pywikibot.Page))
+ if count >= 10:
+ break
+ count = 0
+ for p in mainpage.embeddedin():
+ count += 1
+ self.assertTrue(isinstance(p, pywikibot.Page))
+ if count >= 10:
+ break
+
+ def testLinks(self):
+ for p in mainpage.linkedPages():
+ self.assertTrue(isinstance(p, pywikibot.Page))
+## Not implemented:
+## for p in mainpage.interwiki():
+## self.assertTrue(isinstance(p, pywikibot.Link))
+ for p in mainpage.langlinks():
+ self.assertTrue(isinstance(p, pywikibot.Link))
+ for p in mainpage.imagelinks():
+ self.assertTrue(isinstance(p, pywikibot.ImagePage))
+ for p in mainpage.templates():
+ self.assertTrue(isinstance(p, pywikibot.Page))
+ for t, params in mainpage.templatesWithParams():
+ self.assertTrue(isinstance(t, pywikibot.Page))
+ self.assertTrue(isinstance(params, list))
+ for p in mainpage.categories():
+ self.assertTrue(isinstance(p, pywikibot.Category))
+ for p in mainpage.extlinks():
+ self.assertTrue(isinstance(p, unicode))
+
+# methods that still need tests implemented or expanded:
+
+## def autoFormat(self):
+## def isAutoTitle(self):
+## def get(self, force=False, get_redirect=False, sysop=False):
+## def getOldVersion(self, oldid, force=False, get_redirect=False,
+## sysop=False):
+## text = property(_textgetter, _textsetter, _cleartext,
+## "The edited wikitext (unicode) of this Page")
+## def getReferences(self, follow_redirects=True, withTemplateInclusion=True,
+## onlyTemplateInclusion=False, redirectsOnly=False,
+## namespaces=None):
+## def backlinks(self, followRedirects=True, filterRedirects=None,
+## namespaces=None):
+## def embeddedin(self, filter_redirects=None, namespaces=None):
+## def getRedirectTarget(self):
+## def getVersionHistory(self, reverseOrder=False, getAll=False,
+## revCount=500):
+## def getVersionHistoryTable(self, forceReload=False, reverseOrder=False,
+## getAll=False, revCount=500):
+## def fullVersionHistory(self):
+## def contributingUsers(self):
+
+
if __name__ == '__main__':
try:
try:
More information about the Pywikipedia-l
mailing list