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

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

Rename all tests modules to easyer and shorter names

File size: 2.9 KB
Line 
1import urllib, re
2from Acquisition import aq_inner
3from base import getToolByName, FunctionalTestCase, newSecurityManager
4from config import *
5
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    def test_listMetaTags_empty(self):
26        metatags = self.pu.listMetaTags(self.my_doc)
27        self.assert_('keywords' not in metatags)
28
29    def test_listMetaTags_one(self):
30        self.my_doc.setText('<p>foo</p>')
31        self.my_doc.manage_addProperty('qSEO_keywords', ('foo',), 'lines')
32        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
33        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="foo"\s*)){2}/>)', self.html, re.S|re.M)
34        self.assert_(m, "No 'foo' keyword find")
35
36    def test_listMetaTags_two(self):
37        self.my_doc.setText('<p>foo bar</p>')
38        self.my_doc.manage_addProperty('qSEO_keywords', ('foo', 'bar'), 'lines')
39        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
40        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:foo|bar),\s*(?:foo|bar)"\s*)){2}/>)',
41                     self.html, re.S|re.M)
42        self.assert_(m, "No 'foo, bar' keyword find")
43
44    def setup_testing_render_keywords(self, keywords=('local',),
45                                      html='<p>local subject</p>'):
46        self.my_doc.setText(html)
47        if len(keywords):
48            self.my_doc.manage_addProperty('qSEO_keywords', keywords, 'lines')
49        aq_inner(self.my_doc).aq_explicit.setSubject('subject')
50        html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
51        return html
52
53    def test_render_only_subject(self):
54        self.html = self.setup_testing_render_keywords(keywords=())
55        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="subject"\s*)){2}/>)', self.html, re.S|re.M)
56        self.assert_(m, "No 'subject' keyword find")
57
58    def test_render_only_local_seokeywords(self):
59        self.html = self.setup_testing_render_keywords()
60        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="local\s*"\s*)){2}/>)', self.html, re.S|re.M)
61        self.assert_(m, "No 'local' keywords find")
62
63
64def test_suite():
65    from unittest import TestSuite, makeSuite
66    suite = TestSuite()
67    suite.addTest(makeSuite(TestUsageKeywords))
68    return suite
Note: See TracBrowser for help on using the repository browser.