mongoid 0.7.9 → 0.7.10

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.9
1
+ 0.7.10
@@ -21,7 +21,8 @@
21
21
  require "rubygems"
22
22
 
23
23
  gem "activesupport", "2.3.4"
24
- gem "mongo", "0.16"
24
+ gem "mongo", "0.17"
25
+ gem "mongo_ext", "0.17"
25
26
  gem "durran-validatable", "1.8.2"
26
27
  gem "will_paginate", "2.3.11"
27
28
 
@@ -40,6 +41,7 @@ require "mongoid/commands"
40
41
  require "mongoid/criteria"
41
42
  require "mongoid/extensions"
42
43
  require "mongoid/field"
44
+ require "mongoid/options"
43
45
  require "mongoid/timestamps"
44
46
  require "mongoid/versioning"
45
47
  require "mongoid/document"
@@ -30,7 +30,7 @@ module Mongoid # :nodoc:
30
30
  #
31
31
  # Options:
32
32
  #
33
- # association_name: A +Symbol+ that matches the name of the parent class.
33
+ # name: A +Symbol+ that matches the name of the parent class.
34
34
  #
35
35
  # Example:
36
36
  #
@@ -41,9 +41,9 @@ module Mongoid # :nodoc:
41
41
  # class Address < Mongoid::Document
42
42
  # belongs_to :person
43
43
  # end
44
- def belongs_to(association_name, options = {})
44
+ def belongs_to(name, options = {})
45
45
  @embedded = true
46
- add_association(Associations::BelongsTo, association_name, options)
46
+ add_association(Associations::BelongsTo, Options.new(options.merge(:association_name => name)))
47
47
  end
48
48
 
49
49
  # Adds the association from a parent document to its children. The name
@@ -52,7 +52,7 @@ module Mongoid # :nodoc:
52
52
  #
53
53
  # Options:
54
54
  #
55
- # association_name: A +Symbol+ that is the plural child class name.
55
+ # name: A +Symbol+ that is the plural child class name.
56
56
  #
57
57
  # Example:
58
58
  #
@@ -63,8 +63,8 @@ module Mongoid # :nodoc:
63
63
  # class Address < Mongoid::Document
64
64
  # belongs_to :person
65
65
  # end
66
- def has_many(association_name, options = {})
67
- add_association(Associations::HasMany, association_name, options)
66
+ def has_many(name, options = {})
67
+ add_association(Associations::HasMany, Options.new(options.merge(:association_name => name)))
68
68
  end
69
69
 
70
70
  # Adds the association from a parent document to its child. The name
@@ -73,7 +73,7 @@ module Mongoid # :nodoc:
73
73
  #
74
74
  # Options:
75
75
  #
76
- # association_name: A +Symbol+ that is the plural child class name.
76
+ # name: A +Symbol+ that is the plural child class name.
77
77
  #
78
78
  # Example:
79
79
  #
@@ -84,22 +84,23 @@ module Mongoid # :nodoc:
84
84
  # class Address < Mongoid::Document
85
85
  # belongs_to :person
86
86
  # end
87
- def has_one(association_name, options = {})
88
- add_association(Associations::HasOne, association_name, options)
87
+ def has_one(name, options = {})
88
+ add_association(Associations::HasOne, Options.new(options.merge(:association_name => name)))
89
89
  end
90
90
 
91
91
  private
92
92
  # Adds the association to the associations hash with the type as the key,
93
93
  # then adds the accessors for the association.
94
- def add_association(type, name, options = {})
95
- associations[name] = type
94
+ def add_association(type, options)
95
+ associations[options.association_name] = type
96
+ name = options.association_name
96
97
  define_method(name) do
97
98
  return instance_variable_get("@#{name}") if instance_variable_defined?("@#{name}")
98
- proxy = Associations::Accessor.get(type, name, self, options)
99
+ proxy = Associations::Accessor.get(type, self, options)
99
100
  instance_variable_set("@#{name}", proxy)
100
101
  end
101
102
  define_method("#{name}=") do |object|
102
- proxy = Associations::Accessor.set(type, name, self, object, options)
103
+ proxy = Associations::Accessor.set(type, self, object, options)
103
104
  instance_variable_set("@#{name}", proxy)
104
105
  end
105
106
  end
@@ -5,8 +5,8 @@ module Mongoid #:nodoc:
5
5
  # Gets an association, based on the type provided and
