source: products/quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testMobileSitemaps.py @ 3152

Last change on this file since 3152 was 3152, checked in by zidane, 13 years ago

fixes pep8

  • Property svn:eol-style set to native
File size: 4.3 KB
Line 
1from base import *
2from DateTime import DateTime
3
4from zope.interface import alsoProvides
5from zope.component import queryMultiAdapter
6from zope.component import getSiteManager, getGlobalSiteManager
7from archetypes.schemaextender.interfaces import ISchemaExtender
8
9from Products.CMFPlone.utils import _createObjectByType
10
11from quintagroup.plonegooglesitemaps.browser import mobilesitemapview
12from quintagroup.plonegooglesitemaps.browser.commonview \
13    import CommonSitemapView
14from quintagroup.plonegooglesitemaps.browser.mobilesitemapview \
15    import MobileSitemapView
16
17
18class TestMobileSitemapsXML(FunctionalTestCase):
19
20    def afterSetUp(self):
21        super(TestMobileSitemapsXML, self).afterSetUp()
22        self.patchMobile()
23        _createObjectByType("Sitemap", self.portal, id="mobile-sitemap.xml",
24                            sitemapType="mobile", portalTypes=("Document",))
25        self.portal["mobile-sitemap.xml"].at_post_create_script()
26        # Add testing mobile item to portal
27        self.pubdate = (DateTime() + 1).strftime("%Y-%m-%d")
28        self.my_mobile = _createObjectByType('Document', self.portal,
29                                             id='my_mobile')
30        alsoProvides(self.my_mobile, IMobileMarker)
31        self.my_mobile.edit(text="Test mobile item",
32                            title="First mobile (test)",
33                            effectiveDate=self.pubdate)
34        self.workflow.doActionFor(self.my_mobile, "publish")
35        self.reParse()
36
37    def reParse(self):
38        # Parse mobile sitemap
39        self.sitemap = self.publish("/" + self.portal.absolute_url(1) + \
40                                    "/mobile-sitemap.xml",
41                                    "%s:%s" % (portal_owner,
42                                               default_password)).getBody()
43        parsed_sitemap = parse(self.sitemap)
44        self.start = parsed_sitemap["start"]
45        self.data = parsed_sitemap["data"]
46
47    def test_urlset(self):
48        self.assert_("urlset" in self.start.keys())
49        urlset = self.start["urlset"]
50        self.assertEqual(urlset.get("xmlns", ""),
51                         "http://www.sitemaps.org/schemas/sitemap/0.9")
52        self.assertEqual(urlset.get("xmlns:mobile", ""),
53                         "http://www.google.com/schemas/sitemap-mobile/1.0")
54
55    def test_url(self):
56        self.assert_("url" in self.start.keys())
57
58    def test_loc(self):
59        self.assert_("loc" in self.start.keys())
60        self.assert_(self.portal.absolute_url() + "/my_mobile" in self.data)
61
62    def test_lastmod(self):
63        md = [f for k, f in \
64              mobilesitemapview.MobileSitemapView.additional_maps \
65              if k == 'modification_date'][0]
66        bmobile = self.portal.portal_catalog(id="my_mobile")[0]
67        self.assert_("lastmod" in self.start.keys())
68        self.assert_(md(bmobile) in self.data, "Wrong 'modified date':" \
69                     " must be '%s', but exist: '%s'" \
70                     % (md(bmobile), self.data))
71
72
73class TestMobileSitemaps(TestCase):
74
75    def afterSetUp(self):
76        super(TestMobileSitemaps, self).afterSetUp()
77        # create mobile sitemap
78        _createObjectByType("Sitemap", self.portal, id="mobile-sitemap.xml",
79                            sitemapType="mobile", portalTypes=("Document",))
80        mobile_sm = self.portal["mobile-sitemap.xml"]
81        mobile_sm.at_post_create_script()
82        self.default_layout = mobile_sm.getProperty('layout', "")
83        self.mobile_view = queryMultiAdapter((mobile_sm, self.portal.REQUEST),
84                               name=self.default_layout)
85
86    def testLayout(self):
87        self.assert_(self.default_layout == "mobile-sitemap.xml")
88
89    def testInterface(self):
90        sm_view = mobilesitemapview.ISitemapView
91        self.assert_(sm_view.providedBy(self.mobile_view))
92
93    def testClasses(self):
94        self.assert_(isinstance(self.mobile_view, MobileSitemapView))
95        self.assert_(isinstance(self.mobile_view, CommonSitemapView))
96
97    def testAdditionalMaps(self):
98        self.assert_(hasattr(self.mobile_view, "additional_maps"))
99        self.assert_([1 for k, f in self.mobile_view.additional_maps \
100                      if k == "modification_date"])
101
102
103def test_suite():
104    from unittest import TestSuite, makeSuite
105    suite = TestSuite()
106    suite.addTest(makeSuite(TestMobileSitemapsXML))
107    suite.addTest(makeSuite(TestMobileSitemaps))
108    return suite
Note: See TracBrowser for help on using the repository browser.