/obsolete/old/Naaya-2009_12-editor/naaya/content/url/tests/testFunctional.py

https://github.com/eaudeweb/Naaya · Python · 162 lines · 121 code · 38 blank · 3 comment · 1 complexity · 95ef68eeb92998398933b02d5ce34cf1 MD5 · raw file

  1. import re
  2. from unittest import TestSuite, makeSuite
  3. from BeautifulSoup import BeautifulSoup
  4. from Products.Naaya.tests.NaayaFunctionalTestCase import NaayaFunctionalTestCase
  5. class NyURLFunctionalTestCase(NaayaFunctionalTestCase):
  6. """ TestCase for NaayaContent object """
  7. def afterSetUp(self):
  8. from Products.Naaya.NyFolder import addNyFolder
  9. from naaya.content.url.url_item import addNyURL
  10. addNyFolder(self.portal, 'myfolder', contributor='contributor', submitted=1)
  11. addNyURL(self.portal.myfolder, id='myurl', title='My url',
  12. locator='http://www.eaudeweb.ro', submitted=1, contributor='contributor')
  13. import transaction; transaction.commit()
  14. def beforeTearDown(self):
  15. self.portal.manage_delObjects(['myfolder'])
  16. import transaction; transaction.commit()
  17. def test_add(self):
  18. self.browser_do_login('contributor', 'contributor')
  19. self.browser.go('http://localhost/portal/myfolder/url_add_html')
  20. self.failUnless('<h1>Submit URL</h1>' in self.browser.get_html())
  21. form = self.browser.get_form('frmAdd')
  22. expected_controls = set([
  23. 'lang', 'title:utf8:ustring', 'description:utf8:ustring', 'coverage:utf8:ustring',
  24. 'keywords:utf8:ustring', 'releasedate', 'locator:utf8:ustring',
  25. ])
  26. found_controls = set(c.name for c in form.controls)
  27. self.failUnless(expected_controls.issubset(found_controls),
  28. 'Missing form controls: %s' % repr(expected_controls - found_controls))
  29. self.failUnlessEqual(form['sortorder:utf8:ustring'], '100')
  30. self.browser.clicked(form, self.browser.get_form_field(form, 'title'))
  31. form['title:utf8:ustring'] = 'test_url'
  32. form['description:utf8:ustring'] = 'test_url_description'
  33. form['coverage:utf8:ustring'] = 'test_url_coverage'
  34. form['keywords:utf8:ustring'] = 'keyw1, keyw2'
  35. form['locator:utf8:ustring'] = 'http://www.eaudeweb.ro'
  36. form['redirect:boolean'] = []
  37. self.browser.submit()
  38. html = self.browser.get_html()
  39. self.failUnless('The administrator will analyze your request and you will be notified about the result shortly.' in html)
  40. self.portal.myfolder.testurl.approveThis()
  41. self.browser.go('http://localhost/portal/myfolder/testurl')
  42. html = self.browser.get_html()
  43. self.failUnless(re.search(r'<h1>.*test_url.*</h1>', html, re.DOTALL))
  44. self.failUnless('test_url_description' in html)
  45. self.failUnless('test_url_coverage' in html)
  46. self.failUnless('keyw1, keyw2' in html)
  47. self.failUnless('http://www.eaudeweb.ro' in html)
  48. self.browser_do_logout()
  49. def test_add_error(self):
  50. self.browser_do_login('contributor', 'contributor')
  51. self.browser.go('http://localhost/portal/myfolder/url_add_html')
  52. form = self.browser.get_form('frmAdd')
  53. self.browser.clicked(form, self.browser.get_form_field(form, 'title'))
  54. # enter no values in the fields
  55. self.browser.submit()
  56. html = self.browser.get_html()
  57. self.failUnless('The form contains errors' in html)
  58. self.failUnless('Value required for "Title"' in html)
  59. def test_edit(self):
  60. self.browser_do_login('admin', '')
  61. self.browser.go('http://localhost/portal/myfolder/myurl/edit_html')
  62. form = self.browser.get_form('frmEdit')
  63. self.failUnlessEqual(form['title:utf8:ustring'], 'My url')
  64. form['title:utf8:ustring'] = 'new_url_title'
  65. self.browser.clicked(form, self.browser.get_form_field(form, 'title:utf8:ustring'))
  66. self.browser.submit()
  67. self.failUnlessEqual(self.portal.myfolder.myurl.title, 'new_url_title')
  68. self.browser.go('http://localhost/portal/myfolder/myurl/edit_html?lang=fr')
  69. form = self.browser.get_form('frmEdit')
  70. form['title:utf8:ustring'] = 'french_title'
  71. form['locator:utf8:ustring'] = 'http://www.eaudeweb.ro/?lang=fr'
  72. self.browser.clicked(form, self.browser.get_form_field(form, 'title:utf8:ustring'))
  73. self.browser.submit()
  74. self.failUnlessEqual(self.portal.myfolder.myurl.title, 'new_url_title')
  75. self.failUnlessEqual(self.portal.myfolder.myurl.locator, 'http://www.eaudeweb.ro')
  76. self.failUnlessEqual(self.portal.myfolder.myurl.getLocalProperty('title', 'fr'), 'french_title')
  77. self.failUnlessEqual(self.portal.myfolder.myurl.getLocalProperty('locator', 'fr'), 'http://www.eaudeweb.ro/?lang=fr')
  78. # try out redirecting
  79. self.browser.go('http://localhost/portal/myfolder/myurl/edit_html')
  80. form = self.browser.get_form('frmEdit')
  81. form['redirect:boolean'] = ['on']
  82. form['locator:utf8:ustring'] = 'http://localhost/info'
  83. self.browser.clicked(form, form.find_control('title:utf8:ustring'))
  84. self.browser.submit()
  85. self.browser.go('http://localhost/portal/myfolder/myurl')
  86. self.failUnlessEqual(self.browser.get_url(), 'http://localhost/info')
  87. self.browser_do_logout()
  88. def test_edit_error(self):
  89. return # this test is disabled
  90. self.browser_do_login('admin', '')
  91. self.browser.go('http://localhost/portal/myfolder/myurl/edit_html')
  92. form = self.browser.get_form('frmEdit')
  93. self.browser.clicked(form, self.browser.get_form_field(form, 'title:utf8:ustring'))
  94. form['title:utf8:ustring'] = ''
  95. self.browser.submit()
  96. html = self.browser.get_html()
  97. self.failUnless('The form contains errors' in html)
  98. self.failUnless('Value required for "Title"' in html)
  99. self.browser_do_logout()
  100. def test_manage(self):
  101. self.browser_do_login('admin', '')
  102. self.browser.go('http://localhost/portal/myfolder/myurl/manage_edit_html')
  103. form = self.browser.get_form('frmEdit')
  104. self.failUnlessEqual(form['title:utf8:ustring'], 'My url')
  105. form['title:utf8:ustring'] = 'new_url_title'
  106. self.browser.clicked(form, self.browser.get_form_field(form, 'title:utf8:ustring'))
  107. self.browser.submit()
  108. self.failUnlessEqual(self.portal.myfolder.myurl.title, 'new_url_title')
  109. self.browser_do_logout()
  110. def test_view_in_folder(self):
  111. self.browser_do_login('admin', '')
  112. self.browser.go('http://localhost/portal/myfolder')
  113. html = self.browser.get_html()
  114. soup = BeautifulSoup(html)
  115. tables = soup.findAll('table', id='folderfile_list')
  116. self.assertTrue(len(tables) == 1)
  117. links_to_url = tables[0].findAll('a', attrs={'href': 'http://localhost/portal/myfolder/myurl'})
  118. self.assertTrue(len(links_to_url) == 1)
  119. self.assertTrue(links_to_url[0].string == 'My url')
  120. self.browser_do_logout()
  121. def test_suite():
  122. suite = TestSuite()
  123. suite.addTest(makeSuite(NyURLFunctionalTestCase))
  124. return suite