mongoid-locomotive 2.0.0.beta9
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/MIT_LICENSE +20 -0
- data/README.rdoc +47 -0
- data/lib/mongoid.rb +141 -0
- data/lib/mongoid/associations.rb +306 -0
- data/lib/mongoid/associations/embedded_in.rb +74 -0
- data/lib/mongoid/associations/embeds_many.rb +280 -0
- data/lib/mongoid/associations/embeds_one.rb +97 -0
- data/lib/mongoid/associations/foreign_key.rb +35 -0
- data/lib/mongoid/associations/meta_data.rb +38 -0
- data/lib/mongoid/associations/options.rb +62 -0
- data/lib/mongoid/associations/proxy.rb +33 -0
- data/lib/mongoid/associations/referenced_in.rb +59 -0
- data/lib/mongoid/associations/references_many.rb +245 -0
- data/lib/mongoid/associations/references_many_as_array.rb +78 -0
- data/lib/mongoid/associations/references_one.rb +99 -0
- data/lib/mongoid/atomicity.rb +55 -0
- data/lib/mongoid/attributes.rb +242 -0
- data/lib/mongoid/callbacks.rb +21 -0
- data/lib/mongoid/collection.rb +120 -0
- data/lib/mongoid/collections.rb +71 -0
- data/lib/mongoid/collections/cyclic_iterator.rb +34 -0
- data/lib/mongoid/collections/master.rb +29 -0
- data/lib/mongoid/collections/operations.rb +41 -0
- data/lib/mongoid/collections/slaves.rb +45 -0
- data/lib/mongoid/components.rb +34 -0
- data/lib/mongoid/config.rb +263 -0
- data/lib/mongoid/contexts.rb +24 -0
- data/lib/mongoid/contexts/enumerable.rb +156 -0
- data/lib/mongoid/contexts/ids.rb +25 -0
- data/lib/mongoid/contexts/mongo.rb +285 -0
- data/lib/mongoid/contexts/paging.rb +50 -0
- data/lib/mongoid/criteria.rb +248 -0
- data/lib/mongoid/criterion/complex.rb +21 -0
- data/lib/mongoid/criterion/exclusion.rb +65 -0
- data/lib/mongoid/criterion/inclusion.rb +110 -0
- data/lib/mongoid/criterion/optional.rb +189 -0
- data/lib/mongoid/cursor.rb +81 -0
- data/lib/mongoid/deprecation.rb +21 -0
- data/lib/mongoid/dirty.rb +252 -0
- data/lib/mongoid/document.rb +210 -0
- data/lib/mongoid/errors.rb +131 -0
- data/lib/mongoid/extensions.rb +115 -0
- data/lib/mongoid/extensions/array/accessors.rb +17 -0
- data/lib/mongoid/extensions/array/assimilation.rb +26 -0
- data/lib/mongoid/extensions/array/conversions.rb +23 -0
- data/lib/mongoid/extensions/array/parentization.rb +13 -0
- data/lib/mongoid/extensions/big_decimal/conversions.rb +19 -0
- data/lib/mongoid/extensions/binary/conversions.rb +17 -0
- data/lib/mongoid/extensions/boolean/conversions.rb +27 -0
- data/lib/mongoid/extensions/date/conversions.rb +24 -0
- data/lib/mongoid/extensions/datetime/conversions.rb +12 -0
- data/lib/mongoid/extensions/false_class/equality.rb +13 -0
- data/lib/mongoid/extensions/float/conversions.rb +20 -0
- data/lib/mongoid/extensions/hash/accessors.rb +42 -0
- data/lib/mongoid/extensions/hash/assimilation.rb +40 -0
- data/lib/mongoid/extensions/hash/conversions.rb +42 -0
- data/lib/mongoid/extensions/hash/criteria_helpers.rb +20 -0
- data/lib/mongoid/extensions/hash/scoping.rb +12 -0
- data/lib/mongoid/extensions/integer/conversions.rb +20 -0
- data/lib/mongoid/extensions/nil/assimilation.rb +17 -0
- data/lib/mongoid/extensions/object/conversions.rb +21 -0
- data/lib/mongoid/extensions/objectid/conversions.rb +15 -0
- data/lib/mongoid/extensions/proc/scoping.rb +12 -0
- data/lib/mongoid/extensions/set/conversions.rb +20 -0
- data/lib/mongoid/extensions/string/conversions.rb +15 -0
- data/lib/mongoid/extensions/string/inflections.rb +97 -0
- data/lib/mongoid/extensions/symbol/inflections.rb +40 -0
- data/lib/mongoid/extensions/time_conversions.rb +35 -0
- data/lib/mongoid/extensions/true_class/equality.rb +13 -0
- data/lib/mongoid/extras.rb +61 -0
- data/lib/mongoid/factory.rb +20 -0
- data/lib/mongoid/field.rb +83 -0
- data/lib/mongoid/fields.rb +62 -0
- data/lib/mongoid/finders.rb +145 -0
- data/lib/mongoid/hierarchy.rb +74 -0
- data/lib/mongoid/identity.rb +47 -0
- data/lib/mongoid/indexes.rb +27 -0
- data/lib/mongoid/javascript.rb +21 -0
- data/lib/mongoid/javascript/functions.yml +37 -0
- data/lib/mongoid/logger.rb +19 -0
- data/lib/mongoid/matchers.rb +35 -0
- data/lib/mongoid/matchers/all.rb +11 -0
- data/lib/mongoid/matchers/default.rb +26 -0
- data/lib/mongoid/matchers/exists.rb +13 -0
- data/lib/mongoid/matchers/gt.rb +11 -0
- data/lib/mongoid/matchers/gte.rb +11 -0
- data/lib/mongoid/matchers/in.rb +11 -0
- data/lib/mongoid/matchers/lt.rb +11 -0
- data/lib/mongoid/matchers/lte.rb +11 -0
- data/lib/mongoid/matchers/ne.rb +11 -0
- data/lib/mongoid/matchers/nin.rb +11 -0
- data/lib/mongoid/matchers/size.rb +11 -0
- data/lib/mongoid/memoization.rb +33 -0
- data/lib/mongoid/named_scope.rb +37 -0
- data/lib/mongoid/paranoia.rb +106 -0
- data/lib/mongoid/paths.rb +61 -0
- data/lib/mongoid/persistence.rb +216 -0
- data/lib/mongoid/persistence/command.rb +39 -0
- data/lib/mongoid/persistence/insert.rb +48 -0
- data/lib/mongoid/persistence/insert_embedded.rb +44 -0
- data/lib/mongoid/persistence/remove.rb +39 -0
- data/lib/mongoid/persistence/remove_all.rb +38 -0
- data/lib/mongoid/persistence/remove_embedded.rb +50 -0
- data/lib/mongoid/persistence/update.rb +71 -0
- data/lib/mongoid/railtie.rb +67 -0
- data/lib/mongoid/railties/database.rake +60 -0
- data/lib/mongoid/scope.rb +75 -0
- data/lib/mongoid/state.rb +32 -0
- data/lib/mongoid/timestamps.rb +27 -0
- data/lib/mongoid/validations.rb +51 -0
- data/lib/mongoid/validations/associated.rb +32 -0
- data/lib/mongoid/validations/locale/en.yml +5 -0
- data/lib/mongoid/validations/uniqueness.rb +56 -0
- data/lib/mongoid/version.rb +4 -0
- data/lib/mongoid/versioning.rb +26 -0
- data/lib/rails/generators/mongoid/config/config_generator.rb +25 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
- data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
- data/lib/rails/generators/mongoid_generator.rb +61 -0
- data/spec/integration/mongoid/association_attributes_spec.rb +71 -0
- data/spec/integration/mongoid/associations_spec.rb +768 -0
- data/spec/integration/mongoid/attributes_spec.rb +59 -0
- data/spec/integration/mongoid/callback_spec.rb +33 -0
- data/spec/integration/mongoid/contexts/enumerable_spec.rb +33 -0
- data/spec/integration/mongoid/criteria_spec.rb +281 -0
- data/spec/integration/mongoid/dirty_spec.rb +85 -0
- data/spec/integration/mongoid/document_spec.rb +741 -0
- data/spec/integration/mongoid/extensions_spec.rb +22 -0
- data/spec/integration/mongoid/finders_spec.rb +119 -0
- data/spec/integration/mongoid/inheritance_spec.rb +171 -0
- data/spec/integration/mongoid/named_scope_spec.rb +58 -0
- data/spec/integration/mongoid/paranoia_spec.rb +44 -0
- data/spec/integration/mongoid/persistence/update_spec.rb +46 -0
- data/spec/integration/mongoid/persistence_spec.rb +311 -0
- data/spec/integration/mongoid/validations/uniqueness_spec.rb +206 -0
- data/spec/models/account.rb +5 -0
- data/spec/models/address.rb +40 -0
- data/spec/models/agent.rb +7 -0
- data/spec/models/animal.rb +15 -0
- data/spec/models/answer.rb +4 -0
- data/spec/models/callbacks.rb +47 -0
- data/spec/models/category.rb +13 -0
- data/spec/models/comment.rb +10 -0
- data/spec/models/country_code.rb +6 -0
- data/spec/models/employer.rb +5 -0
- data/spec/models/favorite.rb +8 -0
- data/spec/models/game.rb +9 -0
- data/spec/models/inheritance.rb +72 -0
- data/spec/models/location.rb +5 -0
- data/spec/models/login.rb +6 -0
- data/spec/models/mixed_drink.rb +4 -0
- data/spec/models/name.rb +13 -0
- data/spec/models/namespacing.rb +11 -0
- data/spec/models/paranoid_post.rb +18 -0
- data/spec/models/parents.rb +32 -0
- data/spec/models/patient.rb +15 -0
- data/spec/models/person.rb +106 -0
- data/spec/models/pet.rb +7 -0
- data/spec/models/pet_owner.rb +6 -0
- data/spec/models/phone.rb +7 -0
- data/spec/models/post.rb +25 -0
- data/spec/models/preference.rb +7 -0
- data/spec/models/question.rb +8 -0
- data/spec/models/survey.rb +6 -0
- data/spec/models/translation.rb +5 -0
- data/spec/models/user.rb +6 -0
- data/spec/models/user_accout.rb +5 -0
- data/spec/models/vet_visit.rb +5 -0
- data/spec/models/video.rb +5 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/unit/mongoid/associations/embedded_in_spec.rb +193 -0
- data/spec/unit/mongoid/associations/embeds_many_spec.rb +626 -0
- data/spec/unit/mongoid/associations/embeds_one_spec.rb +287 -0
- data/spec/unit/mongoid/associations/foreign_key_spec.rb +90 -0
- data/spec/unit/mongoid/associations/meta_data_spec.rb +110 -0
- data/spec/unit/mongoid/associations/options_spec.rb +215 -0
- data/spec/unit/mongoid/associations/referenced_in_spec.rb +145 -0
- data/spec/unit/mongoid/associations/references_many_as_array_spec.rb +424 -0
- data/spec/unit/mongoid/associations/references_many_spec.rb +502 -0
- data/spec/unit/mongoid/associations/references_one_spec.rb +204 -0
- data/spec/unit/mongoid/associations_spec.rb +688 -0
- data/spec/unit/mongoid/atomicity_spec.rb +164 -0
- data/spec/unit/mongoid/attributes_spec.rb +646 -0
- data/spec/unit/mongoid/callbacks_spec.rb +85 -0
- data/spec/unit/mongoid/collection_spec.rb +187 -0
- data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +75 -0
- data/spec/unit/mongoid/collections/master_spec.rb +41 -0
- data/spec/unit/mongoid/collections/slaves_spec.rb +81 -0
- data/spec/unit/mongoid/collections_spec.rb +98 -0
- data/spec/unit/mongoid/config_spec.rb +298 -0
- data/spec/unit/mongoid/contexts/enumerable_spec.rb +447 -0
- data/spec/unit/mongoid/contexts/mongo_spec.rb +703 -0
- data/spec/unit/mongoid/contexts_spec.rb +25 -0
- data/spec/unit/mongoid/criteria_spec.rb +873 -0
- data/spec/unit/mongoid/criterion/complex_spec.rb +17 -0
- data/spec/unit/mongoid/criterion/exclusion_spec.rb +121 -0
- data/spec/unit/mongoid/criterion/inclusion_spec.rb +274 -0
- data/spec/unit/mongoid/criterion/optional_spec.rb +483 -0
- data/spec/unit/mongoid/cursor_spec.rb +80 -0
- data/spec/unit/mongoid/deprecation_spec.rb +24 -0
- data/spec/unit/mongoid/dirty_spec.rb +430 -0
- data/spec/unit/mongoid/document_spec.rb +623 -0
- data/spec/unit/mongoid/errors_spec.rb +154 -0
- data/spec/unit/mongoid/extensions/array/accessors_spec.rb +50 -0
- data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +24 -0
- data/spec/unit/mongoid/extensions/array/conversions_spec.rb +52 -0
- data/spec/unit/mongoid/extensions/array/parentization_spec.rb +20 -0
- data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +36 -0
- data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +22 -0
- data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +49 -0
- data/spec/unit/mongoid/extensions/date/conversions_spec.rb +145 -0
- data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +14 -0
- data/spec/unit/mongoid/extensions/false_class/equality_spec.rb +35 -0
- data/spec/unit/mongoid/extensions/float/conversions_spec.rb +61 -0
- data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +184 -0
- data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +59 -0
- data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +35 -0
- data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +17 -0
- data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +14 -0
- data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +61 -0
- data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +29 -0
- data/spec/unit/mongoid/extensions/object/conversions_spec.rb +44 -0
- data/spec/unit/mongoid/extensions/objectid/conversions_spec.rb +22 -0
- data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +34 -0
- data/spec/unit/mongoid/extensions/set/conversions_spec.rb +21 -0
- data/spec/unit/mongoid/extensions/string/conversions_spec.rb +28 -0
- data/spec/unit/mongoid/extensions/string/inflections_spec.rb +208 -0
- data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +107 -0
- data/spec/unit/mongoid/extensions/time_conversions_spec.rb +186 -0
- data/spec/unit/mongoid/extensions/true_class/equality_spec.rb +35 -0
- data/spec/unit/mongoid/extras_spec.rb +102 -0
- data/spec/unit/mongoid/factory_spec.rb +31 -0
- data/spec/unit/mongoid/field_spec.rb +169 -0
- data/spec/unit/mongoid/fields_spec.rb +181 -0
- data/spec/unit/mongoid/finders_spec.rb +439 -0
- data/spec/unit/mongoid/hierarchy_spec.rb +68 -0
- data/spec/unit/mongoid/identity_spec.rb +109 -0
- data/spec/unit/mongoid/indexes_spec.rb +99 -0
- data/spec/unit/mongoid/javascript_spec.rb +48 -0
- data/spec/unit/mongoid/logger_spec.rb +38 -0
- data/spec/unit/mongoid/matchers/all_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/default_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/exists_spec.rb +56 -0
- data/spec/unit/mongoid/matchers/gt_spec.rb +39 -0
- data/spec/unit/mongoid/matchers/gte_spec.rb +49 -0
- data/spec/unit/mongoid/matchers/in_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/lt_spec.rb +39 -0
- data/spec/unit/mongoid/matchers/lte_spec.rb +49 -0
- data/spec/unit/mongoid/matchers/ne_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/nin_spec.rb +27 -0
- data/spec/unit/mongoid/matchers/size_spec.rb +27 -0
- data/spec/unit/mongoid/matchers_spec.rb +329 -0
- data/spec/unit/mongoid/memoization_spec.rb +75 -0
- data/spec/unit/mongoid/named_scope_spec.rb +123 -0
- data/spec/unit/mongoid/paranoia_spec.rb +108 -0
- data/spec/unit/mongoid/paths_spec.rb +272 -0
- data/spec/unit/mongoid/persistence/insert_embedded_spec.rb +154 -0
- data/spec/unit/mongoid/persistence/insert_spec.rb +144 -0
- data/spec/unit/mongoid/persistence/remove_all_spec.rb +82 -0
- data/spec/unit/mongoid/persistence/remove_embedded_spec.rb +152 -0
- data/spec/unit/mongoid/persistence/remove_spec.rb +89 -0
- data/spec/unit/mongoid/persistence/update_spec.rb +177 -0
- data/spec/unit/mongoid/persistence_spec.rb +452 -0
- data/spec/unit/mongoid/scope_spec.rb +240 -0
- data/spec/unit/mongoid/serialization_spec.rb +43 -0
- data/spec/unit/mongoid/state_spec.rb +94 -0
- data/spec/unit/mongoid/timestamps_spec.rb +30 -0
- data/spec/unit/mongoid/validations/associated_spec.rb +103 -0
- data/spec/unit/mongoid/validations/uniqueness_spec.rb +201 -0
- data/spec/unit/mongoid/validations_spec.rb +43 -0
- data/spec/unit/mongoid/versioning_spec.rb +41 -0
- data/spec/unit/mongoid_spec.rb +46 -0
- metadata +433 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Errors do
|
|
4
|
+
|
|
5
|
+
describe Mongoid::Errors::DocumentNotFound do
|
|
6
|
+
|
|
7
|
+
describe "#message" do
|
|
8
|
+
|
|
9
|
+
context "default" do
|
|
10
|
+
|
|
11
|
+
before do
|
|
12
|
+
@error = Mongoid::Errors::DocumentNotFound.new(Person, "3")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "contains document not found" do
|
|
16
|
+
@error.message.should include("Document not found")
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe Mongoid::Errors::InvalidOptions do
|
|
23
|
+
|
|
24
|
+
describe "#message" do
|
|
25
|
+
|
|
26
|
+
context "default" do
|
|
27
|
+
|
|
28
|
+
before do
|
|
29
|
+
@error = Mongoid::Errors::InvalidOptions.new
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "returns the class name" do
|
|
33
|
+
@error.message.should == @error.class.name
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe Mongoid::Errors::InvalidDatabase do
|
|
40
|
+
|
|
41
|
+
describe "#message" do
|
|
42
|
+
|
|
43
|
+
before do
|
|
44
|
+
@error = Mongoid::Errors::InvalidDatabase.new("Test")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "returns a message with the bad db object class" do
|
|
48
|
+
@error.message.should include("String")
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe Mongoid::Errors::InvalidType do
|
|
54
|
+
|
|
55
|
+
describe "#message" do
|
|
56
|
+
|
|
57
|
+
before do
|
|
58
|
+
@error = Mongoid::Errors::InvalidType.new(Array, "Test")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
it "returns a message with the bad type and supplied value" do
|
|
62
|
+
@error.message.should include("Array, but received a String")
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe Mongoid::Errors::UnsupportedVersion do
|
|
68
|
+
|
|
69
|
+
describe "#message" do
|
|
70
|
+
|
|
71
|
+
before do
|
|
72
|
+
@version = Mongo::ServerVersion.new("1.2.4")
|
|
73
|
+
@error = Mongoid::Errors::UnsupportedVersion.new(@version)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it "returns a message with the bad version and good version" do
|
|
77
|
+
@error.message.should ==
|
|
78
|
+
"MongoDB 1.2.4 not supported, please upgrade to #{Mongoid::MONGODB_VERSION}"
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe Mongoid::Errors::Validations do
|
|
84
|
+
|
|
85
|
+
describe "#message" do
|
|
86
|
+
|
|
87
|
+
context "default" do
|
|
88
|
+
|
|
89
|
+
before do
|
|
90
|
+
@errors = stub(:full_messages => [ "Error 1", "Error 2" ], :empty? => false)
|
|
91
|
+
@document = stub(:errors => @errors)
|
|
92
|
+
@error = Mongoid::Errors::Validations.new(@document)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "contains the errors' full messages" do
|
|
96
|
+
@error.message.should == "Validation Failed: Error 1, Error 2"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
it "allows access to the invalid document" do
|
|
100
|
+
@error.document.should == @document
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe Mongoid::Errors::InvalidCollection do
|
|
107
|
+
|
|
108
|
+
describe "#message" do
|
|
109
|
+
|
|
110
|
+
context "default" do
|
|
111
|
+
|
|
112
|
+
before do
|
|
113
|
+
@klass = Address
|
|
114
|
+
@error = Mongoid::Errors::InvalidCollection.new(@klass)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "contains class is not allowed" do
|
|
118
|
+
@error.message.should include("Address is not allowed")
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
describe Mongoid::Errors::InvalidField do
|
|
125
|
+
|
|
126
|
+
describe "#message" do
|
|
127
|
+
|
|
128
|
+
context "default" do
|
|
129
|
+
|
|
130
|
+
before do
|
|
131
|
+
@error = Mongoid::Errors::InvalidField.new("collection")
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "contains class is not allowed" do
|
|
135
|
+
@error.message.should include("field named 'collection' is not allowed")
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
describe Mongoid::Errors::TooManyNestedAttributeRecords do
|
|
142
|
+
describe "#message" do
|
|
143
|
+
context "default" do
|
|
144
|
+
before do
|
|
145
|
+
@error = Mongoid::Errors::TooManyNestedAttributeRecords.new('Favorites', 5)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "contains error message" do
|
|
149
|
+
@error.message.should include("Accept Nested Attributes for Favorites is limited to 5 records")
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Array::Accessors do
|
|
4
|
+
|
|
5
|
+
describe "#update" do
|
|
6
|
+
|
|
7
|
+
context "when the attributes exist" do
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
@array = [{ "_id" => 1, "name" => "James T. Kirk" }]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "overwrites with the new attributes" do
|
|
14
|
+
@array.update({ "_id" => 1, "name" => "Spock" })
|
|
15
|
+
@array.first["name"].should == "Spock"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context "when the attributes do not exist" do
|
|
21
|
+
|
|
22
|
+
before do
|
|
23
|
+
@array = [{ "_id" => 1, "name" => "James T. Kirk" }]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "appends the new attributes" do
|
|
27
|
+
@array.update({ "_id" => 2, "name" => "Scotty" })
|
|
28
|
+
@array.size.should == 2
|
|
29
|
+
@array.last["name"].should == "Scotty"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "when the new attribtues have no id" do
|
|
35
|
+
|
|
36
|
+
before do
|
|
37
|
+
@array = [{ "_id" => 1, :name => "James T. Kirk" }]
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "appends the new attributes" do
|
|
41
|
+
@array.update({"name" => "Scotty" })
|
|
42
|
+
@array.size.should == 2
|
|
43
|
+
@array.last["name"].should == "Scotty"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Array::Assimilation do
|
|
4
|
+
|
|
5
|
+
describe "#assimilate" do
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@address_one = { :street => "Circular Quay" }
|
|
9
|
+
@address_two = Address.new(:street => "King St.")
|
|
10
|
+
@parent = Person.new(:title => "Mr.")
|
|
11
|
+
@options = Mongoid::Associations::Options.new(:name => :addresses)
|
|
12
|
+
@child = [@address_one, @address_two]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "incorporates the hash into the object graph" do
|
|
16
|
+
@child.assimilate(@parent, @options)
|
|
17
|
+
@parent.addresses.size.should == 2
|
|
18
|
+
@parent.addresses.first.street.should == "Circular Quay"
|
|
19
|
+
@parent.addresses.last.street.should == "King St."
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Array::Conversions do
|
|
4
|
+
|
|
5
|
+
describe "#get" do
|
|
6
|
+
|
|
7
|
+
context "when the value is not an array" do
|
|
8
|
+
|
|
9
|
+
it "raises an error" do
|
|
10
|
+
lambda { Array.get("test") }.should raise_error(Mongoid::Errors::InvalidType)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "when the value is nil" do
|
|
15
|
+
|
|
16
|
+
it "returns nil" do
|
|
17
|
+
Array.get(nil).should be_nil
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context "when the value is an array" do
|
|
22
|
+
|
|
23
|
+
it "returns the array" do
|
|
24
|
+
Array.get(["test"]).should == ["test"]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe "#set" do
|
|
30
|
+
|
|
31
|
+
context "when the value is not an array" do
|
|
32
|
+
|
|
33
|
+
it "raises an error" do
|
|
34
|
+
lambda { Array.set("test") }.should raise_error(Mongoid::Errors::InvalidType)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "when the value is nil" do
|
|
39
|
+
|
|
40
|
+
it "returns nil" do
|
|
41
|
+
Array.get(nil).should be_nil
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context "when the value is an array" do
|
|
46
|
+
|
|
47
|
+
it "returns the array" do
|
|
48
|
+
Array.set(["test"]).should == ["test"]
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Array::Parentization do
|
|
4
|
+
|
|
5
|
+
describe "#parentize" do
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
@parent = stub
|
|
9
|
+
@child = mock
|
|
10
|
+
@array = [@child]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "sets the parent on each element" do
|
|
14
|
+
@child.expects(:parentize).with(@parent, :child)
|
|
15
|
+
@array.parentize(@parent, :child)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::BigDecimal::Conversions do
|
|
4
|
+
|
|
5
|
+
let(:number) do
|
|
6
|
+
BigDecimal.new("123456.789")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "#get" do
|
|
10
|
+
|
|
11
|
+
it "converts the string to a big decimal" do
|
|
12
|
+
BigDecimal.get("123456.789").should == number
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when nil" do
|
|
16
|
+
|
|
17
|
+
it "returns nil" do
|
|
18
|
+
BigDecimal.get(nil).should be_nil
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#set" do
|
|
24
|
+
|
|
25
|
+
it "converts the big decimal to a string" do
|
|
26
|
+
BigDecimal.set(number).should == "123456.789"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "when nil" do
|
|
30
|
+
|
|
31
|
+
it "returns nil" do
|
|
32
|
+
BigDecimal.set(nil).should be_nil
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Binary::Conversions do
|
|
4
|
+
|
|
5
|
+
let(:bin) do
|
|
6
|
+
Binary.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "#get" do
|
|
10
|
+
|
|
11
|
+
it "returns self" do
|
|
12
|
+
Binary.get(bin).should == bin
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "#set" do
|
|
17
|
+
|
|
18
|
+
it "returns self" do
|
|
19
|
+
Binary.set(bin).should == bin
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Boolean::Conversions do
|
|
4
|
+
|
|
5
|
+
describe ".set" do
|
|
6
|
+
|
|
7
|
+
context "when 'true'" do
|
|
8
|
+
|
|
9
|
+
it "returns true" do
|
|
10
|
+
Boolean.set("true").should be_true
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "when 'false'" do
|
|
15
|
+
|
|
16
|
+
it "returns false" do
|
|
17
|
+
Boolean.set("false").should be_false
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context "when 0" do
|
|
22
|
+
|
|
23
|
+
it "returns false" do
|
|
24
|
+
Boolean.set("0").should be_false
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "when 1" do
|
|
29
|
+
|
|
30
|
+
it "returns true" do
|
|
31
|
+
Boolean.set("1").should be_true
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context "when nil" do
|
|
36
|
+
|
|
37
|
+
it "returns nil" do
|
|
38
|
+
Boolean.set(nil).should be_nil
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe ".get" do
|
|
44
|
+
|
|
45
|
+
it "returns the boolean" do
|
|
46
|
+
Boolean.get(false).should be_false
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Date::Conversions do
|
|
4
|
+
before { @time = Time.local(2010, 11, 19) }
|
|
5
|
+
|
|
6
|
+
describe ".set" do
|
|
7
|
+
context "when given nil" do
|
|
8
|
+
it "returns nil" do
|
|
9
|
+
Date.set(nil).should be_nil
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "when string is empty" do
|
|
14
|
+
it "returns nil" do
|
|
15
|
+
Date.set("").should be_nil
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "when given a string" do
|
|
20
|
+
it "converts to a utc time" do
|
|
21
|
+
Date.set(@time.to_s).utc_offset.should == 0
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "returns the right day" do
|
|
25
|
+
Date.set(@time.to_s).day.should == @time.day
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns a utc date from the string" do
|
|
29
|
+
Date.set(@time.to_s).should == Time.utc(@time.year, @time.month, @time.day)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "when given a DateTime" do
|
|
34
|
+
it "returns a time" do
|
|
35
|
+
Date.set(@time.to_datetime).should == Time.utc(@time.year, @time.month, @time.day)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "when given a Time" do
|
|
40
|
+
it "converts to a utc time" do
|
|
41
|
+
Date.set(@time).utc_offset.should == 0
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "strips miliseconds" do
|
|
45
|
+
Date.set(Time.now).usec.should == 0
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "returns utc times the same day, but at midnight" do
|
|
49
|
+
Date.set(@time.utc).should == Time.utc(@time.utc.year, @time.utc.month, @time.utc.day)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "returns the date for the time" do
|
|
53
|
+
Date.set(@time).should == Time.utc(@time.year, @time.month, @time.day)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "when given an ActiveSupport::TimeWithZone" do
|
|
58
|
+
before { @time = @time.in_time_zone("Canberra") }
|
|
59
|
+
|
|
60
|
+
it "converts it to utc" do
|
|
61
|
+
Date.set(@time).should == Time.utc(@time.year, @time.month, @time.day)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "when given a Date" do
|
|
66
|
+
before { @date = Date.today }
|
|
67
|
+
|
|
68
|
+
it "converts to a utc time" do
|
|
69
|
+
Date.set(@date).should == Time.utc(@date.year, @date.month, @date.day)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
describe ".get" do
|
|
76
|
+
before { @time = Time.now.utc }
|
|
77
|
+
|
|
78
|
+
it "converts the time back to a date" do
|
|
79
|
+
Date.get(@time).should be_a_kind_of(Date)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
context "when the time zone is not defined" do
|
|
83
|
+
before do
|
|
84
|
+
Mongoid::Config.instance.use_utc = false
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context "when the local time is not observing daylight saving" do
|
|
88
|
+
before { @time = Time.utc(2010, 11, 19) }
|
|
89
|
+
|
|
90
|
+
it "returns the same day" do
|
|
91
|
+
Date.get(@time).day.should == 19
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
context "when the local time is observing daylight saving" do
|
|
96
|
+
before { @time = Time.utc(2010, 9, 19) }
|
|
97
|
+
|
|
98
|
+
it "returns the same day" do
|
|
99
|
+
Date.get(@time).day.should == 19
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context "when the time zone is defined as UTC" do
|
|
105
|
+
before { Mongoid::Config.instance.use_utc = true }
|
|
106
|
+
after { Mongoid::Config.instance.use_utc = false }
|
|
107
|
+
|
|
108
|
+
it "returns the same day" do
|
|
109
|
+
Date.get(@time.dup.utc).day.should == @time.day
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
context "when time is nil" do
|
|
114
|
+
it "returns nil" do
|
|
115
|
+
Date.get(nil).should be_nil
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
describe "round trip - set then get" do
|
|
121
|
+
context "when the time zone is not defined" do
|
|
122
|
+
before do
|
|
123
|
+
Mongoid::Config.instance.use_utc = false
|
|
124
|
+
Time.zone = "Stockholm"
|
|
125
|
+
end
|
|
126
|
+
after { Time.zone = nil }
|
|
127
|
+
|
|
128
|
+
context "when the local time is not observing daylight saving" do
|
|
129
|
+
before { @time = Date.set(Time.zone.local(2010, 11, 19, 0, 30)) }
|
|
130
|
+
|
|
131
|
+
it "does not change the day" do
|
|
132
|
+
Date.get(@time).day.should == 19
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
context "when the local time is observing daylight saving" do
|
|
137
|
+
before { @time = Date.set(Time.zone.local(2010, 9, 19, 0, 30)) }
|
|
138
|
+
|
|
139
|
+
it "does not change the day" do
|
|
140
|
+
Date.get(@time).day.should == 19
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|