class TestTopicIndex(TestBase):

    def setUp(self):
        self.TI = TopicIndex("topic")
        self.TI.addFilteredSet("doc1","PythonFilteredSet","o.meta_type=='doc1'")
        self.TI.addFilteredSet("doc2","PythonFilteredSet","o.meta_type=='doc2'")

        self.TI.index_object(0 , Obj('0',))
        self.TI.index_object(1 , Obj('1','doc1'))
        self.TI.index_object(2 , Obj('2','doc1'))
        self.TI.index_object(3 , Obj('3','doc2'))
        self.TI.index_object(4 , Obj('4','doc2'))
        self.TI.index_object(5 , Obj('5','doc3'))
        self.TI.index_object(6 , Obj('6','doc3'))


    def testOr(self):

        self._searchOr('doc1',[1,2])
        self._searchOr(['doc1'],[1,2])
        self._searchOr('doc2',[3,4]),
        self._searchOr(['doc2'],[3,4])
        self._searchOr(['doc1','doc2'], [1,2,3,4])


    def testAnd(self):

        self._searchAnd('doc1',[1,2])
        self._searchAnd(['doc1'],[1,2])
        self._searchAnd('doc2',[3,4])
        self._searchAnd(['doc2'],[3,4])
        self._searchAnd(['doc1','doc2'],[])
    def setUp(self):
        self.TI = TopicIndex("topic")
        self.TI.addFilteredSet("doc1","PythonFilteredSet","o.meta_type=='doc1'")
        self.TI.addFilteredSet("doc2","PythonFilteredSet","o.meta_type=='doc2'")

        self.TI.index_object(0 , Obj('0',))
        self.TI.index_object(1 , Obj('1','doc1'))
        self.TI.index_object(2 , Obj('2','doc1'))
        self.TI.index_object(3 , Obj('3','doc2'))
        self.TI.index_object(4 , Obj('4','doc2'))
        self.TI.index_object(5 , Obj('5','doc3'))
        self.TI.index_object(6 , Obj('6','doc3'))
 def test_TopicIndex(self):
     from xml.dom.minidom import parseString
     from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex
     from Products.GenericSetup.testing import DummySetupEnviron
     from Products.GenericSetup.PluginIndexes.exportimport \
             import TopicIndexNodeAdapter
     environ = DummySetupEnviron()
     def _no_clear(*a):
         raise AssertionError("Don't clear me!")
     index = TopicIndex('topics')
     index.addFilteredSet('bar', 'PythonFilteredSet', 'True')
     index.addFilteredSet('baz', 'PythonFilteredSet', 'False')
     bar = index.filteredSets['bar']
     baz = index.filteredSets['baz']
     bar.clear = baz.clear = _no_clear 
     adapted = TopicIndexNodeAdapter(index, environ)
     adapted.node = parseString(_SET_XML).documentElement # no raise
Example #4
0
    def setUp(self):
        from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex

        PlacelessSetup.setUp(self)
        zcml.load_config('meta.zcml', Products.Five)
        zcml.load_config('configure.zcml', Products.GenericSetup.PluginIndexes)

        self._obj = TopicIndex('foo_topic')
        self._XML = _TOPIC_XML
Example #5
0
    def setUp(self):
        import Products.GenericSetup.PluginIndexes
        from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex

        NodeAdapterTestCase.setUp(self)
        zcml.load_config('configure.zcml', Products.GenericSetup.PluginIndexes)

        self._obj = TopicIndex('foo_topic')
        self._XML = _TOPIC_XML
Example #6
0
    def test_TopicIndex(self):
        from xml.dom.minidom import parseString
        from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex
        from Products.GenericSetup.testing import DummySetupEnviron
        from Products.GenericSetup.PluginIndexes.exportimport \
                import TopicIndexNodeAdapter
        environ = DummySetupEnviron()

        def _no_clear(*a):
            raise AssertionError("Don't clear me!")

        index = TopicIndex('topics')
        index.addFilteredSet('bar', 'PythonFilteredSet', 'True')
        index.addFilteredSet('baz', 'PythonFilteredSet', 'False')
        bar = index.filteredSets['bar']
        baz = index.filteredSets['baz']
        bar.clear = baz.clear = _no_clear
        adapted = TopicIndexNodeAdapter(index, environ)
        adapted.node = parseString(_SET_XML).documentElement  # no raise
