Revision: 5861
Author: russblau
Date: 2008-08-28 19:37:33 +0000 (Thu, 28 Aug 2008)
Log Message:
-----------
many new site method tests
Modified Paths:
--------------
branches/rewrite/pywikibot/tests/site_tests.py
Modified: branches/rewrite/pywikibot/tests/site_tests.py
===================================================================
--- branches/rewrite/pywikibot/tests/site_tests.py 2008-08-28 19:11:10 UTC (rev 5860)
+++ branches/rewrite/pywikibot/tests/site_tests.py 2008-08-28 19:37:33 UTC (rev 5861)
@@ -13,22 +13,149 @@
import unittest
import pywikibot
-mysite = pywikibot.Site("en", "wikipedia")
+mysite = pywikibot.Site()
+mainpage = pywikibot.Page(pywikibot.Link("Main Page", mysite))
class TestSiteObject(unittest.TestCase):
"""Test cases for Site methods."""
def testBaseMethods(self):
"""Test cases for BaseSite methods"""
- self.assertEqual(mysite.family, pywikibot.site.Family("wikipedia"))
- self.assertEqual(mysite.language(), "en")
- self.assert_(isinstance(mysite.user(), (basestring, type(None))))
- self.assertEqual(mysite.sitename(), "wikipedia:en")
- self.assertEqual(mysite.ns_normalize("project"), "Wikipedia")
- self.assertEqual(mysite.redirect(), "REDIRECT")
+ self.assertEqual(mysite.family.name, pywikibot.config.family)
+ self.assertEqual(mysite.code, pywikibot.config.mylang)
+ self.assertTrue(isinstance(mysite.user(), (basestring, type(None))))
+ self.assertEqual(mysite.sitename(),
+ "%s:%s" % (pywikibot.config.family, pywikibot.config.mylang))
+ self.assertTrue(isinstance(mysite.ns_normalize("project"), basestring))
+ self.assertTrue(isinstance(mysite.redirect(), basestring))
+ def testApiMethods(self):
+ """Test generic ApiSite methods"""
+
+ self.assertTrue(isinstance(mysite.logged_in(), bool))
+ self.assertTrue(isinstance(mysite.getuserinfo(), dict))
+ self.assertTrue(isinstance(mysite.getcurrenttimestamp(), basestring))
+ self.assertTrue(isinstance(mysite.siteinfo, dict))
+ self.assertTrue(isinstance(mysite.case(), basestring))
+ self.assertTrue(isinstance(mysite.namespaces(), dict))
+ self.assertTrue(all(isinstance(key, int)
+ for key in mysite.namespaces()))
+ self.assertTrue(all(isinstance(val, list)
+ for val in mysite.namespaces().values()))
+ self.assertTrue(all(isinstance(name, basestring)
+ for val in mysite.namespaces().values()
+ for name in val))
+ self.assertTrue(all(isinstance(mysite.namespace(key), basestring)
+ for key in mysite.namespaces()))
+ self.assertTrue(all(isinstance(mysite.namespace(key, True), list)
+ for key in mysite.namespaces()))
+ self.assertTrue(all(isinstance(item, basestring)
+ for key in mysite.namespaces()
+ for item in mysite.namespace(key, True)))
+ def testPageMethods(self):
+ """Test ApiSite methods for getting page-specific info"""
+
+ self.assertTrue(isinstance(mysite.page_exists(mainpage), bool))
+ self.assertTrue(isinstance(mysite.page_restrictions(mainpage), dict))
+ self.assertTrue(isinstance(mysite.page_can_be_edited(mainpage), bool))
+ self.assertTrue(isinstance(mysite.page_isredirect(mainpage), bool))
+ if mysite.page_isredirect(mainpage):
+ self.assertTrue(isinstance(mysite.getredirtarget(mainpage),
+ pywikibot.Page))
+ else:
+ self.assertRaises(pywikibot.IsNotRedirectPage,
+ mysite.getredirtarget, mainpage)
+ a = list(mysite.preloadpages([mainpage]))
+ self.assertEqual(len(a), int(mysite.page_exists(mainpage)))
+ if a:
+ self.assertEqual(a[0], mainpage)
+
+ def testTokens(self):
+ """Test ability to get page tokens"""
+
+ for ttype in ("edit", "move"): # token types for non-sysops
+ self.assertTrue(isinstance(mysite.token(mainpage, ttype),
+ basestring))
+
+ def testLinkMethods(self):
+ """Test site methods for getting links to and from a page"""
+
+ backlinks = set(mysite.pagebacklinks(mainpage))
+ embedded = set(mysite.page_embeddedin(mainpage))
+ refs = set(mysite.pagereferences(mainpage))
+ for bl in backlinks:
+ self.assertTrue(isinstance(bl, pywikibot.Page))
+ self.assertTrue(bl in refs)
+ for ei in embedded:
+ self.assertTrue(isinstance(ei, pywikibot.Page))
+ self.assertTrue(ei in refs)
+ for ref in refs:
+ self.assertTrue(ref in backlinks or ref in embedded)
+ for pl in mysite.pagelinks(mainpage):
+ self.assertTrue(isinstance(pl, pywikibot.Page))
+ for cat in mysite.pagecategories(mainpage):
+ self.assertTrue(isinstance(cat, pywikibot.Category))
+ for cm in mysite.categorymembers(cat):
+ self.assertTrue(isinstance(cat, pywikibot.Page))
+ self.assertTrue(all(isinstance(im, pywikibot.ImagePage)
+ for im in mysite.pageimages(mainpage)))
+ self.assertTrue(all(isinstance(te, pywikibot.Page)
+ for te in mysite.pagetemplates(mainpage)))
+ for ll in mysite.pagelanglinks(mainpage):
+ self.assertTrue(isinstance(ll, pywikibot.Link))
+ self.assertTrue(all(isinstance(el, basestring)
+ for el in mysite.page_extlinks(mainpage)))
+
+ def testLoadRevisions(self):
+ """Test the site.loadrevisions() method"""
+
+ mysite.loadrevisions(mainpage)
+ self.assertTrue(hasattr(mainpage, "_revid"))
+ self.assertTrue(hasattr(mainpage, "_revisions"))
+ self.assertTrue(mainpage._revisions.has_key(mainpage._revid))
+
+ def testAllPages(self):
+ """Test the site.allpages() method"""
+
+ ap = list(mysite.allpages(limit=10))
+ self.assertTrue(len(ap) <= 10)
+ for page in ap:
+ self.assertTrue(isinstance(page, pywikibot.Page))
+ self.assertTrue(mysite.page_exists(page))
+ # TODO: test various optional arguments to allpages
+
+ def testAllLinks(self):
+ """Test the site.alllinks() method"""
+
+ al = list(mysite.alllinks(limit=10))
+ self.assertTrue(len(al) <= 10)
+ self.assertTrue(all(isinstance(link, pywikibot.Page) for link in al))
+ # TODO: test various optional arguments to alllinks
+
+ def testAllCategories(self):
+ """Test the site.allcategories() method"""
+
+ ac = list(mysite.allcategories(limit=10))
+ self.assertTrue(len(ac) <= 10)
+ self.assertTrue(all(isinstance(cat, pywikibot.Category)
+ for cat in ac))
+ # TODO: test various optional arguments to allcategories
+
+ def testAllUsers(self):
+ """Test the site.allusers() method"""
+
+ au = list(mysite.allusers(limit=10))
+ self.assertTrue(len(au) <= 10)
+ for user in au:
+ self.assertTrue(isinstance(user, dict))
+ self.assertTrue(user.has_key("name"))
+ self.assertTrue(user.has_key("editcount"))
+ self.assertTrue(user.has_key("registration"))
+
+
if __name__ == '__main__':
+# pywikibot.logging.getLogger().setLevel(pywikibot.logging.DEBUG)
try:
try:
unittest.main()