import unittest2 as unittest

from zope.component import queryUtility, createObject

from plone.app.testing import TEST_USER_ID, setRoles

from plone.app.discussion.testing import \
    PLONE_APP_DISCUSSION_INTEGRATION_TESTING

from plone.app.discussion.interfaces import ICommentingTool, IConversation


class ToolTest(unittest.TestCase):

    layer = PLONE_APP_DISCUSSION_INTEGRATION_TESTING

    def setUp(self):
        self.portal = self.layer['portal']
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        self.portal.invokeFactory(id='doc1',
                                  title='Document 1',
                                  type_name='Document')

    def test_tool_indexing(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)

        # Add a comment.
        comment = createObject('plone.Comment')
        comment.creator = 'jim'
        comment.author_name = "Jim"
        comment.text = 'Comment text'

        conversation.addComment(comment)

        # Check that the comment got indexed in the tool:
        tool = queryUtility(ICommentingTool)
        comment = list(tool.searchResults())
        self.assertTrue(
            len(comment) == 1,
            "There is only one comment, but we got"
            " %s results in the search" % len(comment)
        )
        self.assertEqual(comment[0].Title, 'Jim on Document 1')

    def test_unindexing(self):
        pass

    def test_search(self):
        # search returns only comments
        pass


def test_suite():
    return unittest.defaultTestLoader.loadTestsFromName(__name__)
