mongoid 0.5.6 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.6
1
+ 0.5.7
@@ -13,7 +13,7 @@ module Mongoid #:nodoc:
13
13
  # to the internal document itself.
14
14
  def initialize(name, document, options = {})
15
15
  class_name = options[:class_name]
16
- klass = class_name ? class_name.constantize : name.to_s.titleize.constantize
16
+ klass = class_name ? class_name.constantize : name.to_s.camelize.constantize
17
17
  attributes = document.attributes[name]
18
18
  @document = klass.new(attributes)
19
19
  @document.parent = document
@@ -5,15 +5,17 @@ module Mongoid #:nodoc:
5
5
  extend Associations
6
6
 
7
7
  attr_accessor :association_name, :parent
8
- attr_reader :attributes
8
+ attr_reader :attributes, :new_record
9
9
 
10
10
  define_callbacks \
11
11
  :after_create,
12
12
  :after_destroy,
13
13
  :after_save,
14
+ :after_update,
14
15
  :before_create,
15
16
  :before_destroy,
16
- :before_save
17
+ :before_save,
18
+ :before_update
17
19
 
18
20
  class << self
19
21
 
@@ -188,6 +190,7 @@ module Mongoid #:nodoc:
188
190
  # If no attributes are provided, they will be initialized with an empty Hash.
189
191
  def initialize(attributes = {})
190
192
  @attributes = process(fields, attributes)
193
+ @new_record = true if id.nil?
191
194
  generate_key
192
195
  end
193
196
 
@@ -198,7 +201,7 @@ module Mongoid #:nodoc:
198
201
 
199
202
  # Returns true is the Document has not been persisted to the database, false if it has.
200
203
  def new_record?
201
- @attributes[:_id].nil?
204
+ @new_record == true
202
205
  end
203
206
 
204
207
  # Notify observers that this Document has changed.
@@ -225,7 +228,9 @@ module Mongoid #:nodoc:
225
228
 
226
229
  # Write to the attributes hash.
227
230
  def write_attribute(name, value)
231
+ run_callbacks(:before_update)
228
232
  @attributes[name] = fields[name].set(value)
233
+ run_callbacks(:after_update)
229
234
  notify
230
235
  end
231
236
 
@@ -241,6 +246,8 @@ module Mongoid #:nodoc:
241
246
  if primary_key
242
247
  values = primary_key.collect { |key| @attributes[key] }
243
248
  @attributes[:_id] = values.join(" ").parameterize.to_s
249
+ else
250
+ @attributes[:_id] = Mongo::ObjectID.new unless id
244
251
  end
245
252
  end
246
253
  end
@@ -7,6 +7,21 @@ module Mongoid #:nodoc:
7
7
  def mongoidize
8
8
  collect { |obj| obj.attributes }
9
9
  end
10
+
11
+ def self.included(base)
12
+ base.class_eval do
13
+ extend ClassMethods
14
+ end
15
+ end
16
+
17
+ module ClassMethods
18
+ def get(value)
19
+ value
20
+ end
21
+ def set(value)
22
+ value
23
+ end
24
+ end
10
25
  end
11
26
  end
12
27
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongoid}
8
- s.version = "0.5.6"
8
+ s.version = "0.5.7"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Durran Jordan"]
@@ -27,6 +27,10 @@ class Person < Mongoid::Document
27
27
  has_one :pet, :class_name => "Animal"
28
28
  end
29
29
 
30
+ class MixedDrink < Mongoid::Document
31
+ field :name
32
+ end
33
+
30
34
  class Address < Mongoid::Document
31
35
  field :street
32
36
  field :city
@@ -3,20 +3,20 @@ require File.join(File.dirname(__FILE__), "/../../../spec_helper.rb")
3
3
  describe Mongoid::Associations::HasOneAssociation do
4
4
 
5
5
  before do
6
- @attributes = { :name => { :first_name => "Drexel" } }
6
+ @attributes = { :mixed_drink => { :name => "Jack and Coke" } }
7
7
  @document = stub(:attributes => @attributes)
8
8
  end
9
9
 
10
10
  describe "#decorate!" do
11
11
 
12
12
  before do
