source: products/quintagroup.plonegooglesitemaps/branches/test_refactoring/quintagroup/plonegooglesitemaps/tests/testPinging.py @ 2527

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

#206: Split single testqPloneGoogleSitemaps module into several specific one

  • Property svn:eol-style set to native
File size: 3.7 KB
Line 
1from base import *
2from Products.CMFPlone.utils import _createObjectByType
3
4
5class TestPinging(FunctionalTestCase):
6
7    def afterSetUp(self):
8        super(TestPinging, self).afterSetUp()
9
10        self.workflow = self.portal.portal_workflow
11        self.workflow.setChainForPortalTypes(pt_names=('News Item','Document'),
12                                             chain="simple_publication_workflow")
13        self.gsm_props = self.portal.portal_properties['googlesitemap_properties']
14        self.auth = 'admin:admin'
15        self.portal.portal_membership.addMember('admin', 'admin', ('Manager',), [])
16        # Add sitemaps
17        self.contentSM = _createObjectByType('Sitemap', self.portal, id='google-sitemaps')
18        self.contentSM.setPingTransitions(('simple_publication_workflow#publish',))
19        self.newsSM = _createObjectByType('Sitemap', self.portal, id='news-sitemaps')
20        self.newsSM.setPortalTypes(('News Item','Document'))
21        self.newsSM.setPingTransitions(('simple_publication_workflow#publish',))
22        self.sitemapUrl = '/'+self.portal.absolute_url(1) + '/google-sitemaps'
23        # Add testing document to portal
24        my_doc = self.portal.invokeFactory('Document', id='my_doc')
25        self.my_doc = self.portal['my_doc']
26        my_news = self.portal.invokeFactory('News Item', id='my_news')
27        self.my_news = self.portal['my_news']
28
29    def testAutomatePinging(self):
30        # 1. Check for pinging both sitemaps
31        back_out, myout = sys.stdout, StringIO()
32        sys.stdout = myout
33        try:
34            self.workflow.doActionFor(self.my_doc, 'publish')
35            myout.seek(0)
36            data = myout.read()
37        finally:
38            sys.stdout = back_out
39
40        self.assert_('Pinged %s sitemap to Google' % self.contentSM.absolute_url() in data,
41                     "Not pinged %s: '%s'" % (self.contentSM.id, data))
42        self.assert_('Pinged %s sitemap to Google' % self.newsSM.absolute_url() in data,
43                     "Not pinged %s: '%s'" % (self.newsSM.id, data))
44
45        # 2. Check for pinging only news-sitemap sitemaps
46        back_out, myout = sys.stdout, StringIO()
47        sys.stdout = myout
48        try:
49            self.workflow.doActionFor(self.my_news, 'publish')
50            myout.seek(0)
51            data = myout.read()
52        finally:
53            sys.stdout = back_out
54
55        self.assert_('Pinged %s sitemap to Google' % self.newsSM.absolute_url() in data,
56                     "Not pinged %s: '%s'" % (self.newsSM.id, data))
57        self.assert_(not 'Pinged %s sitemap to Google' % self.contentSM.absolute_url() in data,
58                     "Pinged %s on news: '%s'" % (self.contentSM.id, data))
59
60    def testPingingWithSetupForm(self):
61        # Ping news and content sitemaps
62        formUrl = '/'+self.portal.absolute_url(1) + '/prefs_gsm_settings'
63        qs = 'smselected:list=%s&smselected:list=%s&form.button.Ping=1&form.submitted=1' % \
64             (self.contentSM.id, self.newsSM.id)
65
66        back_out, myout = sys.stdout, StringIO()
67        sys.stdout = myout
68        try:
69            response = self.publish("%s?%s" % (formUrl, qs), basic=self.auth)
70            myout.seek(0)
71            data = myout.read()
72        finally:
73            sys.stdout = back_out
74
75        self.assert_('Pinged %s sitemap to Google' % self.contentSM.absolute_url() in data,
76                     "Not pinged %s: '%s'" % (self.contentSM.id, data))
77        self.assert_('Pinged %s sitemap to Google' % self.newsSM.absolute_url() in data,
78                     "Not pinged %s: '%s'" % (self.newsSM.id, data))
79
80
81
82def test_suite():
83    from unittest import TestSuite, makeSuite
84    suite = TestSuite()
85    suite.addTest(makeSuite(TestPinging))
86    return suite
87
88if __name__ == '__main__':
89    unittest.main(defaultTest='test_suite')
90#    framework()
Note: See TracBrowser for help on using the repository browser.