source: products/quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testNewsSitemaps.py @ 2397

Last change on this file since 2397 was 2397, checked in by mylan, 14 years ago

#131: Update TestNewsSitemapsXML for access and genres tags testing

  • Property svn:eol-style set to native
File size: 3.7 KB
Line 
1from base import *
2from Products.CMFPlone.utils import _createObjectByType
3from DateTime import DateTime
4
5class TestNewsSitemapsXML(FunctionalTestCase):
6
7    def afterSetUp(self):
8        super(TestNewsSitemapsXML, self).afterSetUp()
9        # Create news sitemaps
10        _createObjectByType("Sitemap", self.portal, id="news-sitemaps",
11                            sitemapType="news", portalTypes=("News Item",))
12        self.portal["news-sitemaps"].at_post_create_script()
13        # Add testing news item to portal
14        self.pubdate = (DateTime()+1).strftime("%Y-%m-%d")
15        my_news = self.portal.invokeFactory("News Item", id="my_news")
16        self.my_news = self.portal["my_news"]
17        self.my_news.edit(text="Test news item", title="First news (test)", language="ua",
18                          effectiveDate=self.pubdate)
19        self.portal.portal_workflow.doActionFor(self.my_news, "publish")
20        self.reParse()
21
22    def reParse(self):
23        # Parse news sitemap
24        self.sitemap = self.publish("/"+self.portal.absolute_url(1) + "/news-sitemaps",
25                                    "%s:%s" % (portal_owner, default_password)).getBody()
26        parsed_sitemap = parse(self.sitemap)
27        self.start = parsed_sitemap["start"]
28        self.data = parsed_sitemap["data"]
29
30    def test_urlset(self):
31        self.assert_("urlset" in self.start.keys())
32        urlset = self.start["urlset"]
33        self.assertEqual(urlset.get("xmlns", ""), "http://www.sitemaps.org/schemas/sitemap/0.9")
34        self.assertEqual(urlset.get("xmlns:n", ""), "http://www.google.com/schemas/sitemap-news/0.9")
35
36    def test_url(self):
37        self.assert_("url" in self.start.keys())
38
39    def test_loc(self):
40        self.assert_("loc" in self.start.keys())
41        self.assert_(self.portal.absolute_url() + "/my_news" in self.data)
42
43    def test_nnews(self):
44        self.assert_("n:news" in self.start.keys())
45       
46    def test_npublication(self):
47        self.assert_("n:publication" in self.start.keys())
48        self.assert_("n:name" in self.start.keys())
49        self.assert_("First news" in self.data, "No 'First news' in data")
50        self.assert_("n:language" in self.start.keys())
51        self.assert_("ua" in self.data, "No 'ua' in data")
52
53    def test_npublication_date(self):
54        self.assert_("n:publication_date" in self.start.keys())
55        self.assert_(self.pubdate in self.data, "No %s in data" % self.pubdate)
56       
57    def test_ntitle(self):
58        self.assert_("n:title" in self.start.keys())
59        self.assert_("First news (test)" in self.data, "No 'First news (test)' in data")
60
61    def test_no_naccess(self):
62        open("/tmp/news.sm.1.xml","w").write(self.sitemap)
63        self.assert_("n:access" not in self.start.keys())
64
65    def test_no_ngenres(self):
66        self.assert_("n:genres" not in self.start.keys())
67
68    def test_naccess(self):
69        # Test when access present
70        self.my_news._setProperty("gsm_access", "Registration")
71        self.my_news.reindexObject()
72        self.reParse()
73        open("/tmp/news.sm.2.xml","w").write(self.sitemap)
74        self.assert_("n:access" in self.start.keys())
75        self.assert_("Registration" in self.data, "No 'Registration' in data")
76
77    def test_ngenres(self):
78        # Test when access present
79        self.my_news._setProperty("gsm_genres", "PressRelease")
80        self.my_news.reindexObject()
81        self.reParse()
82        open("/tmp/news.sm.3.xml","w").write(self.sitemap)
83        self.assert_("n:genres" in self.start.keys())
84        self.assert_("PressRelease" in self.data, "No 'PressRelease' in data")
85
86
87def test_suite():
88    from unittest import TestSuite, makeSuite
89    suite = TestSuite()
90    suite.addTest(makeSuite(TestNewsSitemapsXML))
91    return suite
Note: See TracBrowser for help on using the repository browser.