comment_title, comment_text, and comment_searchable_text indexes added.

svn path=/plone.app.discussion/trunk/; revision=27247
This commit is contained in:
Timo Stollenwerk 2009-05-31 17:55:46 +00:00
parent 95405ee48f
commit 5f8acfd805
4 changed files with 101 additions and 15 deletions

View File

@ -4,3 +4,19 @@ indexes with values based on the IComment interface.
Also provide event handlers to actually catalog the comments. Also provide event handlers to actually catalog the comments.
""" """
from plone.indexer import indexer
from plone.app.discussion.interfaces import IComment
@indexer(IComment)
def comment_title(object):
return object.title
@indexer(IComment)
def comment_text(object):
return object.text
@indexer(IComment)
def comment_searchable_text(object):
return object.title, object.text

View File

@ -57,4 +57,9 @@
handler=".tool.unindex_object" handler=".tool.unindex_object"
/> />
<!-- adapters for indexes -->
<adapter name="title" factory=".catalog.comment_title" />
<adapter name="text" factory=".catalog.comment_text" />
<adapter name="searchable_text" factory=".catalog.comment_searchable_text" />
</configure> </configure>

View File

@ -1,24 +1,88 @@
import unittest import unittest
from zope.component import createObject
from Products.PloneTestCase.ptc import PloneTestCase from Products.PloneTestCase.ptc import PloneTestCase
from plone.app.discussion.tests.layer import DiscussionLayer from plone.app.discussion.tests.layer import DiscussionLayer
class TestIndexers(PloneTestCase): from plone.app.discussion.interfaces import IConversation
from plone.indexer import indexer
from zope.component import provideAdapter
from plone.app.discussion.catalog import comment_title, comment_text, comment_searchable_text
class IndexersTest(PloneTestCase):
layer = DiscussionLayer layer = DiscussionLayer
def test_title(self): def afterSetUp(self):
pass # First we need to create some content.
self.loginAsPortalOwner()
typetool = self.portal.portal_types
typetool.constructContent('Document', self.portal, 'doc1')
provideAdapter(comment_title, name='title')
def test_description(self): def test_comment_title(self):
pass
# 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_title(comment)(), 'Comment 1')
def test_comment_text(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_text(comment)(), 'Comment text')
def test_dates(self): def test_dates(self):
# created, modified, effective etc # created, modified, effective etc
pass pass
def test_searchable_text(self): def test_searchable_text(self):
pass # 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_searchable_text(comment)(), ('Comment 1', 'Comment text'))
def test_creator(self): def test_creator(self):
pass pass

View File

@ -34,6 +34,7 @@ setup(name='plone.app.discussion',
'zope.annotation', 'zope.annotation',
'zope.event', 'zope.event',
'zope.app.container', # XXX: eventually should change to zope.container 'zope.app.container', # XXX: eventually should change to zope.container
'plone.indexer',
], ],
entry_points=""" entry_points="""
[z3c.autoinclude.plugin] [z3c.autoinclude.plugin]