6
6
  # passes the name and document into the newly instantiated
7
7
  # association.
8
- def get(type, name, document, options = {})
9
- document ? type.new(name, document, options) : nil
8
+ def get(type, document, options)
9
+ document ? type.new(document, options) : nil
10
10
  end
11
11
 
12
12
  # Set an object association. This is used to set the parent reference
@@ -20,8 +20,8 @@ module Mongoid #:nodoc:
20
20
  # document: The base document to handle the access for.
21
21
  # object: The object that was passed in to the setter method.
22
22
  # options: optional options.
23
- def set(type, name, document, object, options ={})
24
- type.update(object, document, name, options)
23
+ def set(type, document, object, options)
24
+ type.update(object, document, options)
25
25
  end
26
26
  end
27
27
  end
@@ -9,7 +9,7 @@ module Mongoid #:nodoc:
9
9
  #
10
10
  # All method calls on this object will then be delegated
11
11
  # to the internal document itself.
12
- def initialize(name, document, options = {})
12
+ def initialize(document, options)
13
13
  @document = document.parent
14
14
  decorate!
15
15
  end
@@ -25,7 +25,7 @@ module Mongoid #:nodoc:
25
25
  # Perform an update of the relationship of the parent and child. This
26
26
  # is initialized by setting a parent object as the association on the
27
27
  # +Document+. Will properly set a has_one or a has_many.
28
- def update(parent, child, name, options = {})
28
+ def update(parent, child, options)
29
29
  name = child.class.name.demodulize.downcase
30
30
  has_one = parent.associations[name]
31
31
  if has_one
@@ -59,11 +59,10 @@ module Mongoid #:nodoc:
59
59
  #
60
60
  # This then delegated all methods to the array class since this is
61
61
  # essentially a proxy to an array itself.
62
- def initialize(name, document, options = {})
62
+ def initialize(document, options)
63
63
  @parent = document
64
- @association_name = name
65
- class_name = options[:class_name]
66
- @klass = class_name ? class_name.constantize : @association_name.to_s.classify.constantize
64
+ @association_name = options.association_name
65
+ @klass = options.klass
67
66
  attributes = document.attributes[@association_name]
68
67
  @documents = attributes ? attributes.collect do |attribute|
69
68
  child = @klass.instantiate(attribute)
@@ -77,18 +76,17 @@ module Mongoid #:nodoc:
77
76
  # Perform an update of the relationship of the parent and child. This
78
77
  # is initialized by setting the has_many to the supplied +Enumerable+
79
78
  # and setting up the parentization.
80
- def update(children, parent, name, options = {})
81
- parent.attributes.delete(name)
82
- class_name = options[:class_name]
83
- klass = class_name ? class_name.constantize : name.to_s.classify.constantize
79
+ def update(children, parent, options)
80
+ parent.attributes.delete(options.association_name)
81
+ klass = options.klass
84
82
  children.each do |child|
85
83
  unless child.respond_to?(:parentize)
86
84
  child = klass.new(child)
87
85
  end
88
- child.parentize(parent, name)
86
+ child.parentize(parent, options.association_name)
89
87
  child.notify
90
88
  end
91
- new(name, parent, options)
89
+ new(parent, options)
92
90
  end
93
91
  end
94
92
 
@@ -13,25 +13,23 @@ module Mongoid #:nodoc:
13
13
  #
14
14
  # All method calls on this object will then be delegated
15
15
  # to the internal document itself.
16
- def initialize(name, document, options = {})
17
- class_name = options[:class_name]
18
- @klass = class_name ? class_name.constantize : name.to_s.camelize.constantize
19
- attributes = document.attributes[name]
16
+ def initialize(document, options)
17
+ @klass = options.klass
18
+ attributes = document.attributes[options.association_name]
20
19
  @document = klass.instantiate(attributes || {})
21
- @document.parentize(document, name)
20
+ @document.parentize(document, options.association_name)
22
21
  decorate!
23
22
  end
24
23
 
25
24
  class << self
26
25
  # Perform an update of the relationship of the parent and child. This
27
26
  # is initialized by setting the has_one to the supplied child.
28
- def update(child, parent, name, options = {})
27
+ def update(child, parent, options)
29
28
  unless child.respond_to?(:parentize)
30
- class_name = options[:class_name]
31
- klass = class_name ? class_name.constantize : name.to_s.camelize.constantize
29
+ klass = options.klass
32
30
  child = klass.new(child)