Example #7
0
class TestTopicIndex(TestBase):

    def setUp(self):
        self.TI = TopicIndex("topic")
        self.TI.addFilteredSet("doc1", "PythonFilteredSet",
                               "o.meta_type=='doc1'")
        self.TI.addFilteredSet("doc2", "PythonFilteredSet",
                               "o.meta_type=='doc2'")

        self.TI.index_object(0, Obj('0', ))
        self.TI.index_object(1, Obj('1', 'doc1'))
        self.TI.index_object(2, Obj('2', 'doc1'))
        self.TI.index_object(3, Obj('3', 'doc2'))
        self.TI.index_object(4, Obj('4', 'doc2'))
        self.TI.index_object(5, Obj('5', 'doc3'))
        self.TI.index_object(6, Obj('6', 'doc3'))

    def test_interfaces(self):
        from Products.PluginIndexes.interfaces import ITopicIndex
        from Products.PluginIndexes.interfaces import IPluggableIndex
        from zope.interface.verify import verifyClass

        verifyClass(ITopicIndex, TopicIndex)
        verifyClass(IPluggableIndex, TopicIndex)

    def testOr(self):
        self._searchOr('doc1', [1, 2])
        self._searchOr(['doc1'], [1, 2])
        self._searchOr('doc2', [3, 4]),
        self._searchOr(['doc2'], [3, 4])
        self._searchOr(['doc1', 'doc2'], [1, 2, 3, 4])

    def testAnd(self):
        self._searchAnd('doc1', [1, 2])
        self._searchAnd(['doc1'], [1, 2])
        self._searchAnd('doc2', [3, 4])
        self._searchAnd(['doc2'], [3, 4])
        self._searchAnd(['doc1', 'doc2'], [])

    def testRemoval(self):
        self.TI.index_object(1, Obj('1', 'doc2'))
        self._searchOr('doc1', [2])
        self._searchOr('doc2', [1, 3, 4])
Example #8
0
    def setUp(self):
        from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex

        self._obj = TopicIndex('foo_topic')
        self._XML = _TOPIC_XML
Example #9
0
    def setUp(self):
        from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex

        NodeAdapterTestCase.setUp(self)
        self._obj = TopicIndex('foo_topic')
        self._XML = _TOPIC_XML
Example #10
0
class TestTopicIndex(TestBase):

    def setUp(self):
        self.TI = TopicIndex("topic")
        self.TI.addFilteredSet("doc1", "PythonFilteredSet",
                               "o.meta_type=='doc1'")
        self.TI.addFilteredSet("doc2", "PythonFilteredSet",
                               "o.meta_type=='doc2'")

        self.TI.index_object(0, Obj('0', ))
        self.TI.index_object(1, Obj('1', 'doc1'))
        self.TI.index_object(2, Obj('2', 'doc1'))
        self.TI.index_object(3, Obj('3', 'doc2'))
        self.TI.index_object(4, Obj('4', 'doc2'))
        self.TI.index_object(5, Obj('5', 'doc3'))
        self.TI.index_object(6, Obj('6', 'doc3'))

    def test_interfaces(self):
        from Products.PluginIndexes.interfaces import ITopicIndex
        from Products.PluginIndexes.interfaces import IPluggableIndex
        from Products.PluginIndexes.interfaces import IUniqueValueIndex
        from zope.interface.verify import verifyClass

        verifyClass(ITopicIndex, TopicIndex)
        verifyClass(IPluggableIndex, TopicIndex)
        verifyClass(IUniqueValueIndex, TopicIndex)

    def testOr(self):
        self._searchOr('doc1', [1, 2])
        self._searchOr(['doc1'], [1, 2])
        self._searchOr('doc2', [3, 4]),
        self._searchOr(['doc2'], [3, 4])
        self._searchOr(['doc1', 'doc2'], [1, 2, 3, 4])

    def testAnd(self):
        self._searchAnd('doc1', [1, 2])
        self._searchAnd(['doc1'], [1, 2])
        self._searchAnd('doc2', [3, 4])
        self._searchAnd(['doc2'], [3, 4])
        self._searchAnd(['doc1', 'doc2'], [])

    def testRemoval(self):
        self.TI.index_object(1, Obj('1', 'doc2'))
        self._searchOr('doc1', [2])
        self._searchOr('doc2', [1, 3, 4])

    def testNumObjects(self):
        self.assertEqual(self.TI.numObjects(), 4)

    def testIndexSize(self):
        self.assertEqual(self.TI.indexSize(), 2)

    def testGetEntryForObject(self):
        self.assertEqual(self.TI.getEntryForObject(0), None)
        self.assertEqual(self.TI.getEntryForObject(0, 'foo'), 'foo')
        self.assertEqual(self.TI.getEntryForObject(1), ['doc1'])
        self.assertEqual(self.TI.getEntryForObject(3), ['doc2'])

    def testUniqueValues(self):
        self.assertEqual(list(self.TI.uniqueValues()), ['doc1', 'doc2'])
        self.assertEqual(list(self.TI.uniqueValues(withLength=1)),
                         [('doc1', 2), ('doc2', 2)])

    def testHasUniqueValuesFor(self):
        self.assertFalse(self.TI.hasUniqueValuesFor('miss'))
        self.assertTrue(self.TI.hasUniqueValuesFor('topic'))