mongodoc 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/README.textile +143 -0
  2. data/Rakefile +35 -3
  3. data/VERSION +1 -1
  4. data/examples/simple_document.rb +35 -0
  5. data/examples/simple_object.rb +32 -0
  6. data/features/finders.feature +72 -0
  7. data/features/mongodoc_base.feature +12 -2
  8. data/features/named_scopes.feature +66 -0
  9. data/features/new_record.feature +36 -0
  10. data/features/partial_updates.feature +105 -0
  11. data/features/step_definitions/criteria_steps.rb +4 -41
  12. data/features/step_definitions/document_steps.rb +56 -5
  13. data/features/step_definitions/documents.rb +14 -3
  14. data/features/step_definitions/finder_steps.rb +15 -0
  15. data/features/step_definitions/named_scope_steps.rb +18 -0
  16. data/features/step_definitions/partial_update_steps.rb +32 -0
  17. data/features/step_definitions/query_steps.rb +51 -0
  18. data/features/using_criteria.feature +5 -1
  19. data/lib/mongodoc/attributes.rb +76 -63
  20. data/lib/mongodoc/collection.rb +9 -9
  21. data/lib/mongodoc/criteria.rb +152 -161
  22. data/lib/mongodoc/cursor.rb +7 -5
  23. data/lib/mongodoc/document.rb +95 -31
  24. data/lib/mongodoc/finders.rb +29 -0
  25. data/lib/mongodoc/named_scope.rb +68 -0
  26. data/lib/mongodoc/parent_proxy.rb +15 -6
  27. data/lib/mongodoc/proxy.rb +22 -13
  28. data/lib/mongodoc.rb +3 -3
  29. data/mongodoc.gemspec +42 -14
  30. data/perf/mongodoc_runner.rb +90 -0
  31. data/perf/ruby_driver_runner.rb +64 -0
  32. data/spec/attributes_spec.rb +46 -12
  33. data/spec/collection_spec.rb +23 -23
  34. data/spec/criteria_spec.rb +124 -187
  35. data/spec/cursor_spec.rb +21 -17
  36. data/spec/document_ext.rb +2 -2
  37. data/spec/document_spec.rb +187 -218
  38. data/spec/embedded_save_spec.rb +104 -0
  39. data/spec/finders_spec.rb +81 -0
  40. data/spec/hash_matchers.rb +27 -0
  41. data/spec/named_scope_spec.rb +82 -0
  42. data/spec/new_record_spec.rb +216 -0
  43. data/spec/parent_proxy_spec.rb +8 -6
  44. data/spec/proxy_spec.rb +80 -0
  45. data/spec/spec_helper.rb +2 -0
  46. metadata +35 -7
  47. data/README.rdoc +0 -75
@@ -8,30 +8,30 @@ describe "MongoDoc::Collection" do
8
8
  MongoDoc.should_receive(:database).and_return(db)
9
9
  MongoDoc::Collection.mongo_collection(name)
10
10
  end
11
-
11
+
12
12
  it ".new generates a Mongo::Collection by calling .mongo_collection" do
13
13
  name = 'collection_name'
14
14
  MongoDoc::Collection.should_receive(:mongo_collection).with(name)
15
15
  MongoDoc::Collection.new(name)
16
16
  end
17
-
17
+
18
18
  context "with the underlying Mongo::Collection" do
19
19
  before do
20
20
  @mongo_collection = stub('collection')
21
21
  MongoDoc::Collection.stub(:mongo_collection).and_return(@mongo_collection)
22
22
  end
23
-
23
+
24
24
  it "#_collection is the underlying Mongo::Collection" do
25
25
  MongoDoc::Collection.new('collection_name')._collection.should == @mongo_collection
26
26
  end
27
-
27
+
28
28
  %w([] clear count create_index db drop drop_index drop_indexes group hint index_information name options remove rename size).each do |delegated_method|
29
29
  it "delegates #{delegated_method} to the Mongo::Collection" do
30
30
  @mongo_collection.should_receive(delegated_method)
31
31
  MongoDoc::Collection.new('collection_name').send(delegated_method)
32
32
  end
33
33
  end
34
-
34
+
35
35
  context "#find" do
36
36
  before do
37
37
  @query = { 'sample' => 'data' }
@@ -42,7 +42,7 @@ describe "MongoDoc::Collection" do
42
42
  @mongo_collection.stub(:find).and_return(@cursor)
43
43
  MongoDoc::Cursor.stub(:new).and_return(@cursor)
44
44
  end
45
-
45
+
46
46
  it "delegates to the Mongo::Collection" do
47
47
  @mongo_collection.should_receive(:find).with(@query, @options, &@block).and_return(@cursor)
48
48
  @collection.find(@query, @options, &@block)
@@ -52,13 +52,13 @@ describe "MongoDoc::Collection" do
52
52
  MongoDoc::Cursor.should_receive(:new).with(@cursor).and_return(@cursor)