33
31
  end
34
- child.parentize(parent, name)
32
+ child.parentize(parent, options.association_name)
35
33
  child.notify
36
34
  child
37
35
  end
@@ -0,0 +1,30 @@
1
+ module Mongoid #:nodoc:
2
+ class Options #:nodoc:
3
+
4
+ # Create the new +Options+ object, which provides convenience methods for
5
+ # accessing values out of an options +Hash+.
6
+ def initialize(attributes = {})
7
+ @attributes = attributes
8
+ end
9
+
10
+ # Returns the association name of the options.
11
+ def association_name
12
+ @attributes[:association_name]
13
+ end
14
+
15
+ # Return a +Class+ for the options. If a class_name was provided, then the
16
+ # constantized class_name will be returned. If not, a constant based on the
17
+ # association name will be returned.
18
+ def klass
19
+ class_name = @attributes[:class_name]
20
+ association_name = @attributes[:association_name]
21
+ class_name ? class_name.constantize : association_name.to_s.classify.constantize
22
+ end
23
+
24
+ # Returns whether or not this association is polymorphic.
25
+ def polymorphic
26
+ @attributes[:polymorphic] == true
27
+ end
28
+
29
+ end
30
+ end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mongoid}
8
- s.version = "0.7.9"
8
+ s.version = "0.7.10"
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"]
@@ -55,6 +55,7 @@ Gem::Specification.new do |s|
55
55
  "lib/mongoid/extensions/symbol/inflections.rb",
56
56
  "lib/mongoid/extensions/time/conversions.rb",
57
57
  "lib/mongoid/field.rb",
58
+ "lib/mongoid/options.rb",
58
59
  "lib/mongoid/timestamps.rb",
59
60
  "lib/mongoid/versioning.rb",
60
61
  "mongoid.gemspec",
@@ -93,6 +94,7 @@ Gem::Specification.new do |s|
93
94
  "spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
94
95
  "spec/unit/mongoid/extensions/time/conversions_spec.rb",
95
96
  "spec/unit/mongoid/field_spec.rb",
97
+ "spec/unit/mongoid/options_spec.rb",
96
98
  "spec/unit/mongoid/timestamps_spec.rb",
97
99
  "spec/unit/mongoid/versioning_spec.rb"
98
100
  ]
@@ -135,6 +137,7 @@ Gem::Specification.new do |s|
135
137
  "spec/unit/mongoid/extensions/symbol/inflections_spec.rb",
136
138
  "spec/unit/mongoid/extensions/time/conversions_spec.rb",
137
139
  "spec/unit/mongoid/field_spec.rb",
140
+ "spec/unit/mongoid/options_spec.rb",
138
141
  "spec/unit/mongoid/timestamps_spec.rb",
139
142
  "spec/unit/mongoid/versioning_spec.rb"
140
143
  ]
@@ -12,7 +12,8 @@ describe Mongoid::Associations::Accessor do
12
12
  context "when type is has_many" do
13
13
 
14
14
  it "returns a HasMany" do
15
- association = Mongoid::Associations::Accessor.get(Mongoid::Associations::HasMany, :addresses, @document)
15
+ @options = Mongoid::Options.new(:association_name => :addresses)
16
+ association = Mongoid::Associations::Accessor.get(Mongoid::Associations::HasMany, @document, @options)
16
17
  association.should be_a_kind_of(Mongoid::Associations::HasMany)
17
18
  end
18
19
 
@@ -23,7 +24,8 @@ describe Mongoid::Associations::Accessor do
23
24
  context "when document is not nil" do
24
25
 
25
26
  it "returns a HasOne" do
26
- association = Mongoid::Associations::Accessor.get(Mongoid::Associations::HasOne, :name, @document)
27
+ @options = Mongoid::Options.new(:association_name => :name)
28
+ association = Mongoid::Associations::Accessor.get(Mongoid::Associations::HasOne, @document, @options)
27
29
  association.should be_a_kind_of(Name)
28
30
  end
29
31
 
@@ -32,7 +34,8 @@ describe Mongoid::Associations::Accessor do
32
34
  context "when document is nil" do
33
35
 
34
36
  it "returns nil" do
35
- association = Mongoid::Associations::Accessor.get(Mongoid::Associations::HasOne, :name, nil)
37
+ @options = Mongoid::Options.new(:association_name => :name)
38
+ association = Mongoid::Associations::Accessor.get(Mongoid::Associations::HasOne, nil, @options)
36
39
  association.should be_nil
