Mercurial > p > roundup > code
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 |
