[Erp5-report] r22543 - /erp5/trunk/products/ERP5/tests/testRSS.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Jul 18 08:49:53 CEST 2008
Author: ivan
Date: Fri Jul 18 08:49:53 2008
New Revision: 22543
URL: http://svn.erp5.org?rev=22543&view=rev
Log:
Extend test to cover changing dynamically in URL portal_skin to RSS.
Contributed by zstoinov.
Modified:
erp5/trunk/products/ERP5/tests/testRSS.py
Modified: erp5/trunk/products/ERP5/tests/testRSS.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testRSS.py?rev=22543&r1=22542&r2=22543&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testRSS.py (original)
+++ erp5/trunk/products/ERP5/tests/testRSS.py Fri Jul 18 08:49:53 2008
@@ -29,6 +29,7 @@
from Products.ERP5Type.tests.ERP5TypeTestCase import ERP5TypeTestCase
from AccessControl.SecurityManagement import newSecurityManager
+from Products.ERP5Form.Form import ERP5Form
from xml.dom.minidom import parseString
@@ -74,36 +75,61 @@
def makeDataObjects(self, quiet=0, run=run_all_test):
"""
Create some Pesons so that we have something to feed.
- (we create only one because we'd have sorting problems)
"""
if hasattr(self.portal.person_module, 'one'):
self.portal.person_module.manage_delObjects(['one'])
+ if hasattr(self.portal.person_module, 'two'):
+ self.portal.person_module.manage_delObjects(['two'])
one = self.portal.person_module.newContent(id="one", title="One", description="Person One")
+ two = self.portal.person_module.newContent(id="two", title="Two", description="Person Two")
get_transaction().commit()
one.reindexObject()
+ two.reindexObject()
self.tic()
-
+
def test_00_haveData(self, quiet=0, run=run_all_test):
"""
Check we have people.
"""
module = self.portal.person_module
self.assertEquals(module.one.getTitle(), "One")
-
+ self.assertEquals(module.two.getTitle(), "Two")
+
def test_01_renderRSS(self, quiet=0, run=run_all_test):
"""
View person module as RSS, parse XML, see if everything is there.
"""
+ portal=self.getPortal()
+ request=self.app.REQUEST
+
+ request.set('portal_skin', 'RSS');
+ portal.portal_skins.changeSkin('RSS');
+
one = self.portal.person_module.one
+ two = self.portal.person_module.two
+
feed_string = self.portal.person_module.Folder_viewContentListAsRSS()
doc = parseString(feed_string)
rss = doc.childNodes[0]
channel = rss.getElementsByTagName('channel')[0]
+ self.assertEquals(len(rss.getElementsByTagName('channel')), 1)
+ self.assertEquals(len(channel.getElementsByTagName('item')), 2)
+
titles = [getNodeContent(n) for n in channel.getElementsByTagName('title')]
titles.sort()
- self.assertEquals(titles, ['One', 'Persons']) # there is channel title and person title
- self.assertEquals(len(channel.getElementsByTagName('item')), 1)
- item = channel.getElementsByTagName('item')[0] # the one person
+ self.assertEquals(titles, ['One', 'Persons', 'Two']) # there is channel title and person titles
+
+ item = channel.getElementsByTagName('item')[0] # the two person, because we have default sorting in form
+ self.assertEquals(getSubnodeContent(item, 'title'), 'Two')
+ self.assertEquals(getSubnodeContent(item, 'description'), 'Person Two')
+ self.assertEquals(getSubnodeContent(item, 'author'), 'seb')
+ expected_link = two.absolute_url() + '/view'
+ self.assertEquals(getSubnodeContent(item, 'link'), expected_link)
+ self.assertEquals(len(item.getElementsByTagName('pubDate')), 1)
+ # is date formatted correctly?
+ self.assertEquals(two.getCreationDate().rfc822(), getSubnodeContent(item, 'pubDate'))
+
+ item = channel.getElementsByTagName('item')[1] # the one person
self.assertEquals(getSubnodeContent(item, 'title'), 'One')
self.assertEquals(getSubnodeContent(item, 'description'), 'Person One')
self.assertEquals(getSubnodeContent(item, 'author'), 'seb')
@@ -111,9 +137,81 @@
self.assertEquals(getSubnodeContent(item, 'link'), expected_link)
self.assertEquals(len(item.getElementsByTagName('pubDate')), 1)
# is date formatted correctly?
- self.assertEquals(one.getCreationDate().rfc822(), getSubnodeContent(item, 'pubDate'))
-
-
+ self.assertEquals(two.getCreationDate().rfc822(), getSubnodeContent(item, 'pubDate'))
+
+ def test_02_renderRSS(self, quiet=0, run=run_all_test):
+ """
+ View person module as RSS, parse XML, see if everything is there.
+ In this case pt for render current form('Test_view') is default page template
+ and some listbox's columns(i.e. description) label not present in required channel fields
+ """
+ portal=self.getPortal()
+ request=self.app.REQUEST
+
+ request.set('portal_skin', 'RSS');
+ portal.portal_skins.changeSkin('RSS');
+
+ self.getPortal()._setObject('Test_view',
+ ERP5Form('Test_view', 'View'))
+ portal.Test_view.manage_addField('listbox', 'listbox', 'ListBox')
+ portal.Test_view.manage_addField('listbox_link', 'listbox_link', 'StringField')
+
+ listbox=portal.Test_view.listbox
+ self.assertNotEquals(listbox, None)
+ listbox_link=portal.Test_view.listbox_link
+ self.assertNotEquals(listbox_link, None)
+
+ listbox.manage_edit_xmlrpc(
+ dict(columns=[('title', 'Title'),
+ ('creation_date', 'pubDate'),
+ ('Base_getRSSAuthor','author'),
+ ('link','link'),
+ ('absolute_url', 'guid')],
+ sort=[('creation_date | descending')],
+ list_action='list',
+ search=1,
+ select=1,
+ list_method='searchFolder',
+ count_method='countFolder',
+ selection_name='rss_folder_selection'))
+
+ listbox_link.manage_tales_xmlrpc(
+ dict(default="python: cell.absolute_url() + '/view'"))
+
+ one = self.portal.person_module.one
+ two = self.portal.person_module.two
+
+ feed_string = self.portal.person_module.Test_view()
+ doc = parseString(feed_string)
+ rss = doc.childNodes[0]
+ channel = rss.getElementsByTagName('channel')[0]
+ self.assertEquals(len(rss.getElementsByTagName('channel')), 1)
+ self.assertEquals(len(channel.getElementsByTagName('item')), 2)
+
+ titles = [getNodeContent(n) for n in channel.getElementsByTagName('title')]
+ titles.sort()
+ self.assertEquals(titles, ['One', 'Persons', 'Two']) # there is channel title and person titles
+
+ item = channel.getElementsByTagName('item')[0] # the two person, because we have default sorting in form
+ self.assertEquals(getSubnodeContent(item, 'title'), 'Two')
+ self.assertEquals(getSubnodeContent(item, 'description'), 'Person Two')
+ self.assertEquals(getSubnodeContent(item, 'author'), 'seb')
+ expected_link = two.absolute_url() + '/view'
+ self.assertEquals(getSubnodeContent(item, 'link'), expected_link)
+ self.assertEquals(len(item.getElementsByTagName('pubDate')), 1)
+ # is date formatted correctly?
+ self.assertEquals(two.getCreationDate().rfc822(), getSubnodeContent(item, 'pubDate'))
+
+ item = channel.getElementsByTagName('item')[1] # the one person
+ self.assertEquals(getSubnodeContent(item, 'title'), 'One')
+ self.assertEquals(getSubnodeContent(item, 'description'), 'Person One')
+ self.assertEquals(getSubnodeContent(item, 'author'), 'seb')
+ expected_link = one.absolute_url() + '/view'
+ self.assertEquals(getSubnodeContent(item, 'link'), expected_link)
+ self.assertEquals(len(item.getElementsByTagName('pubDate')), 1)
+ # is date formatted correctly?
+ self.assertEquals(two.getCreationDate().rfc822(), getSubnodeContent(item, 'pubDate'))
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestRSS))
More information about the Erp5-report
mailing list