37
40
  end
38
41
 
@@ -43,7 +46,8 @@ describe Mongoid::Associations::Accessor do
43
46
  context "when type is belongs_to" do
44
47
 
45
48
  it "returns a BelongsTo" do
46
- association = Mongoid::Associations::Accessor.get(Mongoid::Associations::BelongsTo, :person, stub(:parent => @document))
49
+ @options = Mongoid::Options.new(:association_name => :person)
50
+ association = Mongoid::Associations::Accessor.get(Mongoid::Associations::BelongsTo, stub(:parent => @document), @options)
47
51
  association.should be_a_kind_of(Person)
48
52
  end
49
53
 
@@ -56,8 +60,9 @@ describe Mongoid::Associations::Accessor do
56
60
  context "when type is has_many" do
57
61
 
58
62
  it "returns a HasMany" do
59
- Mongoid::Associations::HasMany.expects(:update).with(@document, @object, :addresses, {})
60
- Mongoid::Associations::Accessor.set(Mongoid::Associations::HasMany, :addresses, @document, @object)
63
+ @options = Mongoid::Options.new(:association_name => :addresses)
64
+ Mongoid::Associations::HasMany.expects(:update).with(@document, @object, @options)
65
+ Mongoid::Associations::Accessor.set(Mongoid::Associations::HasMany, @document, @object, @options)
61
66
  end
62
67
 
63
68
  end
@@ -65,8 +70,9 @@ describe Mongoid::Associations::Accessor do
65
70
  context "when type is has_one" do
66
71
 
67
72
  it "returns a HasOne" do
68
- Mongoid::Associations::HasOne.expects(:update).with(@document, @object, :name, {})
69
- Mongoid::Associations::Accessor.set(Mongoid::Associations::HasOne, :name, @document, @object)
73
+ @options = Mongoid::Options.new(:association_name => :name)
74
+ Mongoid::Associations::HasOne.expects(:update).with(@document, @object, @options)
75
+ Mongoid::Associations::Accessor.set(Mongoid::Associations::HasOne, @document, @object, @options)
70
76
  end
71
77
 
72
78
  end
@@ -74,8 +80,9 @@ describe Mongoid::Associations::Accessor do
74
80
  context "when type is belongs_to" do
75
81
 
76
82
  it "returns a BelongsTo" do
77
- Mongoid::Associations::BelongsTo.expects(:update).with(@object, @document, :person, {})
78
- Mongoid::Associations::Accessor.set(Mongoid::Associations::BelongsTo, :person, @document, @object)
83
+ @options = Mongoid::Options.new(:association_name => :person)
84
+ Mongoid::Associations::BelongsTo.expects(:update).with(@object, @document, @options)
85
+ Mongoid::Associations::Accessor.set(Mongoid::Associations::BelongsTo, @document, @object, @options)
79
86
  end
80
87
 
81
88
  end
@@ -7,7 +7,8 @@ describe Mongoid::Associations::BelongsTo do
7
7
  before do
8
8
  @parent = Name.new(:first_name => "Drexel")
9
9
  @document = stub(:parent => @parent)
10
- @association = Mongoid::Associations::BelongsTo.new(:person, @document)
10
+ @options = Mongoid::Options.new(:association_name => :person)
11
+ @association = Mongoid::Associations::BelongsTo.new(@document, @options)
11
12
  end
12
13
 
13
14
  context "when finding by id" do
@@ -26,7 +27,8 @@ describe Mongoid::Associations::BelongsTo do
26
27
  before do
27
28
  @parent = Name.new(:first_name => "Drexel")
28
29
  @document = stub(:parent => @parent)
29
- @association = Mongoid::Associations::BelongsTo.new(:person, @document)
30
+ @options = Mongoid::Options.new(:association_name => :person)
31
+ @association = Mongoid::Associations::BelongsTo.new(@document, @options)
30
32
  end
31
33
 
32
34
  context "when getting values" do
@@ -55,7 +57,8 @@ describe Mongoid::Associations::BelongsTo do
55
57
  before do
56
58
  @name = Name.new(:first_name => "Test", :last_name => "User")
57
59
  @person = Person.new(:title => "Mrs")
