@@ -689,6 +689,7 @@ def test_list_view_params(self):
689
689
self .assertEqual (self .db .list ('foo/list' , 'foo/by_name' , startkey = 'o' , endkey = 'p' )[1 ].read (), '1\r \n ' )
690
690
self .assertEqual (self .db .list ('foo/list' , 'foo/by_name' , descending = True )[1 ].read (), '2\r \n 1\r \n ' )
691
691
692
+
692
693
class UpdateHandlerTestCase (testutil .TempDatabaseMixin , unittest .TestCase ):
693
694
update_func = """
694
695
function(doc, req) {
@@ -726,13 +727,51 @@ def test_new_doc(self):
726
727
def test_update_doc (self ):
727
728
self .assertEqual (self .db .update_doc ('foo/bar' , 'existed' )[1 ].read (), 'hello doc' )
728
729
730
+
731
+ class ViewIterationTestCase (testutil .TempDatabaseMixin , unittest .TestCase ):
732
+
733
+ num_docs = 10
734
+
735
+ def docfromnum (self , num ):
736
+ return {'_id' : unicode (num ), 'num' : int (num / 2 )}
737
+
738
+ def docfromrow (self , row ):
739
+ return {'_id' : row ['id' ], 'num' : row ['key' ]}
740
+
741
+ def setUp (self ):
742
+ super (ViewIterationTestCase , self ).setUp ()
743
+ design_doc = {'_id' : '_design/test' ,
744
+ 'views' : {'nums' : {'map' : 'function(doc) {emit(doc.num, null);}' }}}
745
+ self .db .save (design_doc )
746
+ self .db .update ([self .docfromnum (num ) for num in xrange (self .num_docs )])
747
+
748
+ def test_allrows (self ):
749
+ rows = list (self .db .iterview ('test/nums' , 10 ))
750
+ self .assertEqual (len (rows ), self .num_docs )
751
+ self .assertEqual ([self .docfromrow (row ) for row in rows ],
752
+ [self .docfromnum (num ) for num in xrange (self .num_docs )])
753
+
754
+ def test_batchsizes (self ):
755
+ # Check silly _batch values.
756
+ self .assertRaises (ValueError , self .db .iterview ('test/nums' , 0 ).next )
757
+ self .assertRaises (ValueError , self .db .iterview ('test/nums' , - 1 ).next )
758
+ # Test various _batch sizes that are likely to cause trouble.
759
+ self .assertEqual (len (list (self .db .iterview ('test/nums' , 1 ))), self .num_docs )
760
+ self .assertEqual (len (list (self .db .iterview ('test/nums' , int (self .num_docs / 2 )))), self .num_docs )
761
+ self .assertEqual (len (list (self .db .iterview ('test/nums' , self .num_docs * 2 ))), self .num_docs )
762
+ self .assertEqual (len (list (self .db .iterview ('test/nums' , self .num_docs - 1 ))), self .num_docs )
763
+ self .assertEqual (len (list (self .db .iterview ('test/nums' , self .num_docs ))), self .num_docs )
764
+ self .assertEqual (len (list (self .db .iterview ('test/nums' , self .num_docs + 1 ))), self .num_docs )
765
+
766
+
729
767
def suite ():
730
768
suite = unittest .TestSuite ()
731
769
suite .addTest (unittest .makeSuite (ServerTestCase , 'test' ))
732
770
suite .addTest (unittest .makeSuite (DatabaseTestCase , 'test' ))
733
771
suite .addTest (unittest .makeSuite (ViewTestCase , 'test' ))
734
772
suite .addTest (unittest .makeSuite (ShowListTestCase , 'test' ))
735
773
suite .addTest (unittest .makeSuite (UpdateHandlerTestCase , 'test' ))
774
+ suite .addTest (unittest .makeSuite (ViewIterationTestCase , 'test' ))
736
775
suite .addTest (doctest .DocTestSuite (client ))
737
776
return suite
738
777
0 commit comments