53
53
  @collection.find(@query, @options, &@block)
54
54
  end
55
-
55
+
56
56
  it "calls the block with a wrapped cursor" do
57
57
  @collection.find(@query, @options) {|cursor| @result = cursor}
58
58
  @result.should == @cursor
59
59
  end
60
60
  end
61
-
61
+
62
62
  context "#find_one" do
63
63
  before do
64
64
  @spec_or_object_id = { 'sample' => 'data' }
@@ -67,7 +67,7 @@ describe "MongoDoc::Collection" do
67
67
  @bson = stub('bson')
68
68
  @mongo_collection.stub(:find_one).and_return(@bson)
69
69
  end
70
-
70
+
71
71
  it "delegates to the Mongo::Collection" do
72
72
  @mongo_collection.should_receive(:find_one).with(@spec_or_object_id, @options)
73
73
  @collection.find_one(@spec_or_object_id, @options)
@@ -83,7 +83,7 @@ describe "MongoDoc::Collection" do
83
83
  MongoDoc::BSON.stub(:decode).and_return(obj)
84
84
  @collection.find_one(@spec_or_object_id, @options).should == obj
85
85
  end
86
-
86
+
87
87
  it "returns nil if the delegate returns nil" do
88
88
  @mongo_collection.stub(:find_one)
89
89
  @collection.find_one(@spec_or_object_id, @options).should be_nil
@@ -95,12 +95,12 @@ describe "MongoDoc::Collection" do
95
95
  @doc = { 'sample' => 'data' }
96
96
  @options = {:safe => false}
97
97
  end
98
-
98
+
99
99
  it "delegates to the Mongo::Collection" do
100
100
  @mongo_collection.should_receive(:insert).with(@doc, @options)
101
101
  MongoDoc::Collection.new('collection_name').insert(@doc, @options)
102
102
  end
103
-
103
+
104
104
  it "converts the doc_or_docs to bson" do
105
105
  @doc.should_receive(:to_bson)
106
106
  @mongo_collection.stub(:insert)
@@ -119,7 +119,7 @@ describe "MongoDoc::Collection" do
119
119
  @doc = { 'sample' => 'data' }
120
120
  @options = {:safe => false}
121
121
  end
122
-
122
+
123
123
  it "delegates to the Mongo::Collection" do
124
124
  @mongo_collection.should_receive(:save).with(@doc, @options)
125
125
  MongoDoc::Collection.new('collection_name').save(@doc, @options)
@@ -130,7 +130,7 @@ describe "MongoDoc::Collection" do
130
130
  @mongo_collection.stub(:save)
131
131
  MongoDoc::Collection.new('collection_name').save(@doc, @options)
132
132
  end
133
-
133
+
134
134
  it "returns the delegates result" do
135
135
  result = 'result'
136
136
  @mongo_collection.stub(:save).and_return(result)
@@ -143,38 +143,38 @@ describe "MongoDoc::Collection" do
143
143
  @spec = { 'sample' => 'old' }
144
144
  @doc = { 'sample' => 'data' }
145
145
  @options = {:safe => false}
146
- @database = stub('database', :db_command => nil)
146
+ @database = stub('database', :command => nil)
147
147
  MongoDoc.stub(:database).and_return(@database)
148
148
  end
149
-
149
+
150
150
  it "delegates to the Mongo::Collection" do
151
151
  @mongo_collection.should_receive(:update).with(@spec, @doc, @options)
152
152
  MongoDoc::Collection.new('collection_name').update(@spec, @doc, @options)
153
153
  end
154
-
154
+
155
155
  it "converts the doc to bson" do
156
156
  @doc.should_receive(:to_bson)
157
157
  @mongo_collection.stub(:update)
158
158
  MongoDoc::Collection.new('collection_name').update(@spec, @doc, @options)
159
159
  end
160
-
160
+
161
161
  it "gets the last error from the database" do
162
162
  @mongo_collection.stub(:update)
163
- @database.should_receive(:db_command).with({'getlasterror' => 1})
163
+ @database.should_receive(:command).with({'getlasterror' => 1})
164
164
  MongoDoc::Collection.new('collection_name').update(@spec, @doc, @options)
165
165
  end
166
-
166
+
167
167
  it "returns the updateExisting value of get last error" do
168
168
  result = 'check'
169
169
  @mongo_collection.stub(:update)
170
- @database.stub(:db_command).and_return({'updatedExisting' => result})
170
+ @database.stub(:command).and_return({'updatedExisting' => result})
171
171
  MongoDoc::Collection.new('collection_name').update(@spec, @doc, @options).should == result
172
172
  end
173
-
173
+
174
174
  it "returns false otherwise" do
175
175
  @mongo_collection.stub(:update)
176
176
  MongoDoc::Collection.new('collection_name').update(@spec, @doc, @options).should be_false
177
177
  end
178
178
  end
179
179
  end
180
- end
180
+ end