58
- Mongoid::Associations::BelongsTo.update(@person, @name, :person)
60
+ @options = Mongoid::Options.new(:association_name => :person)
61
+ Mongoid::Associations::BelongsTo.update(@person, @name, @options)
59
62
  end
60
63
 
61
64
  it "updates the parent document" do
@@ -14,7 +14,7 @@ describe Mongoid::Associations::HasMany do
14
14
  before do
15
15
  @address = Address.new(:street => "Madison Ave")
16
16
  @person = Person.new(:title => "Sir")
17
- Mongoid::Associations::HasMany.update([@address], @person, :addresses)
17
+ Mongoid::Associations::HasMany.update([@address], @person, Mongoid::Options.new(:association_name => :addresses))
18
18
  end
19
19
 
20
20
  it "parentizes the child document" do
@@ -31,7 +31,7 @@ describe Mongoid::Associations::HasMany do
31
31
  describe "#[]" do
32
32
 
33
33
  before do
34
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
34
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
35
35
  end
36
36
 
37
37
  context "when the index is present in the association" do
@@ -56,7 +56,7 @@ describe Mongoid::Associations::HasMany do
56
56
  describe "#<<" do
57
57
 
58
58
  before do
59
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
59
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
60
60
  @address = Address.new
61
61
  end
62
62
 
@@ -77,7 +77,7 @@ describe Mongoid::Associations::HasMany do
77
77
  describe "#concat" do
78
78
 
79
79
  before do
80
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
80
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
81
81
  @address = Address.new
82
82
  end
83
83
 
@@ -92,7 +92,7 @@ describe Mongoid::Associations::HasMany do
92
92
  describe "#push" do
93
93
 
94
94
  before do
95
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
95
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
96
96
  @address = Address.new
97
97
  end
98
98
 
@@ -107,7 +107,7 @@ describe Mongoid::Associations::HasMany do
107
107
  describe "#build" do
108
108
 
109
109
  before do
110
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
110
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
111
111
  end
112
112
 
113
113
  it "adds a new document to the array with the suppied parameters" do
@@ -128,7 +128,7 @@ describe Mongoid::Associations::HasMany do
128
128
  describe "#find" do
129
129
 
130
130
  before do
131
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
131
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
132
132
  end
133
133
 
134
134
  context "when finding all" do
@@ -155,7 +155,7 @@ describe Mongoid::Associations::HasMany do
155
155
  context "when there are elements in the array" do
156
156
 
157
157
  before do
158
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
158
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
159
159
  end
160
160
 
161
161
  it "returns the first element" do
@@ -168,7 +168,7 @@ describe Mongoid::Associations::HasMany do
168
168
  context "when the array is empty" do
169
169
 
170
170
  before do
171
- @association = Mongoid::Associations::HasMany.new(:addresses, Person.new)
171
+ @association = Mongoid::Associations::HasMany.new(Person.new, Mongoid::Options.new(:association_name => :addresses))
172
172
  end
173
173
 
174
174
  it "returns nil" do
@@ -184,7 +184,7 @@ describe Mongoid::Associations::HasMany do
184
184
  context "#length" do
185
185
 
186
186
  it "returns the length of the delegated array" do
187
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
187
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
188
188
  @association.length.should == 2
189
189
  end
190
190
 
@@ -195,7 +195,7 @@ describe Mongoid::Associations::HasMany do
195
195
  describe "#push" do
196
196
 
197
197
  before do
198
- @association = Mongoid::Associations::HasMany.new(:addresses, @document)
198
+ @association = Mongoid::Associations::HasMany.new(@document, Mongoid::Options.new(:association_name => :addresses))
199
199
  end
200
200
 
201
201
  it "appends the document to the end of the array" do
@@ -12,7 +12,7 @@ describe Mongoid::Associations::HasOne do
12
12
  before do
13
13
  @name = Name.new(:first_name => "Donald")
14
14
  @person = Person.new(:title => "Sir")
15
- Mongoid::Associations::HasOne.update(@name, @person, :name)
15
+ Mongoid::Associations::HasOne.update(@name, @person, Mongoid::Options.new(:association_name => :name))
16
16
  end
17
17
 
18
18
  it "parentizes the child document" do
@@ -29,7 +29,7 @@ describe Mongoid::Associations::HasOne do
29
29
  describe "#decorate!" do
30
30
 
31
31
  before do
32
- @association = Mongoid::Associations::HasOne.new(:mixed_drink, @document)
32
+ @association = Mongoid::Associations::HasOne.new(@document, Mongoid::Options.new(:association_name => :mixed_drink))
33
33
  end
