source: products/quintagroup.seoptimizer/trunk/quintagroup/seoptimizer/tests/testCanonicalURL.py @ 3141

Last change on this file since 3141 was 3141, checked in by zidane, 13 years ago

fixes pyflakes

  • Property svn:eol-style set to native
File size: 4.8 KB
Line 
1from quintagroup.canonicalpath.interfaces import ICanonicalLink
2from quintagroup.seoptimizer.tests.base import FunctionalTestCase
3from Products.PloneTestCase.PloneTestCase import portal_owner, \
4    default_password
5import re
6from Products.CMFCore.utils import getToolByName
7
8
9class TestCanonicalURL(FunctionalTestCase):
10
11    def afterSetUp(self):
12        self.basic_auth = ':'.join((portal_owner, default_password))
13        self.loginAsPortalOwner()
14        # Preparation for functional testing
15        self.portal.invokeFactory('Document', id='mydoc')
16        self.mydoc = self.portal['mydoc']
17        self.mydoc_path = "/%s" % self.mydoc.absolute_url(1)
18        self.curl = re.compile('<link\srel\s*=\s*"canonical"\s+' \
19                               '[^>]*href\s*=\s*\"([^\"]*)\"[^>]*>',
20                                re.S | re.M)
21
22    def test_CanonicalURL(self):
23        html = self.publish(self.mydoc_path, self.basic_auth).getBody()
24        foundcurls = self.curl.findall(html)
25        mydoc_url = self.mydoc.absolute_url()
26
27        self.assertTrue([1 for curl in foundcurls if curl == mydoc_url],
28           "Wrong CANONICAL URL for document: %s, all must be: %s" % (
29           foundcurls, mydoc_url))
30
31    def test_updateCanonicalURL(self):
32        mydoc_url_new = self.mydoc.absolute_url() + '.new'
33        # Update canonical url property
34        self.publish(self.mydoc_path + '/@@seo-context-properties?' \
35                     'seo_canonical_override=checked&seo_canonical=%s&' \
36                     'form.submitted=1&form.button.Save=Save' % mydoc_url_new,
37                     self.basic_auth)
38        # Test updated canonical url
39        html = self.publish(self.mydoc_path, self.basic_auth).getBody()
40        foundcurls = self.curl.findall(html)
41
42        qseo_url = ICanonicalLink(self.mydoc).canonical_link
43        self.assertTrue(qseo_url == mydoc_url_new,
44                        "Not set 'qSEO_canonical' property")
45        self.assertTrue([1 for curl in foundcurls if curl == mydoc_url_new],
46                        "Wrong CANONICAL URL for document: %s, all must be: %s"
47                        % (foundcurls, mydoc_url_new))
48
49    def test_defaultCanonical(self):
50        expect = self.mydoc.absolute_url()
51        cpath = ICanonicalLink(self.mydoc).canonical_link
52        self.assertTrue(cpath == expect,
53            "Default canonical link adapter return: '%s', must be: '%s'" % (
54             cpath, expect))
55
56    def testCatalogUpdated(self):
57        getToolByName(self.portal, 'portal_url')
58        catalog = getToolByName(self.portal, 'portal_catalog')
59        catalog.addColumn('canonical_link')
60
61        # get catalog data before update
62        mydoc_catalog_canonical = catalog(id="mydoc")[0].canonical_link
63        self.assertTrue(not mydoc_catalog_canonical)
64
65        # Update canonical url property
66        mydoc_url_new = self.mydoc.absolute_url() + '.new'
67        self.publish(self.mydoc_path + '/@@seo-context-properties?' \
68            'seo_canonical_override=checked&seo_canonical=%s' \
69            '&form.submitted=1&form.button.Save=Save' % mydoc_url_new,
70             self.basic_auth)
71
72        newcpath = ICanonicalLink(self.mydoc).canonical_link
73        mydoc_catalog_canonical = catalog(id="mydoc")[0].canonical_link
74        self.assertTrue(newcpath == mydoc_catalog_canonical,
75                        "canonical path get by adapter: '%s' not equals to "\
76                        "cataloged one: '%s'" % (newcpath,
77                                                 mydoc_catalog_canonical))
78
79    def test_canonicalValidation(self):
80        wrong_canonical = 'wrong   canonical'
81        # Update canonical url property
82        html = self.publish(self.mydoc_path + '/@@seo-context-properties?' \
83                            'seo_canonical_override=checked&seo_canonical=%s&'\
84                            'form.submitted=1&form.button.Save=Save'
85                            % wrong_canonical, self.basic_auth).getBody()
86        self.assertTrue("wrong canonical url" in html,
87                        "Canonical url not validated")
88
89    def test_delCanonical(self):
90        newcanonical = '/new_canonical'
91        ICanonicalLink(self.mydoc).canonical_link = newcanonical
92
93        assert ICanonicalLink(self.mydoc).canonical_link == newcanonical
94
95        # remove canonical url customization
96        self.publish(self.mydoc_path + '/@@seo-context-properties?' \
97                     'seo_canonical=%s&seo_canonical_override=&'\
98                     'form.submitted=1&form.button.Save=Save' % newcanonical,
99                      self.basic_auth)
100
101        mydoc_canonical = ICanonicalLink(self.mydoc).canonical_link
102        self.assertTrue(mydoc_canonical == self.mydoc.absolute_url(),
103            "Steel customized canonical url after remove customization")
104
105
106def test_suite():
107    from unittest import TestSuite, makeSuite
108    suite = TestSuite()
109    suite.addTest(makeSuite(TestCanonicalURL))
110    return suite
Note: See TracBrowser for help on using the repository browser.