mongoid 0.9.6 → 0.9.7

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 (34) hide show
  1. data/VERSION +1 -1
  2. data/lib/mongoid.rb +2 -2
  3. data/lib/mongoid/associations.rb +16 -9
  4. data/lib/mongoid/associations/belongs_to.rb +29 -5
  5. data/lib/mongoid/associations/has_many.rb +12 -0
  6. data/lib/mongoid/associations/has_one.rb +29 -9
  7. data/lib/mongoid/associations/options.rb +5 -0
  8. data/lib/mongoid/associations/relates_to_many.rb +10 -0
  9. data/lib/mongoid/associations/relates_to_one.rb +24 -5
  10. data/lib/mongoid/commands.rb +8 -0
  11. data/lib/mongoid/commands/quick_save.rb +19 -0
  12. data/lib/mongoid/commands/save.rb +1 -1
  13. data/lib/mongoid/criteria.rb +8 -18
  14. data/lib/mongoid/document.rb +27 -59
  15. data/mongoid.gemspec +8 -9
  16. data/spec/integration/mongoid/associations_spec.rb +41 -0
  17. data/spec/integration/mongoid/document_spec.rb +0 -13
  18. data/spec/spec_helper.rb +1 -8
  19. data/spec/unit/mongoid/associations/belongs_to_spec.rb +34 -4
  20. data/spec/unit/mongoid/associations/has_many_spec.rb +9 -0
  21. data/spec/unit/mongoid/associations/has_one_spec.rb +23 -2
  22. data/spec/unit/mongoid/associations/options_spec.rb +12 -1
  23. data/spec/unit/mongoid/associations/relates_to_many_spec.rb +22 -0
  24. data/spec/unit/mongoid/associations/relates_to_one_spec.rb +65 -1
  25. data/spec/unit/mongoid/associations_spec.rb +53 -1
  26. data/spec/unit/mongoid/commands/quick_save_spec.rb +24 -0
  27. data/spec/unit/mongoid/commands/save_spec.rb +2 -2
  28. data/spec/unit/mongoid/commands_spec.rb +107 -102
  29. data/spec/unit/mongoid/criteria_spec.rb +33 -1
  30. metadata +7 -8
  31. data/lib/mongoid/associations/accessor.rb +0 -30
  32. data/lib/mongoid/associations/decorator.rb +0 -27
  33. data/spec/unit/mongoid/associations/accessor_spec.rb +0 -123
  34. data/spec/unit/mongoid/associations/decorator_spec.rb +0 -36
