diff --git a/plone/app/discussion/catalog.py b/plone/app/discussion/catalog.py index bba83ea..29b4c8c 100644 --- a/plone/app/discussion/catalog.py +++ b/plone/app/discussion/catalog.py @@ -12,6 +12,11 @@ from plone.app.discussion.interfaces import IComment def comment_title(object): return object.title +@indexer(IComment) +def comment_description(object): + # Todo: this is wrong!!! + return object.title + @indexer(IComment) def comment_searchable_text(object): return object.title, object.text diff --git a/plone/app/discussion/configure.zcml b/plone/app/discussion/configure.zcml index 945b1f9..20dcada 100644 --- a/plone/app/discussion/configure.zcml +++ b/plone/app/discussion/configure.zcml @@ -59,6 +59,7 @@ + diff --git a/plone/app/discussion/tests/test_indexers.py b/plone/app/discussion/tests/test_indexers.py index be579ed..ac6a2a3 100644 --- a/plone/app/discussion/tests/test_indexers.py +++ b/plone/app/discussion/tests/test_indexers.py @@ -6,11 +6,13 @@ from Products.PloneTestCase.ptc import PloneTestCase from plone.app.discussion.tests.layer import DiscussionLayer from plone.app.discussion.interfaces import IConversation + from plone.indexer import indexer +from plone.indexer.delegate import DelegatingIndexerFactory from zope.component import provideAdapter -from plone.app.discussion.catalog import comment_title, comment_searchable_text +from plone.app.discussion.catalog import comment_title, comment_description, comment_searchable_text class IndexersTest(PloneTestCase): @@ -40,7 +42,30 @@ class IndexersTest(PloneTestCase): comment.text = 'Comment text' new_id = conversation.addComment(comment) + self.assertEquals(comment_title(comment)(), 'Comment 1') + self.assert_(isinstance(comment_title, DelegatingIndexerFactory)) + + def test_comment_description(self): + + # Create a conversation. In this case we doesn't assign it to an + # object, as we just want to check the Conversation object API. + conversation = IConversation(self.portal.doc1) + + # Pretend that we have traversed to the comment by aq wrapping it. + conversation = conversation.__of__(self.portal.doc1) + + # Add a comment. Note: in real life, we always create comments via the factory + # to allow different factories to be swapped in + + comment = createObject('plone.Comment') + comment.title = 'Comment 1' + comment.text = 'Comment text' + + new_id = conversation.addComment(comment) + + self.assertEquals(comment_description(comment)(), 'Comment 1') + self.assert_(isinstance(comment_description, DelegatingIndexerFactory)) def test_dates(self): # created, modified, effective etc @@ -64,6 +89,7 @@ class IndexersTest(PloneTestCase): new_id = conversation.addComment(comment) self.assertEquals(comment_searchable_text(comment)(), ('Comment 1', 'Comment text')) + self.assert_(isinstance(comment_searchable_text, DelegatingIndexerFactory)) def test_creator(self): pass