source: products/quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testQSEOptimizerUsageKeywords.py @ 1646

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

Rename test

File size: 7.6 KB
Line 
1import urllib, re
2from Acquisition import aq_inner
3from base import getToolByName, FunctionalTestCase, newSecurityManager
4from config import *
5
6class TestUsageKeywords(FunctionalTestCase):
7
8    def afterSetUp(self):
9        self.qi = self.portal.portal_quickinstaller
10        self.qi.installProduct(PROJECT_NAME)
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    def test_default_values_radiobutton_in_configlet(self):
27        self.assertEqual(self.sp.getProperty('settings_use_keywords_sg', 0), 1)
28        self.assertEqual(self.sp.getProperty('settings_use_keywords_lg', 0), 1)
29
30    def test_changes_using_keywords_in_configlet(self):
31        for sg, lg in ((1, 1), (1, 2), (2, 1), (2, 2), (3, 1), (3, 2)):
32            path = self.portal.id+'/@@seo-controlpanel?settingsUseKeywordsSG=%s'\
33                                '&settingsUseKeywordsLG=%s&form.submitted=1' % (sg, lg)
34            self.publish(path, self.basic_auth)
35            self.assertEqual(self.sp.getProperty('settings_use_keywords_sg', 0), sg)
36            self.assertEqual(self.sp.getProperty('settings_use_keywords_lg', 0), lg)
37
38    def test_additional_keywords_in_configlet(self):
39        quoted_keywords = urllib.quote('foo\nbar')
40        path = self.portal.id+'/@@seo-controlpanel?additionalKeywords:lines=%s&form.submitted=1'%quoted_keywords
41        self.publish(path, self.basic_auth)
42        self.assertEqual(self.sp.additional_keywords, ('foo', 'bar'))
43        self.publish(self.portal.id+'/@@seo-controlpanel?form.submitted=1', self.basic_auth)
44        self.assertEqual(self.sp.additional_keywords, ())
45
46    def test_listMetaTags_empty(self):
47        metatags = self.pu.listMetaTags(self.my_doc)
48        self.assert_('keywords' not in metatags)
49
50    def test_listMetaTags_one(self):
51        self.my_doc.setText('<p>foo</p>')
52        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=2)
53        self.my_doc.manage_addProperty('qSEO_keywords', ('foo',), 'lines')
54        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
55        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="foo"\s*)){2}/>)', self.html, re.S|re.M)
56        self.assert_(m, "No 'foo' keyword find")
57
58    def test_listMetaTags_two(self):
59        self.my_doc.setText('<p>foo bar</p>')
60        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=2)
61        self.my_doc.manage_addProperty('qSEO_keywords', ('foo', 'bar'), 'lines')
62        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
63        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:foo|bar),\s*(?:foo|bar)"\s*)){2}/>)',
64                     self.html, re.S|re.M)
65        self.assert_(m, "No 'foo, bar' keyword find")
66
67    def test_additional_keywords_in_listMetaTags_empty(self):
68        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=2)
69        self.sp.additional_keywords = ('foo',)
70        metatags = self.pu.listMetaTags(self.my_doc)
71        self.assert_('keywords' not in metatags)
72
73    def test_additional_keywords_in_listMetaTags_one(self):
74        self.my_doc.setText('<p>foo</p>')
75        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=2)
76        self.sp.additional_keywords = ('foo',)
77        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
78        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="foo"\s*)){2}/>)', self.html, re.S|re.M)
79        self.assert_(m, "No 'foo' keyword find")
80
81    def test_additional_keywords_in_listMetaTags_two(self):
82        self.my_doc.setText('<p>foo bar</p>')
83        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=2)
84        self.sp.additional_keywords = ('foo', 'bar')
85        self.html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
86        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:foo|bar),\s*(?:foo|bar)"\s*)){2}/>)',
87                    self.html, re.S|re.M)
88        self.assert_(m, "No 'foo, bar' keyword find")
89
90    def setup_testing_render_keywords(self):
91        self.my_doc.setText('<p>global local subject</p>')
92        self.sp.additional_keywords = (('global',))
93        self.my_doc.manage_addProperty('qSEO_keywords', ('local'), 'lines')
94        aq_inner(self.my_doc).aq_explicit.setSubject('subject')
95        html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth))
96        return html
97
98    def test_render_only_subject(self):
99        self.sp.manage_changeProperties(settings_use_keywords_sg=1, settings_use_keywords_lg=1)
100        self.html = self.setup_testing_render_keywords()
101        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="subject"\s*)){2}/>)', self.html, re.S|re.M)
102        self.assert_(m, "No 'subject' keyword find")
103
104    def test_render_subject_and_local_seokeywords(self):
105        self.sp.manage_changeProperties(settings_use_keywords_sg=1, settings_use_keywords_lg=2)
106        self.html = self.setup_testing_render_keywords()
107        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:subject|local),\s*(?:subject|local)"\s*)){2}/>)',
108                    self.html, re.S|re.M)
109        self.assert_(m, "No 'subject, local' keywords find")
110
111    def test_render_only_global_seokeywords(self):
112        self.sp.manage_changeProperties(settings_use_keywords_sg=2, settings_use_keywords_lg=1)
113        self.html = self.setup_testing_render_keywords()
114        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="global"\s*)){2}/>)', self.html, re.S|re.M)
115        self.assert_(m, "No 'global' keyword find")
116
117    def test_render_global_and_local_seokeywords(self):
118        self.sp.manage_changeProperties(settings_use_keywords_sg=2, settings_use_keywords_lg=2)
119        self.html = self.setup_testing_render_keywords()
120        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:global|local),\s*(?:global|local)"\s*)){2}/>)',
121                    self.html, re.S|re.M)
122        self.assert_(m, "No 'global, local' keywords find")
123
124    def test_render_subject_and_global_seokeywords(self):
125        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=1)
126        self.html = self.setup_testing_render_keywords()
127        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:subject|global),\s*(?:subject|global)"\s*)){2}/>)',
128                    self.html, re.S|re.M)
129        self.assert_(m, "No 'subject, global' keywords find")
130
131    def test_render_subject_and_global_and_local_seokeywords(self):
132        self.sp.manage_changeProperties(settings_use_keywords_sg=3, settings_use_keywords_lg=2)
133        self.html = self.setup_testing_render_keywords()
134        m = re.match('.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="(?:subject|global|local),\s*(?:subject|global|local),\s*(?:subject|global|local)"\s*)){2}/>)',
135                    self.html, re.S|re.M)
136        self.assert_(m, "No 'subject, global, local' keywords find")
137
138
139def test_suite():
140    from unittest import TestSuite, makeSuite
141    suite = TestSuite()
142    suite.addTest(makeSuite(TestUsageKeywords))
143    return suite
Note: See TracBrowser for help on using the repository browser.