@@ -1,30 +0,0 @@
1
- # encoding: utf-8
2
- module Mongoid #:nodoc:
3
- module Associations #:nodoc:
4
- class Accessor #:nodoc:
5
- class << self
6
- # Gets an association, based on the type provided and
7
- # passes the name and document into the newly instantiated
8
- # association.
9
- def get(type, document, options)
10
- document ? type.new(document, options) : nil
11
- end
12
-
13
- # Set an object association. This is used to set the parent reference
14
- # in a +BelongsTo+, a child reference in a +HasOne+, or many child
15
- # references in a +HasMany+.
16
- #
17
- # Options:
18
- #
19
- # type: The association type
20
- # name: The name of the association
21
- # document: The base document to handle the access for.
22
- # object: The object that was passed in to the setter method.
23
- # options: optional options.
24
- def set(type, document, object, options)
25
- type.update(object, document, options)
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,27 +0,0 @@
1
- # encoding: utf-8
2
- module Mongoid #:nodoc:
3
- module Associations #:nodoc:
4
- module Decorator #:nodoc:
5
- def self.included(base)
6
- base.class_eval do
7
- attr_reader :document
8
-
9
- # Grabs all the public methods on the document and adds them
10
- # to the association class. This is preferred over method_missing
11
- # since we can ask the class for its methods and get an
12
- # accurate list.
13
- def decorate!
14
- meths = document.public_methods
15
- meths.each do |method|
16
- (class << self; self; end).class_eval do
17
- define_method method do |*args|
18
- document.send method, *args
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,123 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Associations::Accessor do
4
-
5
- describe "#get" do
6
-
7
- before do
8
- @document = Person.new
9
- @object = stub
10
- end
11
-
12
- context "when type is has_many" do
13
-
14
- it "returns a HasMany" do
15
- @options = Mongoid::Associations::Options.new(:name => :addresses)
16
- association = Mongoid::Associations::Accessor.get(
17
- Mongoid::Associations::HasMany,
18
- @document,
19
- @options
20
- )
21
- association.should be_a_kind_of(Mongoid::Associations::HasMany)
22
- end
23
-
24
- end
25
-
26
- context "when type is has_one" do
27
-
28
- context "when document is not nil" do
29
-
30
- it "returns a HasOne" do
31
- @options = Mongoid::Associations::Options.new(:name => :name)
32
- association = Mongoid::Associations::Accessor.get(
33
- Mongoid::Associations::HasOne,
34
- @document,
35
- @options
36
- )
37
- association.should be_a_kind_of(Name)
38
- end
39
-
40
- end
41
-
42
- context "when document is nil" do
43
-
44
- it "returns nil" do
45
- @options = Mongoid::Associations::Options.new(:name => :name)
46
- association = Mongoid::Associations::Accessor.get(
47
- Mongoid::Associations::HasOne,
48
- nil,
49
- @options
50
- )
51
- association.should be_nil
52
- end
53
-
54
- end
55
-
56
- end
57
-
58
- context "when type is belongs_to" do
59
-
60
- it "returns a BelongsTo" do
61
- @options = Mongoid::Associations::Options.new(:name => :person)
62
- association = Mongoid::Associations::Accessor.get(
63
- Mongoid::Associations::BelongsTo,
64
- stub(:parent => @document),
65
- @options
66
- )
67
- association.should be_a_kind_of(Person)
68
- end
69
-
70
- end
71
-
72
- end
73
-
74
- describe "#set" do
75
-
76
- context "when type is has_many" do
77
-
78
- it "returns a HasMany" do
79
- @options = Mongoid::Associations::Options.new(:name => :addresses)
80
- Mongoid::Associations::HasMany.expects(:update).with(@document, @object, @options)
81
- Mongoid::Associations::Accessor.set(
82
- Mongoid::Associations::HasMany,
83
- @document,
84
- @object,
85
- @options
86
- )
87
- end
88
-
89
- end
90
-
91
- context "when type is has_one" do
92
-
93
- it "returns a HasOne" do
94
- @options = Mongoid::Associations::Options.new(:name => :name)
95
- Mongoid::Associations::HasOne.expects(:update).with(@document, @object, @options)
96
- Mongoid::Associations::Accessor.set(
97
- Mongoid::Associations::HasOne,
98
- @document,
99
- @object,
100
- @options
101
- )
102
- end
103
-
104
- end
105
-
106
- context "when type is belongs_to" do
107
-
108
- it "returns a BelongsTo" do
109
- @options = Mongoid::Associations::Options.new(:name => :person)
110
- Mongoid::Associations::BelongsTo.expects(:update).with(@object, @document, @options)
111
- Mongoid::Associations::Accessor.set(
112
- Mongoid::Associations::BelongsTo,
113
- @document,
114
- @object,
115
- @options
116
- )
117
- end
118
-
119
- end
120
-
121
- end
122
-
123
- end
@@ -1,36 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Associations::Decorator do
4
-
5
- describe "#included" do
6
-
7
- before do
8
- @person = Person.new
9
- @decorated = Decorated.new(@person)
10
- end
11
-
12
- it "adds a document reader" do
13
- @decorated.should respond_to(:document)
14
- end
15
-
16
- it "adds a decorate! instance method" do
17
- @decorated.should respond_to(:decorate!)
18
- end
19
-
20
- end
21
-
22
- describe "#decorate!" do
23
-
24
- before do
25
- @person = Person.new
26
- @decorated = Decorated.new(@person)
27
- end
28
-
29
- it "adds all the documents methods to the class" do
30
- @decorated.decorate!
31
- @decorated.should respond_to(:title, :terms, :age, :addresses, :name, :save)
32
- end
33
-
34
- end
35
-
36
- end