fix catalog clear-and-rebuild. this finally fixes story 847941.

svn path=/plone.app.discussion/trunk/; revision=30610
This commit is contained in:
Timo Stollenwerk 2009-10-15 10:11:12 +00:00
parent 9befc4c651
commit f4a4b6e370
2 changed files with 58 additions and 1 deletions

View File

@ -30,7 +30,6 @@ def patchedClearFindAndRebuild(self):
conversation = conversation.__of__(obj) conversation = conversation.__of__(obj)
for comment in conversation.getComments(): for comment in conversation.getComments():
try: try:
comment = conversation.getComments().next()
comment = comment.__of__(conversation) comment = comment.__of__(conversation)
if catalog: if catalog:
catalog.indexObject(comment) catalog.indexObject(comment)

View File

@ -196,6 +196,8 @@ class CommentCatalogTest(PloneTestCase):
conversation = IConversation(self.portal.doc1) conversation = IConversation(self.portal.doc1)
self.conversation = conversation
comment1 = createObject('plone.Comment') comment1 = createObject('plone.Comment')
comment1.title = 'Comment 1' comment1.title = 'Comment 1'
comment1.text = 'Comment text' comment1.text = 'Comment text'
@ -239,5 +241,61 @@ class CommentCatalogTest(PloneTestCase):
comment_brain = brains[0] comment_brain = brains[0]
self.assertEquals(comment_brain.Title, 'Comment 1') self.assertEquals(comment_brain.Title, 'Comment 1')
def test_clear_and_rebuild_catalog_for_nested_comments(self):
# Create a nested comment structure:
#
# Conversation
# +- Comment 1
# +- Comment 1_1
# | +- Comment 1_1_1
# +- Comment 1_2
# +- Comment 2
# +- Comment 2_1
comment1_1 = createObject('plone.Comment')
comment1_1.title = 'Re: Comment 1'
comment1_1.text = 'Comment text'
comment1_1_1 = createObject('plone.Comment')
comment1_1_1.title = 'Re: Re: Comment 1'
comment1_1_1.text = 'Comment text'
comment1_2 = createObject('plone.Comment')
comment1_2.title = 'Re: Comment 1 (2)'
comment1_2.text = 'Comment text'
comment2 = createObject('plone.Comment')
comment2.title = 'Comment 2'
comment2.text = 'Comment text'
comment2_1 = createObject('plone.Comment')
comment2_1.title = 'Re: Comment 2'
comment2_1.text = 'Comment text'
# Create the nested comment structure
new_id_1 = self.conversation.addComment(self.comment)
new_id_2 = self.conversation.addComment(comment2)
comment1_1.in_reply_to = self.comment_id
new_id_1_1 = self.conversation.addComment(comment1_1)
comment1_1_1.in_reply_to = new_id_1_1
new_id_1_1_1 = self.conversation.addComment(comment1_1_1)
comment1_2.in_reply_to = new_id_1
new_id_1_2 = self.conversation.addComment(comment1_2)
comment2_1.in_reply_to = new_id_2
new_id_2_1 = self.conversation.addComment(comment2_1)
# Clear and rebuild catalog
self.catalog.clearFindAndRebuild()
# Check if comments are still there
brains = self.catalog.searchResults(portal_type = 'Discussion Item')
self.failUnless(brains)
self.assertEquals(len(brains), 6)
def test_suite(): def test_suite():
return unittest.defaultTestLoader.loadTestsFromName(__name__) return unittest.defaultTestLoader.loadTestsFromName(__name__)