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

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

Remove config module from tests, move all constants into testInstallation and testResponce modules

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