diff test/db_test_base.py @ 3751:44603dd791b7

full-text search wasn't coping with multiple multilinks to the same class
author Richard Jones <richard@users.sourceforge.net>
date Sat, 11 Nov 2006 03:01:54 +0000
parents 5cde43526788
children c92687dce135
line wrap: on
line diff
--- a/test/db_test_base.py	Fri Nov 10 11:03:42 2006 +0000
+++ b/test/db_test_base.py	Sat Nov 11 03:01:54 2006 +0000
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 #
-# $Id: db_test_base.py,v 1.80 2006-11-09 05:44:51 richard Exp $
+# $Id: db_test_base.py,v 1.81 2006-11-11 03:01:54 richard Exp $
 
 import unittest, os, shutil, errno, imp, sys, time, pprint, sets
 
@@ -78,7 +78,7 @@
     issue = module.IssueClass(db, "issue", title=String(indexme="yes"),
         status=Link("status"), nosy=Multilink("user"), deadline=Date(),
         foo=Interval(), files=Multilink("file"), assignedto=Link('user'),
-        priority=Link('priority'))
+        priority=Link('priority'), spam=Multilink('msg'))
     stuff = module.Class(db, "stuff", stuff=String())
     session = module.Class(db, 'session', title=String())
     msg = module.FileClass(db, "msg", date=Date(),
@@ -772,6 +772,20 @@
         # unindexed stopword
         self.assertEquals(self.db.indexer.search(['the'], self.db.issue), {})
 
+    def testIndexerSearchMulti(self):
+        m1 = self.db.msg.create(content="one two")
+        m2 = self.db.msg.create(content="two three")
+        i1 = self.db.issue.create(messages=[m1])
+        i2 = self.db.issue.create(spam=[m2])
+        self.db.commit()
+        self.assertEquals(self.db.indexer.search([], self.db.issue), {})
+        self.assertEquals(self.db.indexer.search(['one'], self.db.issue),
+            {i1: {'messages': [m1]}})
+        self.assertEquals(self.db.indexer.search(['two'], self.db.issue),
+            {i1: {'messages': [m1]}, i2: {'spam': [m2]}})
+        self.assertEquals(self.db.indexer.search(['three'], self.db.issue),
+            {i2: {'spam': [m2]}})
+
     def testReindexingChange(self):
         search = self.db.indexer.search
         issue = self.db.issue
@@ -1542,7 +1556,7 @@
         keys.sort()
         self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
             'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages',
-            'nosy', 'priority', 'status', 'superseder', 'title'])
+            'nosy', 'priority', 'spam', 'status', 'superseder', 'title'])
         self.assertEqual(self.db.issue.get('1', "fixer"), None)
 
     def testRemoveProperty(self):
@@ -1556,7 +1570,7 @@
         keys.sort()
         self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
             'creator', 'deadline', 'files', 'foo', 'id', 'messages',
-            'nosy', 'priority', 'status', 'superseder'])
+            'nosy', 'priority', 'spam', 'status', 'superseder'])
         self.assertEqual(self.db.issue.list(), ['1'])
 
     def testAddRemoveProperty(self):
@@ -1571,7 +1585,7 @@
         keys.sort()
         self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
             'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages',
-            'nosy', 'priority', 'status', 'superseder'])
+            'nosy', 'priority', 'spam', 'status', 'superseder'])
         self.assertEqual(self.db.issue.list(), ['1'])
 
 class ROTest(MyTestCase):

Roundup Issue Tracker: http://roundup-tracker.org/