34
34
 
35
35
  context "when getting values" do
@@ -30,7 +30,7 @@ describe Mongoid::Associations do
30
30
 
31
31
  it "sets the child attributes on the parent" do
32
32
  @person.attributes[:name].should ==
33
- HashWithIndifferentAccess.new({ :_id => "test-user", :first_name => "Test", :last_name => "User" })
33
+ { "_id" => "test-user", "first_name" => "Test", "last_name" => "User" }
34
34
  end
35
35
 
36
36
  end
@@ -0,0 +1,96 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "/../../spec_helper.rb"))
2
+
3
+ describe Mongoid::Options do
4
+
5
+ describe "#association_name" do
6
+
7
+ before do
8
+ @attributes = { :association_name => :addresses }
9
+ @options = Mongoid::Options.new(@attributes)
10
+ end
11
+
12
+ it "returns the association name" do
13
+ @options.association_name.should == :addresses
14
+ end
15
+
16
+ end
17
+
18
+ describe "#klass" do
19
+
20
+ context "when class_name provided" do
21
+
22
+ before do
23
+ @attributes = { :class_name => "Person" }
24
+ @options = Mongoid::Options.new(@attributes)
25
+ end
26
+
27
+ it "constantizes the class name" do
28
+ @options.klass.should == Person
29
+ end
30
+
31
+ end
32
+
33
+ context "when no class_name provided" do
34
+
35
+ context "when association name is singular" do
36
+
37
+ before do
38
+ @attributes = { :association_name => :person }
39
+ @options = Mongoid::Options.new(@attributes)
40
+ end
41
+
42
+ it "classifies and constantizes the association name" do
43
+ @options.klass.should == Person
44
+ end
45
+
46
+ end
47
+
48
+ context "when association name is plural" do
49
+
50
+ before do
51
+ @attributes = { :association_name => :people }
52
+ @options = Mongoid::Options.new(@attributes)
53
+ end
54
+
55
+ it "classifies and constantizes the association name" do
56
+ @options.klass.should == Person
57
+ end
58
+
59
+ end
60
+
61
+
62
+ end
63
+
64
+ end
65
+
66
+ describe "#polymorphic" do
67
+
68
+ context "when attribute provided" do
69
+
70
+ before do
71
+ @attributes = { :polymorphic => true }
72
+ @options = Mongoid::Options.new(@attributes)
73
+
74
+ end
75
+
76
+ it "returns the attribute" do
77
+ @options.polymorphic.should be_true
78
+ end
79
+
80
+ end
81
+
82
+ context "when attribute not provided" do
83
+
84
+ before do
85
+ @options = Mongoid::Options.new
86
+ end
87
+
88
+ it "returns false" do
89
+ @options.polymorphic.should be_false
90
+ end
91
+
92
+ end
93
+
94
+ end
95
+
96
+ 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.7.9
4
+ version: 0.7.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -111,6 +111,7 @@ files:
111
111
  - lib/mongoid/extensions/symbol/inflections.rb
112
112
  - lib/mongoid/extensions/time/conversions.rb
113
113
  - lib/mongoid/field.rb
114
+ - lib/mongoid/options.rb
114
115
  - lib/mongoid/timestamps.rb
115
116
  - lib/mongoid/versioning.rb
116
117
  - mongoid.gemspec
@@ -149,6 +150,7 @@ files:
149
150
  - spec/unit/mongoid/extensions/symbol/inflections_spec.rb
150
151
  - spec/unit/mongoid/extensions/time/conversions_spec.rb
151
152
  - spec/unit/mongoid/field_spec.rb
153
+ - spec/unit/mongoid/options_spec.rb
152
154
  - spec/unit/mongoid/timestamps_spec.rb
153
155
  - spec/unit/mongoid/versioning_spec.rb
154
156
  has_rdoc: true
@@ -213,5 +215,6 @@ test_files:
213
215
  - spec/unit/mongoid/extensions/symbol/inflections_spec.rb
214
216
  - spec/unit/mongoid/extensions/time/conversions_spec.rb
215
217
  - spec/unit/mongoid/field_spec.rb
218
+ - spec/unit/mongoid/options_spec.rb
216
219
  - spec/unit/mongoid/timestamps_spec.rb
217
220
  - spec/unit/mongoid/versioning_spec.rb