13
- @association = Mongoid::Associations::HasOneAssociation.new(:name, @document)
13
+ @association = Mongoid::Associations::HasOneAssociation.new(:mixed_drink, @document)
14
14
  end
15
15
 
16
16
  context "when getting values" do
17
17
 
18
18
  it "delegates to the document" do
19
- @association.first_name.should == "Drexel"
19
+ @association.name.should == "Jack and Coke"
20
20
  end
21
21
 
22
22
  end
@@ -24,12 +24,12 @@ describe Mongoid::Associations::HasOneAssociation do
24
24
  context "when setting values" do
25
25
 
26
26
  it "delegates to the document" do
27
- @association.first_name = "Test"
28
- @association.first_name.should == "Test"
27
+ @association.name = "Jack and Coke"
28
+ @association.name.should == "Jack and Coke"
29
29
  end
30
30
 
31
31
  end
32
32
 
33
33
  end
34
34
 
35
- end
35
+ end
@@ -21,8 +21,8 @@ describe Mongoid::Document do
21
21
  context "when attributes are equal" do
22
22
 
23
23
  before do
24
- @document = Person.new(:title => "Sir")
25
- @other = Person.new(:title => "Sir")
24
+ @document = Person.new(:_id => 1, :title => "Sir")
25
+ @other = Person.new(:_id => 1, :title => "Sir")
26
26
  end
27
27
 
28
28
  it "returns true" do
@@ -219,7 +219,7 @@ describe Mongoid::Document do
219
219
 
220
220
  it "finds the first document from the collection and instantiates it" do
221
221
  @collection.expects(:find_one).with({ :test => "Test" }, {}).returns(@attributes)
222
- Person.first(:conditions => {:test => "Test"}).attributes.should == @attributes
222
+ Person.first(:conditions => {:test => "Test"}).attributes.except(:_id).should == @attributes
223
223
  end
224
224
 
225
225
  end
@@ -228,7 +228,7 @@ describe Mongoid::Document do
228
228
 
229
229
  it "finds the first document from the collection and instantiates it" do
230
230
  @collection.expects(:find_one).with(nil, {}).returns(@attributes)
231
- Person.first.attributes.should == @attributes
231
+ Person.first.attributes.except(:_id).should == @attributes
232
232
  end
233
233
 
234
234
  end
@@ -5,10 +5,29 @@ describe Mongoid::Extensions::Array::Conversions do
5
5
  describe "#mongoidize" do
6
6
 
7
7
  it "collects each of its attributes" do
8
- array = [Person.new(:title => "Sir"), Person.new(:title => "Madam")]
8
+ array = [
9
+ Person.new(:_id => 1, :title => "Sir"),
10
+ Person.new(:_id => 2, :title => "Madam")
11
+ ]
9
12
  array.mongoidize.should ==
10
- [HashWithIndifferentAccess.new({ :title => "Sir", :age => 100 }),
11
- HashWithIndifferentAccess.new({ :title => "Madam", :age => 100 })]
13
+ [ HashWithIndifferentAccess.new({ :_id => 1, :title => "Sir", :age => 100 }),
14
+ HashWithIndifferentAccess.new({ :_id => 2, :title => "Madam", :age => 100 }) ]
15
+ end
16
+
17
+ end
18
+
19
+ describe "#get" do
20
+
21
+ it "returns the array" do
22
+ Array.get(["test"]).should == ["test"]
23
+ end
24
+
25
+ end
26
+
27
+ describe "#set" do
28
+
29
+ it "returns the array" do
30
+ Array.set(["test"]).should == ["test"]
12
31
  end
13
32
 
14
33
  end
@@ -5,8 +5,8 @@ describe Mongoid::Extensions::Object::Conversions do
5
5
  describe "#mongoidize" do
6
6
 
7
7
  it "returns its attributes" do
8
- Person.new(:title => "Sir").mongoidize.should ==
9
- HashWithIndifferentAccess.new({ :title => "Sir", :age => 100 })
8
+ Person.new(:_id => 1, :title => "Sir").mongoidize.should ==
9
+ HashWithIndifferentAccess.new({ :_id => 1, :title => "Sir", :age => 100 })
10
10
  end
11
11
 
12
12
  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.5.6
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan