source: products/quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testQSEOptimizerAdditionalKeywords.py @ 1493

Last change on this file since 1493 was 1493, checked in by liebster, 14 years ago

Modified structure tests

File size: 4.2 KB
Line 
1import urllib, re
2from base import getToolByName, FunctionalTestCase, newSecurityManager
3from config import *
4
5class TestAdditionalKeywords(FunctionalTestCase):
6
7    def afterSetUp(self):
8        self.qi = self.portal.portal_quickinstaller
9        self.qi.installProduct(PROJECT_NAME)
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_additional_keywords_in_configlet(self):
26        quoted_keywords = urllib.quote('foo\nbar')
27        path = self.portal.id+'/@@seo-controlpanel?additionalKeywords:lines=%s&form.submitted=1'%quoted_keywords
28        self.publish(path, self.basic_auth)
29        self.assertEqual(self.sp.additional_keywords, ('foo', 'bar'))
30        self.publish(self.portal.id+'/@@seo-controlpanel?form.submitted=1', self.basic_auth)
31        self.assertEqual(self.sp.additional_keywords, ())
32
33    def test_listMetaTags_empty(self):
34        metatags = self.pu.listMetaTags(self.my_doc)
35        self.assert_('keywords' not in metatags)
36
37    def test_listMetaTags_one(self):       
38        self.my_doc.manage_addProperty('qSEO_keywords', ('foo',), 'lines')
39        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
40        m = re.match('.*<meta\ content="foo"\ name="keywords"\ />', self.html, re.S|re.M)
41        if not m:
42            m = re.match('.*<meta\ name="keywords"\ content="foo"\ />', self.html, re.S|re.M)
43        self.assert_(m, "No 'foo' keyword find")
44
45    def test_listMetaTags_two(self):       
46        self.my_doc.manage_addProperty('qSEO_keywords', ('foo', 'bar'), 'lines')
47        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
48        m = re.match('.*<meta\ content="foo, bar"\ name="keywords"\ />', self.html, re.S|re.M)
49        if not m:
50            m = re.match('.*<meta\ name="keywords"\ content="foo, bar"\ />', self.html, re.S|re.M)
51        self.assert_(m, "No 'foo, bar' keyword find")
52
53    def test_additional_keywords_in_listMetaTags_empty(self):       
54        self.sp.additional_keywords = ('foo',)
55        metatags = self.pu.listMetaTags(self.my_doc)
56        self.assert_('keywords' not in metatags)
57
58    def test_additional_keywords_in_listMetaTags_one(self):
59        self.my_doc.setText('<p>foo</p>')
60        self.sp.additional_keywords = ('foo',)
61        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
62        m = re.match('.*<meta\ content="foo"\ name="keywords"\ />', self.html, re.S|re.M)
63        if not m:
64            m = re.match('.*<meta\ name="keywords"\ content="foo"\ />', self.html, re.S|re.M)
65        self.assert_(m, "No 'foo' keyword find")
66
67    def test_additional_keywords_in_listMetaTags_two(self):
68        self.my_doc.setText('<p>foo bar</p>')
69        self.sp.additional_keywords = ('foo', 'bar')
70        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
71        m = re.match('.*<meta\ content="foo, bar"\ name="keywords"\ />', self.html, re.S|re.M)
72        if not m:
73            m = re.match('.*<meta\ name="keywords"\ content="foo, bar"\ />', self.html, re.S|re.M)
74        self.assert_(m, "No 'foo, bar' keyword find")
75
76    def test_additional_keywords_in_listMetaTags_merge(self):
77        self.my_doc.setText('<p>foo bar</p>')
78        self.sp.additional_keywords = ('foo', 'bar')
79        self.my_doc.manage_addProperty('qSEO_keywords', ('baz',), 'lines')
80        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
81        m = re.findall('.*(<meta\s+(?:content="(?:(?:baz|bar|foo),\s*(?:baz|foo|bar),\s*(?:baz|foo|bar)"\s*)|(?:name="keywords"\s*)){2}/>)', self.html, re.S|re.M)
82        self.assert_(m, "No 'foo, bar, baz' keyword find")
83
84def test_suite():
85    from unittest import TestSuite, makeSuite
86    suite = TestSuite()
87    suite.addTest(makeSuite(TestAdditionalKeywords))
88    return suite
Note: See TracBrowser for help on using the repository browser.