mongo_doc 0.6.26 → 0.6.27
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +14 -203
- data/Rakefile +0 -134
- data/lib/mongo_doc/collection.rb +4 -0
- data/lib/mongo_doc/finders.rb +1 -0
- data/lib/mongo_doc/timestamps.rb +4 -3
- data/lib/mongo_doc/version.rb +3 -0
- data/lib/mongo_doc.rb +0 -5
- metadata +25 -212
- data/.document +0 -5
- data/.gitignore +0 -8
- data/.rspec +0 -2
- data/.rvmrc +0 -1
- data/.watchr +0 -32
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -72
- data/HISTORY.md +0 -11
- data/VERSION +0 -1
- data/examples/simple_document.rb +0 -46
- data/examples/simple_object.rb +0 -34
- data/features/collections.feature +0 -9
- data/features/connection.feature +0 -13
- data/features/db_references.feature +0 -21
- data/features/embed_hash.feature +0 -16
- data/features/finders.feature +0 -76
- data/features/indexes.feature +0 -28
- data/features/mongodb.yml +0 -7
- data/features/mongodoc_base.feature +0 -128
- data/features/new_record.feature +0 -36
- data/features/partial_updates.feature +0 -95
- data/features/polymorphic_collections.feature +0 -16
- data/features/references.feature +0 -28
- data/features/removing_documents.feature +0 -68
- data/features/saving_an_object.feature +0 -15
- data/features/scopes.feature +0 -66
- data/features/step_definitions/collection_steps.rb +0 -17
- data/features/step_definitions/connection_steps.rb +0 -13
- data/features/step_definitions/document_steps.rb +0 -155
- data/features/step_definitions/documents.rb +0 -61
- data/features/step_definitions/embed_hash_steps.rb +0 -6
- data/features/step_definitions/field_steps.rb +0 -28
- data/features/step_definitions/finder_steps.rb +0 -15
- data/features/step_definitions/index_steps.rb +0 -10
- data/features/step_definitions/json_steps.rb +0 -9
- data/features/step_definitions/object_steps.rb +0 -50
- data/features/step_definitions/objects.rb +0 -24
- data/features/step_definitions/partial_update_steps.rb +0 -31
- data/features/step_definitions/query_steps.rb +0 -69
- data/features/step_definitions/removing_documents_steps.rb +0 -14
- data/features/step_definitions/scope_steps.rb +0 -18
- data/features/step_definitions/string_casting_steps.rb +0 -29
- data/features/step_definitions/util_steps.rb +0 -7
- data/features/string_casting.feature +0 -10
- data/features/support/support.rb +0 -12
- data/features/timestamps.feature +0 -14
- data/features/using_criteria.feature +0 -148
- data/mongo_doc.gemspec +0 -272
- data/mongodb.example.yml +0 -14
- data/perf/mongo_doc_object.rb +0 -83
- data/perf/mongo_document.rb +0 -84
- data/perf/ruby_driver.rb +0 -49
- data/script/console +0 -8
- data/spec/active_model_behavior.rb +0 -64
- data/spec/array_including_argument_matcher.rb +0 -62
- data/spec/associations/collection_proxy_spec.rb +0 -233
- data/spec/associations/document_proxy_spec.rb +0 -45
- data/spec/associations/hash_proxy_spec.rb +0 -181
- data/spec/associations/proxy_base_spec.rb +0 -92
- data/spec/associations_spec.rb +0 -218
- data/spec/attributes_accessor_spec.rb +0 -39
- data/spec/attributes_spec.rb +0 -184
- data/spec/bson_matchers.rb +0 -54
- data/spec/bson_spec.rb +0 -196
- data/spec/collection_spec.rb +0 -169
- data/spec/connection_spec.rb +0 -169
- data/spec/contexts/ids_spec.rb +0 -49
- data/spec/contexts/mongo_spec.rb +0 -241
- data/spec/contexts_spec.rb +0 -56
- data/spec/criteria/optional_spec.rb +0 -26
- data/spec/criteria_spec.rb +0 -73
- data/spec/cursor_spec.rb +0 -91
- data/spec/database_cleaner_spec.rb +0 -24
- data/spec/document_ext.rb +0 -9
- data/spec/document_spec.rb +0 -569
- data/spec/embedded_save_spec.rb +0 -73
- data/spec/ext_spec.rb +0 -100
- data/spec/finders_spec.rb +0 -61
- data/spec/hash_matchers.rb +0 -29
- data/spec/index_spec.rb +0 -79
- data/spec/matchers_spec.rb +0 -342
- data/spec/mongodb.yml +0 -6
- data/spec/mongodb_pairs.yml +0 -8
- data/spec/new_record_spec.rb +0 -128
- data/spec/polymorphic_collection_spec.rb +0 -47
- data/spec/references_many_spec.rb +0 -214
- data/spec/references_spec.rb +0 -121
- data/spec/root_spec.rb +0 -41
- data/spec/scope_spec.rb +0 -88
- data/spec/spec_helper.rb +0 -16
- data/spec/timestamps_spec.rb +0 -154
- data/spec/update_spec.rb +0 -167
- data/spec/validations_spec.rb +0 -30
data/spec/timestamps_spec.rb
DELETED
@@ -1,154 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe MongoDoc::Timestamps do
|
4
|
-
class TimestampsTest
|
5
|
-
include MongoDoc::Document
|
6
|
-
|
7
|
-
attr_accessor :name
|
8
|
-
|
9
|
-
timestamps!
|
10
|
-
end
|
11
|
-
|
12
|
-
let(:collection) { stub(:save => ::BSON::ObjectID.new, :update => true) }
|
13
|
-
let(:document) { TimestampsTest.new }
|
14
|
-
|
15
|
-
before do
|
16
|
-
TimestampsTest.stub(:collection).and_return(collection)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "has a created_at attribute" do
|
20
|
-
document.should respond_to(:created_at)
|
21
|
-
document.should respond_to(:created_at=)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "has an updated_at attribute" do
|
25
|
-
document.should respond_to(:updated_at)
|
26
|
-
document.should respond_to(:updated_at=)
|
27
|
-
end
|
28
|
-
|
29
|
-
context "on initial save" do
|
30
|
-
context "that suceeeds" do
|
31
|
-
it "sets the created_at timestamp" do
|
32
|
-
document.save
|
33
|
-
document.created_at.should_not be_nil
|
34
|
-
end
|
35
|
-
|
36
|
-
it "sets the updated_at timestamp" do
|
37
|
-
document.save
|
38
|
-
document.updated_at.should_not be_nil
|
39
|
-
end
|
40
|
-
|
41
|
-
it "the created_at and updated_at timestamps are the same" do
|
42
|
-
document.save
|
43
|
-
document.created_at.should == document.updated_at
|
44
|
-
end
|
45
|
-
|
46
|
-
it "sets the timezone to UTC" do
|
47
|
-
document.save
|
48
|
-
document.created_at.zone.should == "UTC"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "that fails" do
|
53
|
-
before do
|
54
|
-
collection.stub(:save).and_raise(Mongo::MongoDBError.new)
|
55
|
-
end
|
56
|
-
|
57
|
-
it "does not set the created_at timestamp" do
|
58
|
-
document.save rescue nil
|
59
|
-
document.created_at.should be_nil
|
60
|
-
end
|
61
|
-
|
62
|
-
it "does not set the updated_at timestamp" do
|
63
|
-
document.save rescue nil
|
64
|
-
document.updated_at.should be_nil
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
context "on subsequent save" do
|
70
|
-
before do
|
71
|
-
document.save
|
72
|
-
end
|
73
|
-
|
74
|
-
context "that suceeeds" do
|
75
|
-
let!(:original_created_at) { document.created_at }
|
76
|
-
|
77
|
-
it "leaves the created_at timestamp unchanged" do
|
78
|
-
document.save
|
79
|
-
document.created_at.should == original_created_at
|
80
|
-
end
|
81
|
-
|
82
|
-
it "sets the updated_at timestamp" do
|
83
|
-
document.save
|
84
|
-
document.updated_at.should_not == original_created_at
|
85
|
-
end
|
86
|
-
|
87
|
-
it "the created_at and updated_at timestamps are not the same" do
|
88
|
-
document.save
|
89
|
-
document.created_at.should_not == document.updated_at
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
context "that fails" do
|
94
|
-
let!(:original_created_at) { document.created_at }
|
95
|
-
|
96
|
-
before do
|
97
|
-
collection.stub(:save).and_raise(Mongo::MongoDBError.new)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "leaves the created_at timestamp unchanged" do
|
101
|
-
document.save rescue nil
|
102
|
-
document.created_at.should == original_created_at
|
103
|
-
end
|
104
|
-
|
105
|
-
it "leaves the updated_at timestamp unchanged" do
|
106
|
-
document.save rescue nil
|
107
|
-
document.updated_at.should == original_created_at
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
context "on update attributes" do
|
113
|
-
before do
|
114
|
-
document.save
|
115
|
-
end
|
116
|
-
|
117
|
-
context "that suceeeds" do
|
118
|
-
let!(:original_created_at) { document.created_at }
|
119
|
-
|
120
|
-
it "leaves the created_at timestamp unchanged" do
|
121
|
-
document.update_attributes(:name => 'name')
|
122
|
-
document.created_at.should == original_created_at
|
123
|
-
end
|
124
|
-
|
125
|
-
it "sets the updated_at timestamp" do
|
126
|
-
document.update_attributes(:name => 'name')
|
127
|
-
document.updated_at.should_not == original_created_at
|
128
|
-
end
|
129
|
-
|
130
|
-
it "the created_at and updated_at timestamps are not the same" do
|
131
|
-
document.update_attributes(:name => 'name')
|
132
|
-
document.created_at.should_not == document.updated_at
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
|
-
context "that fails" do
|
137
|
-
let!(:original_created_at) { document.created_at }
|
138
|
-
|
139
|
-
before do
|
140
|
-
collection.stub(:update).and_raise(Mongo::MongoDBError.new)
|
141
|
-
end
|
142
|
-
|
143
|
-
it "leaves the created_at timestamp unchanged" do
|
144
|
-
document.update_attributes(:name => 'name') rescue nil
|
145
|
-
document.created_at.should == original_created_at
|
146
|
-
end
|
147
|
-
|
148
|
-
it "leaves the updated_at timestamp unchanged" do
|
149
|
-
document.update_attributes(:name => 'name') rescue nil
|
150
|
-
document.updated_at.should == original_created_at
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
end
|
data/spec/update_spec.rb
DELETED
@@ -1,167 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "MongoDoc::Document" do
|
4
|
-
|
5
|
-
class UpdateAttributesChild
|
6
|
-
include MongoDoc::Document
|
7
|
-
|
8
|
-
attr_accessor :child_data
|
9
|
-
attr_accessor :child_int, :type => Integer
|
10
|
-
end
|
11
|
-
|
12
|
-
class UpdateAttributes
|
13
|
-
include MongoDoc::Document
|
14
|
-
|
15
|
-
attr_accessor :data
|
16
|
-
attr_accessor :int, :type => Integer
|
17
|
-
embed :child
|
18
|
-
end
|
19
|
-
|
20
|
-
let(:collection) { stub(:save => nil, :update => nil) }
|
21
|
-
let(:child) do
|
22
|
-
child = UpdateAttributesChild.new
|
23
|
-
child._id = 'child exists'
|
24
|
-
existing_doc.child = child
|
25
|
-
child
|
26
|
-
end
|
27
|
-
let(:existing_doc) do
|
28
|
-
doc = UpdateAttributes.new
|
29
|
-
doc._id = 'exists'
|
30
|
-
doc.stub(:_collection).and_return(collection)
|
31
|
-
doc
|
32
|
-
end
|
33
|
-
let(:new_child) do
|
34
|
-
child = UpdateAttributesChild.new
|
35
|
-
existing_doc.child = child
|
36
|
-
child
|
37
|
-
end
|
38
|
-
|
39
|
-
let(:new_doc) { UpdateAttributes.new }
|
40
|
-
|
41
|
-
describe "#update" do
|
42
|
-
context "with a new doc" do
|
43
|
-
it "delegates to save! if the doc is a new record" do
|
44
|
-
new_doc.should_receive(:_save)
|
45
|
-
new_doc.update(:data => 'data', :int => '1')
|
46
|
-
end
|
47
|
-
|
48
|
-
it "delegates to the root's save if the child is a new record" do
|
49
|
-
existing_doc.should_receive(:_save)
|
50
|
-
new_child.update(:child_data => 'data', :child_int => '1')
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context "with an existing doc" do
|
55
|
-
|
56
|
-
subject { existing_doc.update(:data => 'data', :int => '1') }
|
57
|
-
|
58
|
-
it "sets the attributes" do
|
59
|
-
subject
|
60
|
-
existing_doc.data.should == 'data'
|
61
|
-
existing_doc.int.should == 1
|
62
|
-
end
|
63
|
-
|
64
|
-
it "delegates to collection update" do
|
65
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data', :int => 1}}, :safe => false)
|
66
|
-
subject
|
67
|
-
end
|
68
|
-
|
69
|
-
context "that is embedded" do
|
70
|
-
it "delegates to the root's collection update" do
|
71
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data', 'child.child_int' => 1}}, :safe => true)
|
72
|
-
child.update_attributes!(:child_data => 'data', :child_int => '1')
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe "#update_attributes" do
|
79
|
-
it "delegates to save if the doc is a new record" do
|
80
|
-
new_doc.should_receive(:save)
|
81
|
-
new_doc.update_attributes(:data => 'data', :int => '1')
|
82
|
-
end
|
83
|
-
|
84
|
-
context "with an existing doc" do
|
85
|
-
|
86
|
-
subject { existing_doc.update_attributes(:data => 'data', :int => '1') }
|
87
|
-
|
88
|
-
it "sets the attributes" do
|
89
|
-
subject
|
90
|
-
existing_doc.data.should == 'data'
|
91
|
-
existing_doc.int.should == 1
|
92
|
-
end
|
93
|
-
|
94
|
-
it "validates the doc" do
|
95
|
-
existing_doc.should_receive(:valid?)
|
96
|
-
subject
|
97
|
-
end
|
98
|
-
|
99
|
-
it "returns false if the doc is not valid" do
|
100
|
-
existing_doc.stub(:valid?).and_return(false)
|
101
|
-
should be_false
|
102
|
-
end
|
103
|
-
|
104
|
-
it "delegates to collection update" do
|
105
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data', :int => 1}}, :safe => false)
|
106
|
-
subject
|
107
|
-
end
|
108
|
-
|
109
|
-
context "that is embedded" do
|
110
|
-
it "delegates to the root's collection update" do
|
111
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data', 'child.child_int' => 1}}, :safe => false)
|
112
|
-
child.update_attributes(:child_data => 'data', :child_int => '1')
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
describe "#update_attributes!" do
|
119
|
-
it "delegates to save! if the doc is a new record" do
|
120
|
-
new_doc.should_receive(:save!)
|
121
|
-
new_doc.update_attributes!(:data => 'data', :int => '1')
|
122
|
-
end
|
123
|
-
|
124
|
-
context "with an existing doc" do
|
125
|
-
|
126
|
-
subject { existing_doc.update_attributes!(:data => 'data', :int => '1') }
|
127
|
-
|
128
|
-
it "sets the attributes" do
|
129
|
-
subject
|
130
|
-
existing_doc.data.should == 'data'
|
131
|
-
existing_doc.int.should == 1
|
132
|
-
end
|
133
|
-
|
134
|
-
it "validates the doc" do
|
135
|
-
existing_doc.should_receive(:valid?).and_return(true)
|
136
|
-
subject
|
137
|
-
end
|
138
|
-
|
139
|
-
it "raises if not valid" do
|
140
|
-
existing_doc.stub(:valid?).and_return(false)
|
141
|
-
expect do
|
142
|
-
subject
|
143
|
-
end.should raise_error(MongoDoc::DocumentInvalidError)
|
144
|
-
end
|
145
|
-
|
146
|
-
it "delegates to collection update" do
|
147
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id}, {'$set' => {:data => 'data', :int => 1}}, :safe => true)
|
148
|
-
subject
|
149
|
-
end
|
150
|
-
|
151
|
-
context "that is embedded" do
|
152
|
-
it "delegates to the root's collection update" do
|
153
|
-
collection.should_receive(:update).with({'_id' => existing_doc._id, 'child._id' => child._id}, {'$set' => {'child.child_data' => 'data', 'child.child_int' => 1}}, :safe => true)
|
154
|
-
child.update_attributes!(:child_data => 'data', :child_int => '1')
|
155
|
-
end
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
describe "#hash_with_modifier_path_keys" do
|
161
|
-
it "returns a hash with the keys prepended with the modifier path" do
|
162
|
-
new_doc.stub(:_modifier_path).and_return('path.to.root')
|
163
|
-
new_doc.send(:hash_with_modifier_path_keys, :name => 1).should == {'path.to.root.name' => 1}
|
164
|
-
end
|
165
|
-
end
|
166
|
-
|
167
|
-
end
|
data/spec/validations_spec.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe MongoDoc::Validations do
|
4
|
-
|
5
|
-
class ValidationTest
|
6
|
-
include MongoDoc::Document
|
7
|
-
|
8
|
-
attr_accessor :data
|
9
|
-
validates_presence_of :data
|
10
|
-
end
|
11
|
-
|
12
|
-
context "requirements" do
|
13
|
-
subject { ValidationTest.new }
|
14
|
-
|
15
|
-
it { should respond_to(:valid?) }
|
16
|
-
it { should respond_to(:errors) }
|
17
|
-
|
18
|
-
it "is included by Document" do
|
19
|
-
::ActiveModel::Validations.should === subject
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
context "validations" do
|
24
|
-
it "valid? fails when a document is invalid" do
|
25
|
-
doc = ValidationTest.new
|
26
|
-
doc.should_not be_valid
|
27
|
-
doc.should have(1).error_on(:data)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|