source: products/quintagroup.seoptimizer/branches/refactoring2.3.0/quintagroup/seoptimizer/tests/testUsageKeywords.py @ 1872

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

#161: update testing 'keyword' metatag

File size: 2.9 KB
Line 
1import urllib, re
2from Acquisition import aq_inner
3from base import getToolByName, FunctionalTestCase, newSecurityManager
4from config import *
5
6KWSTMPL = '.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="%s"\s*)){2}/>)'
7
8class TestUsageKeywords(FunctionalTestCase):
9
10    def afterSetUp(self):
11        self.sp = self.portal.portal_properties.seo_properties
12        self.pu = self.portal.plone_utils
13
14        self.basic_auth = 'portal_manager:secret'
15        uf = self.app.acl_users
16        uf.userFolderAddUser('portal_manager', 'secret', ['Manager'], [])
17        user = uf.getUserById('portal_manager')
18        if not hasattr(user, 'aq_base'):
19            user = user.__of__(uf)
20        newSecurityManager(None, user)
21
22        '''Preparation for functional testing'''
23        self.my_doc = self.portal.invokeFactory('Document', id='my_doc')
24        self.my_doc = self.portal['my_doc']
25
26
27    def test_noDefaultKeywords(self):
28        """No keywords added for the content by default"""
29        metatags = self.pu.listMetaTags(self.my_doc)
30        self.assert_('keywords' not in metatags)
31       
32
33    def testrender_SEOKeywords(self):
34        """ """
35        self.my_doc.setText('<p>foo bar</p>')
36        self.my_doc.manage_addProperty('qSEO_keywords', [], 'lines')
37
38        for seokws in [('foo',), ('foo', 'bar')]:
39            self.my_doc._updateProperty('qSEO_keywords', seokws)
40            html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
41            expect = ',\s*'.join(seokws)
42            self.assert_(re.match(KWSTMPL % expect, html, re.S|re.M),
43                         "No '%s' keyword found" % str(seokws))
44
45
46    def testbehave_NoSEOKeywordsOnlySubject(self):
47        self.my_doc.setText('<p>local subject</p>')
48        self.my_doc.setSubject('subject')
49        html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
50
51        expect = "subject"
52        self.assert_(re.match(KWSTMPL % expect, html, re.S|re.M),
53                     "No '%s' keyword find" % expect)
54
55    def testbehave_SEOKeywordsOverrideSubject(self):
56        SEOKWS = ('local',)
57        self.my_doc.setText('<p>local subject</p>')
58        self.my_doc.setSubject('subject')
59        self.my_doc.manage_addProperty('qSEO_keywords', SEOKWS, 'lines')
60        html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
61
62        expect = ',\s*'.join(SEOKWS)
63        self.assert_(re.match(KWSTMPL % expect, html, re.S|re.M),
64                     "No '%s' keywords find" % SEOKWS)
65
66    def testbehave_noSEOKeywordsNoSubject(self):
67        """Nor seo keywords not subject added"""
68        html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
69        self.assertFalse(re.match('.*(<meta\s[^\>]*name="keywords"[^\>]*>)',
70                                  html, re.S|re.M), "'keyword' meta tag found")
71
72
73def test_suite():
74    from unittest import TestSuite, makeSuite
75    suite = TestSuite()
76    suite.addTest(makeSuite(TestUsageKeywords))
77    return suite
Note: See TracBrowser for help on using the repository browser.