comparison 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
comparison
equal deleted inserted replaced
3750:4efa50393b2d 3751:44603dd791b7
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" 14 # FOR A PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, 15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17 # 17 #
18 # $Id: db_test_base.py,v 1.80 2006-11-09 05:44:51 richard Exp $ 18 # $Id: db_test_base.py,v 1.81 2006-11-11 03:01:54 richard Exp $
19 19
20 import unittest, os, shutil, errno, imp, sys, time, pprint, sets 20 import unittest, os, shutil, errno, imp, sys, time, pprint, sets
21 21
22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \ 22 from roundup.hyperdb import String, Password, Link, Multilink, Date, \
23 Interval, DatabaseError, Boolean, Number, Node 23 Interval, DatabaseError, Boolean, Number, Node
76 comment=String(indexme="yes"), fooz=Password()) 76 comment=String(indexme="yes"), fooz=Password())
77 file_nidx = module.FileClass(db, "file_nidx", content=String(indexme='no')) 77 file_nidx = module.FileClass(db, "file_nidx", content=String(indexme='no'))
78 issue = module.IssueClass(db, "issue", title=String(indexme="yes"), 78 issue = module.IssueClass(db, "issue", title=String(indexme="yes"),
79 status=Link("status"), nosy=Multilink("user"), deadline=Date(), 79 status=Link("status"), nosy=Multilink("user"), deadline=Date(),
80 foo=Interval(), files=Multilink("file"), assignedto=Link('user'), 80 foo=Interval(), files=Multilink("file"), assignedto=Link('user'),
81 priority=Link('priority')) 81 priority=Link('priority'), spam=Multilink('msg'))
82 stuff = module.Class(db, "stuff", stuff=String()) 82 stuff = module.Class(db, "stuff", stuff=String())
83 session = module.Class(db, 'session', title=String()) 83 session = module.Class(db, 'session', title=String())
84 msg = module.FileClass(db, "msg", date=Date(), 84 msg = module.FileClass(db, "msg", date=Date(),
85 author=Link("user", do_journal='no')) 85 author=Link("user", do_journal='no'))
86 session.disableJournalling() 86 session.disableJournalling()
769 self.assertEquals(self.db.indexer.search(['frooz', 'flebble'], 769 self.assertEquals(self.db.indexer.search(['frooz', 'flebble'],
770 self.db.issue), {i2: {}}) 770 self.db.issue), {i2: {}})
771 771
772 # unindexed stopword 772 # unindexed stopword
773 self.assertEquals(self.db.indexer.search(['the'], self.db.issue), {}) 773 self.assertEquals(self.db.indexer.search(['the'], self.db.issue), {})
774
775 def testIndexerSearchMulti(self):
776 m1 = self.db.msg.create(content="one two")
777 m2 = self.db.msg.create(content="two three")
778 i1 = self.db.issue.create(messages=[m1])
779 i2 = self.db.issue.create(spam=[m2])
780 self.db.commit()
781 self.assertEquals(self.db.indexer.search([], self.db.issue), {})
782 self.assertEquals(self.db.indexer.search(['one'], self.db.issue),
783 {i1: {'messages': [m1]}})
784 self.assertEquals(self.db.indexer.search(['two'], self.db.issue),
785 {i1: {'messages': [m1]}, i2: {'spam': [m2]}})
786 self.assertEquals(self.db.indexer.search(['three'], self.db.issue),
787 {i2: {'spam': [m2]}})
774 788
775 def testReindexingChange(self): 789 def testReindexingChange(self):
776 search = self.db.indexer.search 790 search = self.db.indexer.search
777 issue = self.db.issue 791 issue = self.db.issue
778 i1 = issue.create(title="flebble plop") 792 i1 = issue.create(title="flebble plop")
1540 props = self.db.issue.getprops() 1554 props = self.db.issue.getprops()
1541 keys = props.keys() 1555 keys = props.keys()
1542 keys.sort() 1556 keys.sort()
1543 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', 1557 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
1544 'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages', 1558 'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages',
1545 'nosy', 'priority', 'status', 'superseder', 'title']) 1559 'nosy', 'priority', 'spam', 'status', 'superseder', 'title'])
1546 self.assertEqual(self.db.issue.get('1', "fixer"), None) 1560 self.assertEqual(self.db.issue.get('1', "fixer"), None)
1547 1561
1548 def testRemoveProperty(self): 1562 def testRemoveProperty(self):
1549 self.db.issue.create(title="spam", status='1') 1563 self.db.issue.create(title="spam", status='1')
1550 self.db.commit() 1564 self.db.commit()
1554 props = self.db.issue.getprops() 1568 props = self.db.issue.getprops()
1555 keys = props.keys() 1569 keys = props.keys()
1556 keys.sort() 1570 keys.sort()
1557 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', 1571 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
1558 'creator', 'deadline', 'files', 'foo', 'id', 'messages', 1572 'creator', 'deadline', 'files', 'foo', 'id', 'messages',
1559 'nosy', 'priority', 'status', 'superseder']) 1573 'nosy', 'priority', 'spam', 'status', 'superseder'])
1560 self.assertEqual(self.db.issue.list(), ['1']) 1574 self.assertEqual(self.db.issue.list(), ['1'])
1561 1575
1562 def testAddRemoveProperty(self): 1576 def testAddRemoveProperty(self):
1563 self.db.issue.create(title="spam", status='1') 1577 self.db.issue.create(title="spam", status='1')
1564 self.db.commit() 1578 self.db.commit()
1569 props = self.db.issue.getprops() 1583 props = self.db.issue.getprops()
1570 keys = props.keys() 1584 keys = props.keys()
1571 keys.sort() 1585 keys.sort()
1572 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', 1586 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
1573 'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages', 1587 'creator', 'deadline', 'files', 'fixer', 'foo', 'id', 'messages',
1574 'nosy', 'priority', 'status', 'superseder']) 1588 'nosy', 'priority', 'spam', 'status', 'superseder'])
1575 self.assertEqual(self.db.issue.list(), ['1']) 1589 self.assertEqual(self.db.issue.list(), ['1'])
1576 1590
1577 class ROTest(MyTestCase): 1591 class ROTest(MyTestCase):
1578 def setUp(self): 1592 def setUp(self):
1579 # remove previous test, ignore errors 1593 # remove previous test, ignore errors

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