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.
Files changed (101) hide show
  1. data/README.textile +14 -203
  2. data/Rakefile +0 -134
  3. data/lib/mongo_doc/collection.rb +4 -0
  4. data/lib/mongo_doc/finders.rb +1 -0
  5. data/lib/mongo_doc/timestamps.rb +4 -3
  6. data/lib/mongo_doc/version.rb +3 -0
  7. data/lib/mongo_doc.rb +0 -5
  8. metadata +25 -212
  9. data/.document +0 -5
  10. data/.gitignore +0 -8
  11. data/.rspec +0 -2
  12. data/.rvmrc +0 -1
  13. data/.watchr +0 -32
  14. data/Gemfile +0 -3
  15. data/Gemfile.lock +0 -72
  16. data/HISTORY.md +0 -11
  17. data/VERSION +0 -1
  18. data/examples/simple_document.rb +0 -46
  19. data/examples/simple_object.rb +0 -34
  20. data/features/collections.feature +0 -9
  21. data/features/connection.feature +0 -13
  22. data/features/db_references.feature +0 -21
  23. data/features/embed_hash.feature +0 -16
  24. data/features/finders.feature +0 -76
  25. data/features/indexes.feature +0 -28
  26. data/features/mongodb.yml +0 -7
  27. data/features/mongodoc_base.feature +0 -128
  28. data/features/new_record.feature +0 -36
  29. data/features/partial_updates.feature +0 -95
  30. data/features/polymorphic_collections.feature +0 -16
  31. data/features/references.feature +0 -28
  32. data/features/removing_documents.feature +0 -68
  33. data/features/saving_an_object.feature +0 -15
  34. data/features/scopes.feature +0 -66
  35. data/features/step_definitions/collection_steps.rb +0 -17
  36. data/features/step_definitions/connection_steps.rb +0 -13
  37. data/features/step_definitions/document_steps.rb +0 -155
  38. data/features/step_definitions/documents.rb +0 -61
  39. data/features/step_definitions/embed_hash_steps.rb +0 -6
  40. data/features/step_definitions/field_steps.rb +0 -28
  41. data/features/step_definitions/finder_steps.rb +0 -15
  42. data/features/step_definitions/index_steps.rb +0 -10
  43. data/features/step_definitions/json_steps.rb +0 -9
  44. data/features/step_definitions/object_steps.rb +0 -50
  45. data/features/step_definitions/objects.rb +0 -24
  46. data/features/step_definitions/partial_update_steps.rb +0 -31
  47. data/features/step_definitions/query_steps.rb +0 -69
  48. data/features/step_definitions/removing_documents_steps.rb +0 -14
  49. data/features/step_definitions/scope_steps.rb +0 -18
  50. data/features/step_definitions/string_casting_steps.rb +0 -29
  51. data/features/step_definitions/util_steps.rb +0 -7
  52. data/features/string_casting.feature +0 -10
  53. data/features/support/support.rb +0 -12
  54. data/features/timestamps.feature +0 -14
  55. data/features/using_criteria.feature +0 -148
  56. data/mongo_doc.gemspec +0 -272
  57. data/mongodb.example.yml +0 -14
  58. data/perf/mongo_doc_object.rb +0 -83
  59. data/perf/mongo_document.rb +0 -84
  60. data/perf/ruby_driver.rb +0 -49
  61. data/script/console +0 -8
  62. data/spec/active_model_behavior.rb +0 -64
  63. data/spec/array_including_argument_matcher.rb +0 -62
  64. data/spec/associations/collection_proxy_spec.rb +0 -233
  65. data/spec/associations/document_proxy_spec.rb +0 -45
  66. data/spec/associations/hash_proxy_spec.rb +0 -181
  67. data/spec/associations/proxy_base_spec.rb +0 -92
  68. data/spec/associations_spec.rb +0 -218
  69. data/spec/attributes_accessor_spec.rb +0 -39
  70. data/spec/attributes_spec.rb +0 -184
  71. data/spec/bson_matchers.rb +0 -54
  72. data/spec/bson_spec.rb +0 -196
  73. data/spec/collection_spec.rb +0 -169
  74. data/spec/connection_spec.rb +0 -169
  75. data/spec/contexts/ids_spec.rb +0 -49
  76. data/spec/contexts/mongo_spec.rb +0 -241
  77. data/spec/contexts_spec.rb +0 -56
  78. data/spec/criteria/optional_spec.rb +0 -26
  79. data/spec/criteria_spec.rb +0 -73
  80. data/spec/cursor_spec.rb +0 -91
  81. data/spec/database_cleaner_spec.rb +0 -24
  82. data/spec/document_ext.rb +0 -9
  83. data/spec/document_spec.rb +0 -569
  84. data/spec/embedded_save_spec.rb +0 -73
  85. data/spec/ext_spec.rb +0 -100
  86. data/spec/finders_spec.rb +0 -61
  87. data/spec/hash_matchers.rb +0 -29
  88. data/spec/index_spec.rb +0 -79
  89. data/spec/matchers_spec.rb +0 -342
  90. data/spec/mongodb.yml +0 -6
  91. data/spec/mongodb_pairs.yml +0 -8
  92. data/spec/new_record_spec.rb +0 -128
  93. data/spec/polymorphic_collection_spec.rb +0 -47
  94. data/spec/references_many_spec.rb +0 -214
  95. data/spec/references_spec.rb +0 -121
  96. data/spec/root_spec.rb +0 -41
  97. data/spec/scope_spec.rb +0 -88
  98. data/spec/spec_helper.rb +0 -16
  99. data/spec/timestamps_spec.rb +0 -154
  100. data/spec/update_spec.rb +0 -167
  101. data/spec/validations_spec.rb +0 -30
