mongo_mapper-unstable 2010.1.6 → 2010.1.12
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.
- data/VERSION +1 -1
- data/lib/mongo_mapper/descendant_appends.rb +44 -0
- data/lib/mongo_mapper/document.rb +54 -98
- data/lib/mongo_mapper/embedded_document.rb +28 -348
- data/lib/mongo_mapper/finder_options.rb +15 -33
- data/lib/mongo_mapper/plugins/associations/base.rb +121 -0
- data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +28 -0
- data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +23 -0
- data/lib/mongo_mapper/plugins/associations/collection.rb +21 -0
- data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +49 -0
- data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +139 -0
- data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +28 -0
- data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +117 -0
- data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +31 -0
- data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +23 -0
- data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +13 -0
- data/lib/mongo_mapper/plugins/associations/one_proxy.rb +66 -0
- data/lib/mongo_mapper/plugins/associations/proxy.rb +118 -0
- data/lib/mongo_mapper/plugins/associations.rb +104 -0
- data/lib/mongo_mapper/plugins/callbacks.rb +65 -0
- data/lib/mongo_mapper/plugins/clone.rb +13 -0
- data/lib/mongo_mapper/plugins/descendants.rb +16 -0
- data/lib/mongo_mapper/plugins/dirty.rb +119 -0
- data/lib/mongo_mapper/plugins/equality.rb +11 -0
- data/lib/mongo_mapper/plugins/identity_map.rb +66 -0
- data/lib/mongo_mapper/plugins/inspect.rb +14 -0
- data/lib/mongo_mapper/plugins/keys.rb +295 -0
- data/lib/mongo_mapper/plugins/logger.rb +17 -0
- data/lib/mongo_mapper/plugins/pagination.rb +85 -0
- data/lib/mongo_mapper/plugins/rails.rb +45 -0
- data/lib/mongo_mapper/plugins/serialization.rb +109 -0
- data/lib/mongo_mapper/plugins/validations.rb +48 -0
- data/lib/mongo_mapper/plugins.rb +19 -0
- data/lib/mongo_mapper/support.rb +36 -15
- data/lib/mongo_mapper.rb +23 -22
- data/performance/read_write.rb +52 -0
- data/specs.watchr +23 -2
- data/test/functional/associations/test_belongs_to_proxy.rb +1 -1
- data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +58 -39
- data/test/functional/associations/test_many_embedded_proxy.rb +103 -69
- data/test/functional/test_dirty.rb +1 -1
- data/test/functional/test_document.rb +25 -25
- data/test/functional/test_embedded_document.rb +66 -63
- data/test/functional/test_identity_map.rb +233 -0
- data/test/functional/test_modifiers.rb +14 -0
- data/test/functional/test_string_id_compatibility.rb +4 -4
- data/test/functional/test_validations.rb +13 -0
- data/test/models.rb +0 -39
- data/test/test_helper.rb +8 -2
- data/test/unit/associations/test_base.rb +1 -1
- data/test/unit/associations/test_proxy.rb +3 -3
- data/test/unit/test_descendant_appends.rb +71 -0
- data/test/unit/test_document.rb +35 -46
- data/test/unit/test_embedded_document.rb +218 -271
- data/test/unit/{test_key.rb → test_keys.rb} +0 -0
- data/test/unit/test_pagination.rb +10 -2
- data/test/unit/test_plugins.rb +42 -0
- data/test/unit/test_rails.rb +123 -0
- data/test/unit/{test_serializations.rb → test_serialization.rb} +0 -0
- data/test/unit/test_support.rb +10 -6
- data/test/unit/test_time_zones.rb +2 -2
- metadata +44 -31
- data/lib/mongo_mapper/associations/base.rb +0 -119
- data/lib/mongo_mapper/associations/belongs_to_polymorphic_proxy.rb +0 -26
- data/lib/mongo_mapper/associations/belongs_to_proxy.rb +0 -21
- data/lib/mongo_mapper/associations/collection.rb +0 -19
- data/lib/mongo_mapper/associations/in_array_proxy.rb +0 -137
- data/lib/mongo_mapper/associations/many_documents_as_proxy.rb +0 -26
- data/lib/mongo_mapper/associations/many_documents_proxy.rb +0 -115
- data/lib/mongo_mapper/associations/many_embedded_polymorphic_proxy.rb +0 -31
- data/lib/mongo_mapper/associations/many_embedded_proxy.rb +0 -54
- data/lib/mongo_mapper/associations/many_polymorphic_proxy.rb +0 -11
- data/lib/mongo_mapper/associations/one_proxy.rb +0 -64
- data/lib/mongo_mapper/associations/proxy.rb +0 -116
- data/lib/mongo_mapper/associations.rb +0 -78
- data/lib/mongo_mapper/callbacks.rb +0 -61
- data/lib/mongo_mapper/dirty.rb +0 -117
- data/lib/mongo_mapper/key.rb +0 -36
- data/lib/mongo_mapper/mongo_mapper.rb +0 -125
- data/lib/mongo_mapper/pagination.rb +0 -66
- data/lib/mongo_mapper/rails_compatibility/document.rb +0 -15
- data/lib/mongo_mapper/rails_compatibility/embedded_document.rb +0 -28
- data/lib/mongo_mapper/serialization.rb +0 -54
- data/lib/mongo_mapper/serializers/json_serializer.rb +0 -48
- data/lib/mongo_mapper/validations.rb +0 -39
- data/test/functional/test_rails_compatibility.rb +0 -25
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class DescendantAppendsTest < Test::Unit::TestCase
|
4
|
+
context "Document" do
|
5
|
+
should "default descendants to a new set" do
|
6
|
+
MongoMapper::Document.descendants.should be_instance_of(Set)
|
7
|
+
end
|
8
|
+
|
9
|
+
should 'allow extensions to Document to be appended' do
|
10
|
+
module Extension; def test_this_extension; end end
|
11
|
+
MongoMapper::Document.append_extensions(Extension)
|
12
|
+
article = Doc()
|
13
|
+
article.should respond_to(:test_this_extension)
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'add appended extensions to classes that include Document before they are added' do
|
17
|
+
module Extension; def test_this_extension; end end
|
18
|
+
article = Doc()
|
19
|
+
MongoMapper::Document.append_extensions(Extension)
|
20
|
+
article.should respond_to(:test_this_extension)
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'allow inclusions to Document to be appended' do
|
24
|
+
module Inclusion; def test_this_inclusion; end end
|
25
|
+
MongoMapper::Document.append_inclusions(Inclusion)
|
26
|
+
article = Doc()
|
27
|
+
article.new.should respond_to(:test_this_inclusion)
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'add appended inclusions to classes that include Document before they are added' do
|
31
|
+
module Inclusion; def test_this_inclusion; end end
|
32
|
+
article = Doc()
|
33
|
+
MongoMapper::Document.append_inclusions(Inclusion)
|
34
|
+
article.new.should respond_to(:test_this_inclusion)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "EmbeddedDocument" do
|
39
|
+
should "default descendants to a new set" do
|
40
|
+
MongoMapper::EmbeddedDocument.descendants.should be_instance_of(Set)
|
41
|
+
end
|
42
|
+
|
43
|
+
should 'allow extensions to Document to be appended' do
|
44
|
+
module Extension; def test_this_extension; end end
|
45
|
+
MongoMapper::EmbeddedDocument.append_extensions(Extension)
|
46
|
+
article = EDoc()
|
47
|
+
article.should respond_to(:test_this_extension)
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'add appended extensions to classes that include Document before they are added' do
|
51
|
+
module Extension; def test_this_extension; end end
|
52
|
+
article = EDoc()
|
53
|
+
MongoMapper::EmbeddedDocument.append_extensions(Extension)
|
54
|
+
article.should respond_to(:test_this_extension)
|
55
|
+
end
|
56
|
+
|
57
|
+
should 'allow inclusions to Document to be appended' do
|
58
|
+
module Inclusion; def test_this_inclusion; end end
|
59
|
+
MongoMapper::EmbeddedDocument.append_inclusions(Inclusion)
|
60
|
+
article = EDoc()
|
61
|
+
article.new.should respond_to(:test_this_inclusion)
|
62
|
+
end
|
63
|
+
|
64
|
+
should 'add appended inclusions to classes that include Document before they are added' do
|
65
|
+
module Inclusion; def test_this_inclusion; end end
|
66
|
+
article = EDoc()
|
67
|
+
MongoMapper::EmbeddedDocument.append_inclusions(Inclusion)
|
68
|
+
article.new.should respond_to(:test_this_inclusion)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/test/unit/test_document.rb
CHANGED
@@ -7,14 +7,14 @@ class DocumentTest < Test::Unit::TestCase
|
|
7
7
|
@document = Doc()
|
8
8
|
end
|
9
9
|
|
10
|
+
should "return false for embeddable" do
|
11
|
+
Doc().embeddable?.should be_false
|
12
|
+
end
|
13
|
+
|
10
14
|
should "have logger method" do
|
11
15
|
@document.logger.should == MongoMapper.logger
|
12
16
|
@document.logger.should be_instance_of(Logger)
|
13
17
|
end
|
14
|
-
|
15
|
-
should "track its descendants" do
|
16
|
-
MongoMapper::Document.descendants.should include(@document)
|
17
|
-
end
|
18
18
|
|
19
19
|
should "use default database by default" do
|
20
20
|
@document.database.should == MongoMapper.database
|
@@ -65,34 +65,6 @@ class DocumentTest < Test::Unit::TestCase
|
|
65
65
|
@document.collection.should be_instance_of(Mongo::Collection)
|
66
66
|
@document.collection.name.should == 'foobar'
|
67
67
|
end
|
68
|
-
|
69
|
-
should 'allow extensions to Document to be appended' do
|
70
|
-
module Extension; def test_this_extension; end end
|
71
|
-
MongoMapper::Document.append_extensions(Extension)
|
72
|
-
article = Doc()
|
73
|
-
article.should respond_to(:test_this_extension)
|
74
|
-
end
|
75
|
-
|
76
|
-
should 'add appended extensions to classes that include Document before they are added' do
|
77
|
-
module Extension; def test_this_extension; end end
|
78
|
-
article = Doc()
|
79
|
-
MongoMapper::Document.append_extensions(Extension)
|
80
|
-
article.should respond_to(:test_this_extension)
|
81
|
-
end
|
82
|
-
|
83
|
-
should 'allow inclusions to Document to be appended' do
|
84
|
-
module Inclusion; def test_this_inclusion; end end
|
85
|
-
MongoMapper::Document.append_inclusions(Inclusion)
|
86
|
-
article = Doc()
|
87
|
-
article.new.should respond_to(:test_this_inclusion)
|
88
|
-
end
|
89
|
-
|
90
|
-
should 'add appended inclusions to classes that include Document before they are added' do
|
91
|
-
module Inclusion; def test_this_inclusion; end end
|
92
|
-
article = Doc()
|
93
|
-
MongoMapper::Document.append_inclusions(Inclusion)
|
94
|
-
article.new.should respond_to(:test_this_inclusion)
|
95
|
-
end
|
96
68
|
end # Document class
|
97
69
|
|
98
70
|
context "Documents that inherit from other documents" do
|
@@ -102,16 +74,22 @@ class DocumentTest < Test::Unit::TestCase
|
|
102
74
|
Exit.collection_name.should == 'messages'
|
103
75
|
Chat.collection_name.should == 'messages'
|
104
76
|
end
|
105
|
-
|
77
|
+
|
106
78
|
should "default associations to inherited class" do
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
79
|
+
Message.associations.keys.should include("room")
|
80
|
+
Enter.associations.keys.should include("room")
|
81
|
+
Exit.associations.keys.should include("room")
|
82
|
+
Chat.associations.keys.should include("room")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context "descendants" do
|
87
|
+
should "default to nil" do
|
88
|
+
Enter.descendants.should be_nil
|
89
|
+
end
|
90
|
+
|
91
|
+
should "be recorded" do
|
92
|
+
Message.descendants.should == [Enter, Exit, Chat]
|
115
93
|
end
|
116
94
|
end
|
117
95
|
|
@@ -123,6 +101,16 @@ class DocumentTest < Test::Unit::TestCase
|
|
123
101
|
end
|
124
102
|
end
|
125
103
|
|
104
|
+
should "create id during initialization" do
|
105
|
+
@document.new._id.should be_instance_of(Mongo::ObjectID)
|
106
|
+
end
|
107
|
+
|
108
|
+
should "have to_param that is string representation of id" do
|
109
|
+
doc = @document.new(:id => Mongo::ObjectID.new)
|
110
|
+
doc.to_param.should == doc.id.to_s
|
111
|
+
doc.to_param.should be_instance_of(String)
|
112
|
+
end
|
113
|
+
|
126
114
|
should "have access to logger" do
|
127
115
|
doc = @document.new
|
128
116
|
doc.logger.should == @document.logger
|
@@ -149,10 +137,6 @@ class DocumentTest < Test::Unit::TestCase
|
|
149
137
|
end
|
150
138
|
|
151
139
|
context "root document" do
|
152
|
-
should "have a nil _root_document" do
|
153
|
-
@document.new._root_document.should be_nil
|
154
|
-
end
|
155
|
-
|
156
140
|
should "set self to the root document on embedded documents" do
|
157
141
|
klass = Doc()
|
158
142
|
pets = EDoc()
|
@@ -178,7 +162,7 @@ class DocumentTest < Test::Unit::TestCase
|
|
178
162
|
end
|
179
163
|
|
180
164
|
context "clone" do
|
181
|
-
should "
|
165
|
+
should "be new" do
|
182
166
|
doc = @document.create(:name => "foo", :age => 27)
|
183
167
|
clone = doc.clone
|
184
168
|
clone.should be_new
|
@@ -192,6 +176,11 @@ class DocumentTest < Test::Unit::TestCase
|
|
192
176
|
end
|
193
177
|
end
|
194
178
|
|
179
|
+
should "call inspect on the document's attributes instead of to_s when inspecting the document" do
|
180
|
+
doc = @document.new(:animals => %w(dog cat))
|
181
|
+
doc.inspect.should include(%(animals: ["dog", "cat"]))
|
182
|
+
end
|
183
|
+
|
195
184
|
context "equality" do
|
196
185
|
setup do
|
197
186
|
@oid = Mongo::ObjectID.new
|