Changeset 3134 in products for quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testUsageKeywords.py
- Timestamp:
- Apr 18, 2011 2:32:21 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testUsageKeywords.py
r2928 r3134 8 8 KWSTMPL = '.*(<meta\s+(?:(?:name="keywords"\s*)|(?:content="%s"\s*)){2}/>)' 9 9 10 10 11 class TestUsageKeywords(FunctionalTestCase): 11 12 … … 13 14 self.sp = self.portal.portal_properties.seo_properties 14 15 self.pu = self.portal.plone_utils 15 self.basic_auth = ':'.join((portal_owner, default_password))16 self.basic_auth = ':'.join((portal_owner, default_password)) 16 17 self.loginAsPortalOwner() 17 18 #Preparation for functional testing … … 31 32 for seokws in [('foo',), ('foo', 'bar')]: 32 33 self.my_doc._updateProperty('qSEO_keywords', seokws) 33 html = str(self.publish(self.portal.id+'/my_doc', self.basic_auth)) 34 html = str(self.publish(self.portal.id + '/my_doc', 35 self.basic_auth)) 34 36 expect = ',\s*'.join(seokws) 35 open('/tmp/testrender_SEOKeywords', 'w').write(html)36 self.assert_(re.match(KWSTMPL % expect, html, re.S |re.M),37 open('/tmp/testrender_SEOKeywords', 'w').write(html) 38 self.assert_(re.match(KWSTMPL % expect, html, re.S | re.M), 37 39 "No '%s' keyword found" % str(seokws)) 38 40 … … 40 42 self.my_doc.setText('<p>local subject</p>') 41 43 self.my_doc.setSubject('subject') 42 html = str(self.publish(self.portal.id +'/my_doc', self.basic_auth))44 html = str(self.publish(self.portal.id + '/my_doc', self.basic_auth)) 43 45 44 46 expect = "subject" 45 self.assert_(re.match(KWSTMPL % expect, html, re.S |re.M),47 self.assert_(re.match(KWSTMPL % expect, html, re.S | re.M), 46 48 "No '%s' keyword find" % expect) 47 49 … … 51 53 self.my_doc.setSubject('subject') 52 54 self.my_doc.manage_addProperty('qSEO_keywords', SEOKWS, 'lines') 53 html = str(self.publish(self.portal.id +'/my_doc', self.basic_auth))55 html = str(self.publish(self.portal.id + '/my_doc', self.basic_auth)) 54 56 55 57 expect = ',\s*'.join(SEOKWS) 56 self.assert_(re.match(KWSTMPL % expect, html, re.S |re.M),58 self.assert_(re.match(KWSTMPL % expect, html, re.S | re.M), 57 59 "No '%s' keywords find" % SEOKWS) 58 60 59 61 def testbehave_noSEOKeywordsNoSubject(self): 60 62 """Nor seo keywords not subject added""" 61 html = str(self.publish(self.portal.id +'/my_doc', self.basic_auth))63 html = str(self.publish(self.portal.id + '/my_doc', self.basic_auth)) 62 64 self.assertFalse(re.match('.*(<meta\s[^\>]*name="keywords"[^\>]*>)', 63 html, re.S|re.M), "'keyword' meta tag found") 65 html, re.S | re.M), 66 "'keyword' meta tag found") 64 67 65 68 … … 81 84 self.chckView = queryMultiAdapter((self.my_doc, self.app.REQUEST), 82 85 name="checkSEOKeywords") 83 86 84 87 def patchURLLib(self, fnc): 85 88 self.orig_urlopen = urllib2.urlopen 86 89 self.urlfd = StringIO() 87 90 urllib2.urlopen = fnc 88 91 89 92 def unpatchURLLib(self): 90 93 urllib2.urlopen = self.orig_urlopen … … 99 102 def patch_urlopen(*args, **kwargs): 100 103 if args[0] == self.my_doc.absolute_url(): 101 self.urlfd.write(unicode(self.my_doc() + self.key).encode("utf-8")) 104 self.urlfd.write(unicode(self.my_doc() + 105 self.key).encode("utf-8")) 102 106 self.urlfd.seek(0) 103 107 return self.urlfd … … 110 114 self.assertTrue('3' in self.chckView()) 111 115 # 2. Opened urllib file descriptor must be closed 112 self.assertTrue(self.urlfd.closed, "Opened file descriptor was not closed.") 116 self.assertTrue(self.urlfd.closed, 117 "Opened file descriptor was not closed.") 113 118 self.unpatchURLLib() 114 119 115 120 def test_ExternalURLError(self): 116 121 def patch_urlopen(*args, **kwargs): … … 131 136 # 2. Opened urllib file descriptor should not be closed because 132 137 # it even not returned to the view 133 self.assertFalse(self.urlfd.closed, "Opened file descriptor was closed.") 138 self.assertFalse(self.urlfd.closed, 139 "Opened file descriptor was closed.") 134 140 self.unpatchURLLib() 135 141 136 142 def test_ExternalIOError(self): 137 143 def patch_urlopen(*args, **kwargs): 138 144 if args[0] == self.my_doc.absolute_url(): 139 self.urlfd.write(unicode(self.my_doc() + self.key).encode("utf-8")) 145 self.urlfd.write(unicode(self.my_doc() + 146 self.key).encode("utf-8")) 140 147 self.urlfd.seek(0) 141 148 return self.urlfd 142 149 else: 143 150 return self.orig_urlopen(*args, **kwargs) 151 144 152 def patch_read(*args, **kwargs): 145 153 raise Exception("General exception") 146 154 # Patch urllib2.urlopen to emulate external url retrieval 147 155 self.patchURLLib(fnc=patch_urlopen) 148 # Patch opened by urllib2 file descriptor to emulate IOError during reading 156 # Patch opened by urllib2 file descriptor to emulate 157 # IOError during reading 149 158 self.urlfd.read = patch_read 150 159 self.seo._updateProperty("external_keywords_test", True) … … 153 162 self.assertRaises(Exception, self.chckView) 154 163 # 2. Opened urllib file descriptor must be closed 155 self.assertTrue(self.urlfd.closed, "Opened file descriptor was not closed.") 164 self.assertTrue(self.urlfd.closed, 165 "Opened file descriptor was not closed.") 156 166 self.unpatchURLLib() 157 167 158 168 159 169 def test_suite(): … … 163 173 suite.addTest(makeSuite(TestCalcKeywords)) 164 174 return suite 165
Note: See TracChangeset
for help on using the changeset viewer.