1515# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717#
18- # $Id: db_test_base.py,v 1.27 2004-05-06 01:03:01 richard Exp $
18+ # $Id: db_test_base.py,v 1.27.2.1 2004-05-16 09:33:14 richard Exp $
1919
2020import unittest , os , shutil , errno , imp , sys , time , pprint
2121
2727def setupSchema (db , create , module ):
2828 status = module .Class (db , "status" , name = String ())
2929 status .setkey ("name" )
30+ priority = module .Class (db , "priority" , name = String (), order = String ())
31+ priority .setkey ("name" )
3032 user = module .Class (db , "user" , username = String (), password = Password (),
3133 assignable = Boolean (), age = Number (), roles = String ())
3234 user .setkey ("username" )
3335 file = module .FileClass (db , "file" , name = String (), type = String (),
3436 comment = String (indexme = "yes" ), fooz = Password ())
3537 issue = module .IssueClass (db , "issue" , title = String (indexme = "yes" ),
3638 status = Link ("status" ), nosy = Multilink ("user" ), deadline = Date (),
37- foo = Interval (), files = Multilink ("file" ), assignedto = Link ('user' ))
39+ foo = Interval (), files = Multilink ("file" ), assignedto = Link ('user' ),
40+ priority = Link ('priority' ))
3841 stuff = module .Class (db , "stuff" , stuff = String ())
3942 session = module .Class (db , 'session' , title = String ())
4043 session .disableJournalling ()
@@ -48,6 +51,9 @@ def setupSchema(db, create, module):
4851 status .create (name = "in-progress" )
4952 status .create (name = "testing" )
5053 status .create (name = "resolved" )
54+ priority .create (name = "feature" , order = "2" )
55+ priority .create (name = "wish" , order = "3" )
56+ priority .create (name = "bug" , order = "1" )
5157 db .commit ()
5258
5359class MyTestCase (unittest .TestCase ):
@@ -814,15 +820,15 @@ def filteringSetup(self):
814820 iss = self .db .issue
815821 for issue in (
816822 {'title' : 'issue one' , 'status' : '2' , 'assignedto' : '1' ,
817- 'foo' : date .Interval ('1:10' ),
823+ 'foo' : date .Interval ('1:10' ), 'priority' : '1' ,
818824 'deadline' : date .Date ('2003-01-01.00:00' )},
819- {'title' : 'issue two' , 'status' : '1' , 'assignedto' : '2' ,
820- 'foo' : date .Interval ('1d' ),
825+ {'title' : 'issue two' , 'status' : '1' , 'assignedto' : '2' ,
826+ 'foo' : date .Interval ('1d' ), 'priority' : '3' ,
821827 'deadline' : date .Date ('2003-02-16.22:50' )},
822- {'title' : 'issue three' , 'status' : '1' ,
828+ {'title' : 'issue three' , 'status' : '1' , 'priority' : '2 ' ,
823829 'nosy' : ['1' ,'2' ], 'deadline' : date .Date ('2003-02-18' )},
824830 {'title' : 'non four' , 'status' : '3' ,
825- 'foo' : date .Interval ('0:10' ),
831+ 'foo' : date .Interval ('0:10' ), 'priority' : '1' ,
826832 'nosy' : ['1' ], 'deadline' : date .Date ('2004-03-08' )}):
827833 self .db .issue .create (** issue )
828834 self .db .commit ()
@@ -887,17 +893,53 @@ def testFilteringRange(self):
887893 ae (filt (None , {'foo' : 'to 0:05' }), [])
888894
889895 def testFilteringIntervalSort (self ):
896+ # 1: '1:10'
897+ # 2: '1d'
898+ # 3: None
899+ # 4: '0:10'
890900 ae , filt = self .filteringSetup ()
891901 # ascending should sort None, 1:10, 1d
892902 ae (filt (None , {}, ('+' ,'foo' ), (None ,None )), ['3' , '4' , '1' , '2' ])
893903 # descending should sort 1d, 1:10, None
894904 ae (filt (None , {}, ('-' ,'foo' ), (None ,None )), ['2' , '1' , '4' , '3' ])
895905
896906 def testFilteringMultilinkSort (self ):
907+ # 1: []
908+ # 2: []
909+ # 3: ['1','2']
910+ # 4: ['1']
897911 ae , filt = self .filteringSetup ()
898912 ae (filt (None , {}, ('+' ,'nosy' ), (None ,None )), ['1' , '2' , '4' , '3' ])
899913 ae (filt (None , {}, ('-' ,'nosy' ), (None ,None )), ['3' , '4' , '1' , '2' ])
900914
915+ def testFilteringDateSort (self ):
916+ # '1': '2003-01-01.00:00'
917+ # '2': '2003-02-16.22:50'
918+ # '3': '2003-02-18'
919+ # '4': '2004-03-08'
920+ ae , filt = self .filteringSetup ()
921+ # ascending
922+ ae (filt (None , {}, ('+' ,'deadline' ), (None ,None )), ['1' , '2' , '3' , '4' ])
923+ # descending
924+ ae (filt (None , {}, ('-' ,'deadline' ), (None ,None )), ['4' , '3' , '2' , '1' ])
925+
926+ def testFilteringDateSortPriorityGroup (self ):
927+ # '1': '2003-01-01.00:00' 1 => 2
928+ # '2': '2003-02-16.22:50' 3 => 1
929+ # '3': '2003-02-18' 2 => 3
930+ # '4': '2004-03-08' 1 => 2
931+ ae , filt = self .filteringSetup ()
932+ # ascending
933+ ae (filt (None , {}, ('+' ,'deadline' ), ('+' ,'priority' )),
934+ ['2' , '1' , '4' , '3' ])
935+ ae (filt (None , {}, ('-' ,'deadline' ), ('+' ,'priority' )),
936+ ['2' , '4' , '1' , '3' ])
937+ # descending
938+ ae (filt (None , {}, ('+' ,'deadline' ), ('-' ,'priority' )),
939+ ['3' , '1' , '4' , '2' ])
940+ ae (filt (None , {}, ('-' ,'deadline' ), ('-' ,'priority' )),
941+ ['3' , '4' , '1' , '2' ])
942+
901943# XXX add sorting tests for other types
902944# XXX test auditors and reactors
903945
@@ -993,7 +1035,7 @@ def testAddProperty(self):
9931035 keys .sort ()
9941036 self .assertEqual (keys , ['activity' , 'actor' , 'assignedto' , 'creation' ,
9951037 'creator' , 'deadline' , 'files' , 'fixer' , 'foo' , 'id' , 'messages' ,
996- 'nosy' , 'status' , 'superseder' , 'title' ])
1038+ 'nosy' , 'priority' , ' status' , 'superseder' , 'title' ])
9971039 self .assertEqual (self .db .issue .get ('1' , "fixer" ), None )
9981040
9991041 def testRemoveProperty (self ):
@@ -1007,7 +1049,7 @@ def testRemoveProperty(self):
10071049 keys .sort ()
10081050 self .assertEqual (keys , ['activity' , 'actor' , 'assignedto' , 'creation' ,
10091051 'creator' , 'deadline' , 'files' , 'foo' , 'id' , 'messages' ,
1010- 'nosy' , 'status' , 'superseder' ])
1052+ 'nosy' , 'priority' , ' status' , 'superseder' ])
10111053 self .assertEqual (self .db .issue .list (), ['1' ])
10121054
10131055 def testAddRemoveProperty (self ):
@@ -1022,7 +1064,7 @@ def testAddRemoveProperty(self):
10221064 keys .sort ()
10231065 self .assertEqual (keys , ['activity' , 'actor' , 'assignedto' , 'creation' ,
10241066 'creator' , 'deadline' , 'files' , 'fixer' , 'foo' , 'id' , 'messages' ,
1025- 'nosy' , 'status' , 'superseder' ])
1067+ 'nosy' , 'priority' , ' status' , 'superseder' ])
10261068 self .assertEqual (self .db .issue .list (), ['1' ])
10271069
10281070class ROTest (MyTestCase ):
0 commit comments