~free.ekanayaka/storm/any-expr

« back to all changes in this revision

Viewing changes to tests/store/base.py

  • Committer: James Henstridge
  • Date: 2009-07-31 01:53:08 UTC
  • mfrom: (304.4.8 storm.bug-217644)
  • Revision ID: james@jamesh.id.au-20090731015308-55d861pjclidk2ie
Fix aggregates over results using distinct, limit, offset or set expressions.

This fixes the issues in the previous implementation that was reverted 
after the 0.14 release, and extends the fix to other aggregates besides 
COUNT().
[r=jkakar, stub] [f=217644]

Show diffs side-by-side

added added

removed removed

Lines of Context:
841
841
        count = self.store.find(Link).count(Link.foo_id, distinct=True)
842
842
        self.assertEquals(count, 3)
843
843
 
 
844
    def test_find_limit_count(self):
 
845
        result = self.store.find(Link.foo_id)
 
846
        result.config(limit=2)
 
847
        count = result.count()
 
848
        self.assertEquals(count, 2)
 
849
 
 
850
    def test_find_offset_count(self):
 
851
        result = self.store.find(Link.foo_id)
 
852
        result.config(offset=3)
 
853
        count = result.count()
 
854
        self.assertEquals(count, 3)
 
855
 
 
856
    def test_find_sliced_count(self):
 
857
        result = self.store.find(Link.foo_id)
 
858
        count = result[2:4].count()
 
859
        self.assertEquals(count, 2)
 
860
 
 
861
    def test_find_distinct_count(self):
 
862
        result = self.store.find(Link.foo_id)
 
863
        result.config(distinct=True)
 
864
        count = result.count()
 
865
        self.assertEquals(count, 3)
 
866
 
 
867
    def test_find_distinct_order_by_limit_count(self):
 
868
        result = self.store.find(Foo)
 
869
        result.order_by(Foo.title)
 
870
        result.config(distinct=True, limit=3)
 
871
        count = result.count()
 
872
        self.assertEquals(count, 3)
 
873
 
 
874
    def test_find_distinct_count_multiple_columns(self):
 
875
        result = self.store.find((Link.foo_id, Link.bar_id))
 
876
        result.config(distinct=True)
 
877
        count = result.count()
 
878
        self.assertEquals(count, 6)
 
879
 
 
880
    def test_find_count_column_with_implicit_distinct(self):
 
881
        result = self.store.find(Link)
 
882
        result.config(distinct=True)
 
883
        count = result.count(Link.foo_id)
 
884
        self.assertEquals(count, 6)
 
885
 
844
886
    def test_find_max(self):
845
887
        self.assertEquals(self.store.find(Foo).max(Foo.id), 30)
846
888