mongoid 0.10.6 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/Rakefile +3 -3
  2. data/VERSION +1 -1
  3. data/lib/mongoid.rb +2 -2
  4. data/lib/mongoid/associations.rb +1 -1
  5. data/lib/mongoid/associations/belongs_to.rb +1 -1
  6. data/lib/mongoid/associations/has_many.rb +8 -6
  7. data/lib/mongoid/associations/has_one.rb +6 -5
  8. data/lib/mongoid/commands.rb +94 -41
  9. data/lib/mongoid/commands/delete_all.rb +2 -3
  10. data/lib/mongoid/commands/deletion.rb +1 -1
  11. data/lib/mongoid/commands/destroy_all.rb +2 -0
  12. data/lib/mongoid/commands/save.rb +1 -1
  13. data/lib/mongoid/criteria.rb +1 -1
  14. data/lib/mongoid/document.rb +43 -32
  15. data/lib/mongoid/extensions.rb +3 -3
  16. data/lib/mongoid/extensions/hash/assimilation.rb +2 -3
  17. data/lib/mongoid/extensions/string/inflections.rb +1 -0
  18. data/mongoid.gemspec +13 -9
  19. data/perf/benchmark.rb +8 -4
  20. data/spec/integration/mongoid/commands_spec.rb +103 -0
  21. data/spec/integration/mongoid/document_spec.rb +13 -1
  22. data/spec/integration/mongoid/inheritance_spec.rb +105 -0
  23. data/spec/spec_helper.rb +24 -2
  24. data/spec/unit/mongoid/associations/belongs_to_spec.rb +3 -3
  25. data/spec/unit/mongoid/associations/has_many_spec.rb +92 -31
  26. data/spec/unit/mongoid/associations/has_one_spec.rb +57 -4
  27. data/spec/unit/mongoid/associations_spec.rb +4 -4
  28. data/spec/unit/mongoid/attributes_spec.rb +2 -2
  29. data/spec/unit/mongoid/commands/delete_all_spec.rb +4 -3
  30. data/spec/unit/mongoid/commands/delete_spec.rb +1 -1
  31. data/spec/unit/mongoid/commands/destroy_all_spec.rb +3 -2
  32. data/spec/unit/mongoid/commands/destroy_spec.rb +1 -1
  33. data/spec/unit/mongoid/commands/save_spec.rb +3 -3
  34. data/spec/unit/mongoid/commands_spec.rb +6 -6
  35. data/spec/unit/mongoid/criteria_spec.rb +45 -36
  36. data/spec/unit/mongoid/document_spec.rb +198 -29
  37. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +2 -2
  38. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +33 -8
  39. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +2 -2
  40. data/spec/unit/mongoid/finders_spec.rb +1 -1
  41. data/spec/unit/mongoid/timestamps_spec.rb +1 -1
  42. metadata +9 -5
@@ -10,8 +10,8 @@ describe Mongoid::Extensions::Array::Conversions do
10
10
  Person.new(:_id => 2, :title => "Madam")
11
11
  ]
12
12
  array.mongoidize.should ==
13
- [ HashWithIndifferentAccess.new({ :_id => 1, :title => "Sir", :age => 100 }),
14
- HashWithIndifferentAccess.new({ :_id => 2, :title => "Madam", :age => 100 }) ]
13
+ [ HashWithIndifferentAccess.new({ :_id => 1, :title => "Sir", :age => 100, :_type => "Person" }),
14
+ HashWithIndifferentAccess.new({ :_id => 2, :title => "Madam", :age => 100, :_type => "Person" }) ]
15
15
  end
16
16
 
17
17
  end
@@ -4,16 +4,41 @@ describe Mongoid::Extensions::Hash::Assimilation do
4
4
 
5
5
  describe "#assimilate" do
6
6
 
7
- before do
8
- @child = { :first_name => "Hank", :last_name => "Moody" }
9
- @parent = Person.new(:title => "Mr.")
10
- @options = Mongoid::Associations::Options.new(:name => :name)
7
+ context "when a type is not provided" do
8
+
9
+ before do
10
+ @child = { :first_name => "Hank", :last_name => "Moody" }
11
+ @parent = Person.new(:title => "Mr.")
12
+ @options = Mongoid::Associations::Options.new(:name => :name)
13
+ end
14
+
15
+ it "incorporates the hash into the object graph" do
16
+ @child.assimilate(@parent, @options)
17
+ @parent.name.first_name.should == "Hank"
18
+ @parent.name.last_name.should == "Moody"
19
+ end
20
+
11
21
  end
12
22
 
