mongo_doc 0.6.26 → 0.6.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|