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

Last change on this file since 3510 was 3510, checked in by potar, 12 years ago

Merged sitemap_date branch into trunk

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