13
- it "incorporates the hash into the object graph" do
14
- @child.assimilate(@parent, @options)
15
- @parent.name.first_name.should == "Hank"
16
- @parent.name.last_name.should == "Moody"
23
+ context "when a type is provided" do
24
+
25
+ before do
26
+ @child = { :speed => 300 }
27
+ @parent = Canvas.new(:name => "web page")
28
+ @options = Mongoid::Associations::Options.new(:name => :writer)
29
+ end
30
+
31
+ it "incorporates the hash into the object graph with the supplied type" do
32
+ @child.assimilate(@parent, @options, HtmlWriter)
33
+ @parent.writer.should be_a_kind_of(HtmlWriter)
34
+ @parent.writer.speed.should == 300
35
+ end
36
+
37
+ it "adds the _type field to the hash" do
38
+ @child.assimilate(@parent, @options, HtmlWriter)
39
+ @parent.writer._type.should == "HtmlWriter"
40
+ end
41
+
17
42
  end
18
43
 
19
44
  end
@@ -6,7 +6,7 @@ describe Mongoid::Extensions::Object::Conversions do
6
6
 
7
7
  it "returns its attributes" do
8
8
  Person.new(:_id => 1, :title => "Sir").mongoidize.should ==
9
- { "_id" => 1, "title" => "Sir", "age" => 100 }
9
+ { "_id" => 1, "title" => "Sir", "age" => 100, "_type" => "Person" }
10
10
  end
11
11
 
12
12
  end
@@ -28,7 +28,7 @@ describe Mongoid::Extensions::Object::Conversions do
28
28
  context "when object has attributes" do
29
29
 
30
30
  before do
31
- @attributes = { "_id" => "test", "title" => "Sir", "age" => 100 }
31
+ @attributes = { "_id" => "test", "title" => "Sir", "age" => 100, "_type" => "Person" }
32
32
  @person = Person.new(@attributes)
33
33
  end
34
34
 
@@ -291,7 +291,7 @@ describe Mongoid::Finders do
291
291
 
292
292
  it "returns a new criteria with select conditions added" do
293
293
  criteria = Person.where(:title => "Sir")
294
- criteria.selector.should == { :title => "Sir" }
294
+ criteria.selector.should == { :_type => "Person", :title => "Sir" }
295
295
  end
296
296
 
297
297
  end
@@ -9,7 +9,7 @@ describe Mongoid::Timestamps do
9
9
  end
10
10
 
11
11
  it "adds created_at and updated_at to the document" do
12
- fields = Person.instance_variable_get(:@fields)
12
+ fields = Person.fields
13
13
  fields[:created_at].should_not be_nil
14
14
  fields[:updated_at].should_not be_nil
15
15
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.6
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-29 00:00:00 -05:00
12
+ date: 2010-01-02 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.18.1
33
+ version: 0.18.2
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: mongo_ext
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.18.1
43
+ version: 0.18.2
44
44
  version:
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: durran-validatable
@@ -149,9 +149,11 @@ files:
149
149
  - mongoid.gemspec
150
150
  - perf/benchmark.rb
151
151
  - spec/integration/mongoid/associations_spec.rb
152
+ - spec/integration/mongoid/commands_spec.rb
152
153
  - spec/integration/mongoid/criteria_spec.rb
153
154
  - spec/integration/mongoid/document_spec.rb
154
155
  - spec/integration/mongoid/finders_spec.rb
156
+ - spec/integration/mongoid/inheritance_spec.rb
155
157
  - spec/spec.opts
156
158
  - spec/spec_helper.rb
157
159
  - spec/unit/mongoid/associations/belongs_to_related_spec.rb
@@ -199,7 +201,7 @@ files:
199
201
  - spec/unit/mongoid/versioning_spec.rb
200
202
  - spec/unit/mongoid_spec.rb
201
203
  has_rdoc: true
202
- homepage: http://github.com/durran/mongoid
204
+ homepage: http://mongoid.org
203
205
  licenses: []
204
206
 
205
207
  post_install_message:
@@ -228,9 +230,11 @@ specification_version: 3
228
230
  summary: ODM framework for MongoDB
229
231
  test_files:
230
232
  - spec/integration/mongoid/associations_spec.rb
233
+ - spec/integration/mongoid/commands_spec.rb
231
234
  - spec/integration/mongoid/criteria_spec.rb
232
235
  - spec/integration/mongoid/document_spec.rb
233
236
  - spec/integration/mongoid/finders_spec.rb
237
+ - spec/integration/mongoid/inheritance_spec.rb
234
238
  - spec/spec_helper.rb
235
239
  - spec/unit/mongoid/associations/belongs_to_related_spec.rb
236
240
  - spec/unit/mongoid/associations/belongs_to_spec.rb