@@ -1,128 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "MongoDoc::Document _id and #new_record?" do
4
- class Child
5
- include MongoDoc::Document
6
- end
7
-
8
- class Parent
9
- include MongoDoc::Document
10
-
11
- embed :child
12
- embed_many :children
13
-
14
- attr_accessor :data
15
-
16
- validates_presence_of :data
17
- end
18
-
19
- let(:id) { 'id' }
20
- let(:collection) { stub('collection', :save => id) }
21
- let(:child) { Child.new }
22
-
23
- context "as a embed child" do
24
- it "when added to the parent is a new record" do
25
- Parent.new(:data => 'data', :child => child)
26
- child.should be_new_record
27
- end
28
-
29
- context "saving" do
30
- before do
31
- Parent.stub(:collection).and_return(collection)
32
- end
33
-
34
- context "#save" do
35
- it "when saved is not a new record" do
36
- parent = Parent.new(:data => 'data', :child => child)
37
- parent.save
38
- child.should_not be_new_record
39
- end
40
-
41
- it "if parent is invalid, remains a new record" do
42
- parent = Parent.new(:child => child)
43
- parent.save
44
- child.should be_new_record
45
- end
46
- end
47
-
48
- context "#save!" do
49
- it "when saved is not a new record" do
50
- parent = Parent.new(:data => 'data', :child => child)
51
- parent.save!
52
- child.should_not be_new_record
53
- end
54
-
55
- it "if parent is invalid, remains a new record" do
56
- parent = Parent.new(:child => child)
57
- parent.save! rescue nil
58
- child.should be_new_record
59
- end
60
-
61
- it "when db error is raised, remains a new record" do
62
- collection.stub(:save).and_raise(Mongo::OperationFailure)
63
- parent = Parent.new(:data => 'data', :child => child)
64
- expect do
65
- parent.save!
66
- end.should raise_error(Mongo::OperationFailure)
67
- child.should be_new_record
68
- end
69
- end
70
- end
71
- end
72
-
73
- context "as a embed_many child" do
74
- it "when added to the parent is a new record" do
75
- parent = Parent.new(:data => 'data')
76
- parent.children << child
77
- child.should be_new_record
78
- end
79
-
80
- context "saving" do
81
- before do
82
- Parent.stub(:collection).and_return(collection)
83
- end
84
-
85
- context "#save" do
86
- it "when saved is not a new record" do
87
- parent = Parent.new(:data => 'data')
88
- parent.children << child
89
- parent.save
90
- child.should_not be_new_record
91
- end
92
-
93
- it "if parent is invalid, remains a new record" do
94
- parent = Parent.new
95
- parent.children << child
96
- parent.save
97
- child.should be_new_record
98
- end
99
- end
100
-
101
- context "#save!" do
102
- it "when saved is not a new record" do
103
- parent = Parent.new(:data => 'data')
104
- parent.children << child
105
- parent.save!
106
- child.should_not be_new_record
107
- end
108
-
109
- it "if parent is invalid, remains a new record" do
110
- parent = Parent.new
111
- parent.children << child
112
- parent.save! rescue nil
113
- child.should be_new_record
114
- end
115
-
116
- it "when db error is raised, remains a new record" do
117
- collection.stub(:save).and_raise(Mongo::OperationFailure)
118
- parent = Parent.new(:data => 'data')
119
- parent.children << child
120
- expect do
121
- parent.save!
122
- end.should raise_error(Mongo::OperationFailure)
123
- child.should be_new_record
124
- end
125
- end
126
- end
127
- end
128
- end
@@ -1,47 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MongoDoc::PolymorphicCollection do
4
-
5
- class BaseCollectionName
6
- include MongoDoc::Document
7
-
8
- attr_accessor :base
9
- end
10
-
11
- class SubCollectionName < BaseCollectionName
12
- attr_accessor :sub
13
- end
14
-
15
- class OverriddenCollectionName < BaseCollectionName
16
- collection_name :overridden
17
- attr_accessor :over
18
- end
19
-
20
- class TwoSubCollectionName < OverriddenCollectionName
21
- attr_accessor :two_sub
22
- end
23
-
24
- describe BaseCollectionName do
25
- it "uses the default collection_name for base doc" do
26
- BaseCollectionName.collection_name.should == BaseCollectionName.to_s.tableize.gsub('/', '.')
27
- end
28
- end
29
-
30
- describe SubCollectionName do
31
- it "uses the base's collection_name for the derived doc" do
32
- SubCollectionName.collection_name.should == BaseCollectionName.to_s.tableize.gsub('/', '.')
33
- end
34
- end
35
-
36
- describe OverriddenCollectionName do
37
- it "sets the collection_name to the overridden name" do
38
- OverriddenCollectionName.collection_name.should == 'overridden'
39
- end
40
- end
41
-
42
- describe TwoSubCollectionName do
43
- it "climbs the inheritance chain looking for the collection name" do
44
- TwoSubCollectionName.collection_name.should == 'overridden'
45
- end
46
- end
47
- end
@@ -1,214 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MongoDoc::ReferencesMany do
4
- class PostalAddress
5
- include MongoDoc::Document
6
-
7
- attr_accessor :state
8
- end
9
-
10
- context "Simple Reference" do
11
- class PersonSimple
12
- include MongoDoc::Document
13
-
14
- references_many :postal_addresses
15
- end
16
-
17
- let(:person) { PersonSimple.new }
18
- subject { person }
19
-
20
- context "Object accessor" do
21
- it { should respond_to(:postal_addresses) }
22
- it { should respond_to(:postal_addresses=) }
23
-
24
- it "is not part of the persistent key set" do
25
- PersonSimple._keys.should_not include('postal_addresses')
26
- end
27
- end
28
-
29
- context "Object Id accessor" do
30
- it { should respond_to(:postal_address_ids) }
31
- it { should respond_to(:postal_address_ids=) }
32
-
33
- it "is part of the persistent key set" do
34
- PersonSimple._keys.should include('postal_address_ids')
35
- end
36
- end
37
-
38
- context "setting the ids" do
39
- let(:postal_address) { PostalAddress.new(:_id => BSON::ObjectID.new) }
40
-
41
- before do
42
- person.postal_addresses = [postal_address]
43
- end
44
-
45
- context "to nil" do
46
- before do
47
- person.postal_address_ids = nil
48
- end
49
-
50
- its(:postal_address_ids) { should == [] }
51
- its(:postal_addresses) { should == [] }
52
- end
53
-
54
- context "to []" do
55
- before do
56
- person.postal_address_ids = []
57
- end
58
-
59
- its(:postal_addresses) { should == [] }
60
- end
61
-
62
- context "to strings" do
63
- before do
64
- person.postal_address_ids = [postal_address._id.to_s]
65
- end
66
-
67
- its(:postal_address_ids) { should == [postal_address._id] }
68
- end
69
- end
70
- end
71
-
72
- context "Named Reference" do
73
- class PersonNamed
74
- include MongoDoc::Document
75
-
76
- references_many :postal_addresses, :as => :known_addresses
77
- end
78
-
79
- let(:person) { PersonNamed.new }
80
-
81
- subject { person }
82
-
83
- context "Object accessor" do
84
- it { should respond_to(:known_addresses) }
85
- it { should respond_to(:known_addresses=) }
86
-
87
- it "is not part of the persistent key set" do
88
- PersonNamed._keys.should_not include('known_addresses')
89
- end
90
- end
91
-
92
- context "Object Id accessor" do
93
- it { should respond_to(:known_address_ids) }
94
- it { should respond_to(:known_address_ids=) }
95
-
96
- it "is part of the persistent key set" do
97
- PersonNamed._keys.should include('known_address_ids')
98
- end
99
- end
100
-
101
- context "setting the ids" do
102
- let(:address) { PostalAddress.new(:_id => BSON::ObjectID.new) }
103
-
104
- before do
105
- person.known_addresses = [address]
106
- end
107
-
108
- context "to nil" do
109
- before do
110
- person.known_address_ids = nil
111
- end
112
-
113
- its(:known_address_ids) { should == [] }
114
- its(:known_addresses) { should == [] }
115
- end
116
-
117
- context "to []" do
118
- before do
119
- person.known_address_ids = []
120
- end
121
-
122
- its(:known_addresses) { should == [] }
123
- end
124
-
125
- context "to strings" do
126
- before do
127
- person.known_address_ids = [address._id.to_s]
128
- end
129
-
130
- its(:known_address_ids) { should == [address._id] }
131
- end
132
- end
133
- end
134
-
135
- context "DBRef reference" do
136
- class PersonDBRef
137
- include MongoDoc::Document
138
-
139
- references_many :as_ref => :addresses
140
- end
141
-
142
- let(:address) { PostalAddress.new(:_id => BSON::ObjectID.new) }
143
- let(:person) { PersonDBRef.new }
144
-
145
- subject { person }
146
-
147
- context "Object accessor" do
148
- it { should respond_to(:addresses) }
149
- it { should respond_to(:addresses=) }
150
-
151
- it "is not part of the persistent key set" do
152
- PersonDBRef._keys.should_not include('addresses')
153
- end
154
- end
155
-
156
- context "DBRef accessor" do
157
- it { should respond_to(:address_refs) }
158
- it { should respond_to(:address_refs=) }
159
-
160
- it "is part of the persistent key set" do
161
- PersonDBRef._keys.should include('address_refs')
162
- end
163
- end
164
-
165
- context "setting the collection" do
166
- before do
167
- person.addresses = [address]
168
- end
169
-
170
- it "sets the refs to an array of refs]" do
171
- person.address_refs.first.namespace.should == PostalAddress.collection_name
172
- person.address_refs.first.object_id.should == address._id
173
- end
174
- end
175
-
176
- context "setting the refs" do
177
- before do
178
- person.addresses = [address]
179
- end
180
-
181
- context "to nil" do
182
- before do
183
- person.address_refs = nil
184
- end
185
-
186
- it "sets the refs to []" do
187
- person.address_refs.should == []
188
- end
189
-
190
- its(:addresses) { should == [] }
191
- end
192
-
193
- context "to []" do
194
- before do
195
- person.address_refs = []
196
- end
197
-
198
- its(:addresses) { should == [] }
199
- end
200
-
201
- context "to an array of references" do
202
- let(:dbref) { ::BSON::DBRef.new(PostalAddress.collection_name, address._id) }
203
-
204
- before do
205
- person.address_refs = [dbref]
206
- end
207
-
208
- it "sets the addresses to nil" do
209
- person.instance_variable_get('@addresses').should be_nil
210
- end
211
- end
212
- end
213
- end
214
- end
@@ -1,121 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MongoDoc::References do
4
- class PostalAddress
5
- include MongoDoc::Document
6
-
7
- attr_accessor :state
8
- end
9
-
10
- context "Simple Reference" do
11
- class SimplePerson
12
- include MongoDoc::Document
13
-
14
- references :postal_address
15
- end
16
-
17
- subject { SimplePerson.new }
18
-
19
- context "Object accessor" do
20
- it { should respond_to(:postal_address) }
21
- it { should respond_to(:postal_address=) }
22
-
23
- it "is not part of the persistent key set" do
24
- SimplePerson._keys.should_not include(:postal_address)
25
- end
26
- end
27
-
28
- context "Object Id accessor" do
29
- it { should respond_to(:postal_address_id) }
30
- it { should respond_to(:postal_address_id=) }
31
-
32
- it "is part of the persistent key set" do
33
- SimplePerson._keys.should include(:postal_address_id)
34
- end
35
- end
36
-
37
- context "setting the id" do
38
- let(:postal_address) { PostalAddress.new(:_id => BSON::ObjectID.new) }
39
-
40
- it "resets the object to nil" do
41
- subject.postal_address = postal_address
42
- subject.postal_address_id = nil
43
- subject.postal_address.should be_nil
44
- end
45
- end
46
- end
47
-
48
- context "Named Reference" do
49
- class NamedPerson
50
- include MongoDoc::Document
51
-
52
- references :postal_address, :as => :work_address
53
- end
54
-
55
- subject { NamedPerson.new }
56
-
57
- context "Object accessor" do
58
- it { should respond_to(:work_address) }
59
- it { should respond_to(:work_address=) }
60
-
61
- it "is not part of the persistent key set" do
62
- NamedPerson._keys.should_not include(:work_address)
63
- end
64
- end
65
-
66
- context "Object Id accessor" do
67
- it { should respond_to(:work_address_id) }
68
- it { should respond_to(:work_address_id=) }
69
-
70
- it "is part of the persistent key set" do
71
- NamedPerson._keys.should include(:work_address_id)
72
- end
73
- end
74
- end
75
-
76
- context "DBRef Reference" do
77
- class DBRefPerson
78
- include MongoDoc::Document
79
-
80
- references :as_ref => :address
81
- end
82
-
83
- let(:address) { PostalAddress.new(:_id => BSON::ObjectID.new) }
84
- subject { DBRefPerson.new }
85
-
86
- context "Object accessor" do
87
- it { should respond_to(:address) }
88
- it { should respond_to(:address=) }
89
-
90
- it "is not part of the persistent key set" do
91
- DBRefPerson._keys.should_not include(:address)
92
- end
93
- end
94
-
95
- context "DBRef accessor" do
96
- it { should respond_to(:address_ref) }
97
- it { should respond_to(:address_ref=) }
98
-
99
- it "is part of the persistent key set" do
100
- DBRefPerson._keys.should include(:address_ref)
101
- end
102
- end
103
-
104
- context "setting the object" do
105
- it "sets the reference" do
106
- subject.address = address
107
- subject.address_ref.namespace.should == PostalAddress.collection_name
108
- subject.address_ref.object_id.should == address._id
109
- end
110
- end
111
-
112
- context "setting the reference" do
113
-
114
- it "resets the object to nil" do
115
- subject.address = address
116
- subject.address_ref = nil
117
- subject.address.should be_nil
118
- end
119
- end
120
- end
121
- end
data/spec/root_spec.rb DELETED
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "MongoDoc::Root" do
4
- class RootTest
5
- include MongoDoc::Root
6
- attr_accessor_with_default(:_associations) {[]}
7
- attr_accessor :association
8
- end
9
-
10
- let(:doc) { RootTest.new }
11
-
12
- context "cascade properties" do
13
- let(:prop_val) { stub }
14
-
15
- %w(_modifier_path _root _selector_path).each do |prop|
16
- it "sets the #{prop}" do
17
- doc.send("#{prop}=", prop_val)
18
- doc.send(prop).should == prop_val
19
- end
20
-
21
- it "sets the prop on any associations" do
22
- doc.association = stub
23
- doc.association.should_receive("#{prop}=").with(prop_val)
24
- doc._associations = ['association']
25
- doc.send("#{prop}=", prop_val)
26
- end
27
- end
28
- end
29
-
30
- describe "#_selector_path" do
31
- it "defaults to ''" do
32
- doc._selector_path.should == ''
33
- end
34
- end
35
-
36
- describe "#_modifier_path" do
37
- it "defaults to ''" do
38
- doc._modifier_path.should == ''
39
- end
40
- end
41
- end
data/spec/scope_spec.rb DELETED
@@ -1,88 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe MongoDoc::Scope do
4
-
5
- module Extension
6
- def extension_module_method
7
- "extension module method"
8
- end
9
- end
10
-
11
- class ScopeTest
12
- include MongoDoc::Document
13
-
14
- attr_accessor :active
15
- attr_accessor :count
16
-
17
- scope :active, where(:active => true)
18
- scope :count_lte_one, where(:count.lte => 1) do
19
- def extension_method
20
- "extension method"
21
- end
22
- end
23
- scope :count_gt_one, where(:count.gt => 1), :extend => Extension
24
- scope :at_least_count, lambda {|count| where(:count.gt => count)}
25
- end
26
-
27
- context ".scope" do
28
- it "adds the named scope to the hash of scopes" do
29
- ScopeTest.scopes.should have_key(:active)
30
- end
31
-
32
- it "creates a class method for the named scope" do
33
- ScopeTest.should respond_to(:active)
34
- end
35
- end
36
-
37
- context "accessing a named scope" do
38
- it "is a criteria proxy" do
39
- MongoDoc::Scope::CriteriaProxy.should === ScopeTest.active
40
- end
41
-
42
- it "responds like a criteria" do
43
- ScopeTest.active.should respond_to(:selector)
44
- end
45
-
46
- it "has set the conditions on the criteria" do
47
- ScopeTest.active.selector.should has_entry(:active => true)
48
- end
49
-
50
- it "sets the association extension by block" do
51
- ScopeTest.count_lte_one.extension_method.should == "extension method"
52
- end
53
-
54
- it "sets the association extension by :extend" do
55
- ScopeTest.count_gt_one.extension_module_method.should == "extension module method"
56
- end
57
-
58
- context "when using a lambda" do
59
- it "accepts parameters to the criteria" do
60
- ScopeTest.at_least_count(3).selector.should has_entry(:count => {'$gt' => 3})
61
- end
62
- end
63
- end
64
-
65
- context "chained scopes" do
66
- it "is a criteria proxy" do
67
- MongoDoc::Scope::CriteriaProxy.should === ScopeTest.active.count_gt_one
68
- end
69
-
70
- it "responds like a criteria" do
71
- ScopeTest.active.count_gt_one.should respond_to(:selector)
72
- end
73
-
74
- it "merges the criteria" do
75
- ScopeTest.active.count_gt_one.selector.should have_entries(:count => {'$gt' => 1}, :active => true)
76
- end
77
-
78
- it "chains with other criteria" do
79
- ScopeTest.active.where(:count => 1).selector.should have_entries(:count => 1, :active => true)
80
- end
81
-
82
- let(:id) { BSON::ObjectID.new }
83
- it "chains with id" do
84
- ScopeTest.active.id(id).selector.should have_entries(:active => true, :_id => id)
85
- end
86
- end
87
- end
88
-
data/spec/spec_helper.rb DELETED
@@ -1,16 +0,0 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'mongo_doc'
4
- require 'rspec'
5
- require 'rspec/autorun'
6
- require 'bson_matchers'
7
- require 'hash_matchers'
8
- require 'array_including_argument_matcher'
9
- require 'active_model_behavior'
10
- require 'document_ext'
11
-
12
- RSpec.configure do |config|
13
- config.include(BsonMatchers)
14
- config.include(HashMatchers)
15
- config.include(ActiveModelBehavior)
16
- end