-
Notifications
You must be signed in to change notification settings - Fork 45
/
test_collection.rb
90 lines (75 loc) · 2.69 KB
/
test_collection.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
require 'helper'
class CollectionTest < Test::Unit::TestCase
context "Plucky::Collection" do
include Plucky
setup do
@chris = oh(['_id', 'chris'], ['age', 26], ['name', 'Chris'])
@john = oh(['_id', 'john'], ['age', 28], ['name', 'John'])
@steve = oh(['_id', 'steve'], ['age', 29], ['name', 'Steve'])
@collection = Collection.new(DB['users'])
@collection.insert(:_id => 'john', :name => 'John', :age => 28)
@collection.insert(:_id => 'steve', :name => 'Steve', :age => 29)
@collection.insert(:_id => 'chris', :name => 'Chris', :age => 26)
end
context "#all" do
should "work with no arguments" do
docs = @collection.all
docs.size.should == 3
docs.should include(@john)
docs.should include(@steve)
docs.should include(@chris)
end
should "work with and normalize criteria" do
docs = @collection.all(:id.in => ['steve'])
docs.should == [@steve]
end
should "work with and normalize options" do
docs = @collection.all(:order => :name.asc)
docs.should == [@chris, @john, @steve]
end
end
context "#first" do
should "work with and normalize criteria" do
@collection.first(:age.lt => 29).should == @john
end
should "work with and normalize options" do
@collection.first(:age.lte => 29, :order => :name.desc).should == @steve
end
end
context "#last" do
should "work with and normalize criteria" do
@collection.last(:age.lte => 29, :order => :name.asc).should == @steve
end
should "work with and normalize options" do
@collection.last(:age.lte => 26, :order => :name.desc).should == @chris
end
end
context "#count" do
should "work with no arguments" do
@collection.count.should == 3
end
should "work with and normalize criteria" do
@collection.count(:age.lte => 28).should == 2
end
end
context "#delete" do
should "work with no arguments" do
lambda { @collection.delete }.should change { @collection.count }.by(3)
end
should "work with and normalize criteria" do
lambda { @collection.delete(:age.lte => 28) }.should change { @collection.count }
end
end
context "#sort" do
should "change the sort order of the documents" do
@collection.sort(:age).all.should == [@chris, @john, @steve]
@collection.sort(:age.desc).all.should == [@steve, @john, @chris]
end
end
context "#filter" do
should "work" do
@collection.filter(:age.lt => 29).filter(:name => 'Chris').all.should == [@chris]
end
end
end
end