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,186 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::TimeConversions 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
|
+
Time.set(nil).should be_nil
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "when string is empty" do
|
|
14
|
+
it "returns nil" do
|
|
15
|
+
Time.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
|
+
Time.set(@time.to_s).utc_offset.should == 0
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "uses Time.parse - note that this returns the wrong day due sometimes since it ignores the time zone" do
|
|
25
|
+
Time.set(@time.to_s).should == Time.parse(@time.to_s).utc
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "returns a local date from the string due to a limitation in Time.parse" do
|
|
29
|
+
Time.set(@time.to_s).should == Time.local(@time.year, @time.month, @time.day, @time.hour, @time.min, @time.sec)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "when given a DateTime" do
|
|
34
|
+
it "returns a time" do
|
|
35
|
+
Time.set(@time.to_datetime).should == Time.utc(@time.year, @time.month, @time.day, @time.hour, @time.min, @time.sec)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "when given a Time" do
|
|
40
|
+
it "converts to a utc time" do
|
|
41
|
+
Time.set(@time).utc_offset.should == 0
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "strips miliseconds" do
|
|
45
|
+
Time.set(Time.now).usec.should == 0
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "returns utc times unchanged" do
|
|
49
|
+
Time.set(@time.utc).should == @time.utc
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "returns the time as utc" do
|
|
53
|
+
Time.set(@time).should == @time.utc
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
context "when given an ActiveSupport::TimeWithZone" do
|
|
58
|
+
before { @time = 1.hour.ago }
|
|
59
|
+
|
|
60
|
+
it "converts it to utc" do
|
|
61
|
+
Time.set(@time.in_time_zone("Alaska")).should == Time.at(@time.to_i).utc
|
|
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
|
+
Time.set(@date).should == Time.utc(@date.year, @date.month, @date.day)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
describe ".get" do
|
|
75
|
+
context "when the time zone is not defined" do
|
|
76
|
+
before { Mongoid::Config.instance.use_utc = false }
|
|
77
|
+
|
|
78
|
+
context "when the local time is not observing daylight saving" do
|
|
79
|
+
before { @time = Time.utc(2010, 11, 19) }
|
|
80
|
+
|
|
81
|
+
it "returns the local time" do
|
|
82
|
+
Time.get(@time).utc_offset.should == Time.local(2010, 11, 19).utc_offset
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
context "when the local time is observing daylight saving" do
|
|
87
|
+
before { @time = Time.utc(2010, 9, 19) }
|
|
88
|
+
|
|
89
|
+
it "returns the local time" do
|
|
90
|
+
Time.get(@time).should == @time.getlocal
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context "when we have a time close to midnight" do
|
|
95
|
+
before { @time = Time.local(2010, 11, 19, 0, 30).utc }
|
|
96
|
+
|
|
97
|
+
it "change it back to the equivalent local time" do
|
|
98
|
+
Time.get(@time).should == @time
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
context "when the time zone is defined as UTC" do
|
|
104
|
+
before { Mongoid::Config.instance.use_utc = true }
|
|
105
|
+
after { Mongoid::Config.instance.use_utc = false }
|
|
106
|
+
|
|
107
|
+
it "returns utc" do
|
|
108
|
+
Time.get(@time.dup.utc).utc_offset.should == 0
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
context "when time is nil" do
|
|
113
|
+
it "returns nil" do
|
|
114
|
+
Time.get(nil).should be_nil
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
describe "round trip - set then get" do
|
|
120
|
+
context "when the time zone is not defined" do
|
|
121
|
+
before { Mongoid::Config.instance.use_utc = false }
|
|
122
|
+
|
|
123
|
+
context "when the local time is not observing daylight saving" do
|
|
124
|
+
before { @time = Time.set(Time.local(2010, 11, 19)) }
|
|
125
|
+
|
|
126
|
+
it "returns the local time" do
|
|
127
|
+
Time.get(@time).utc_offset.should == Time.local(2010, 11, 19).utc_offset
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
context "when the local time is observing daylight saving" do
|
|
132
|
+
before { @time = Time.set(Time.local(2010, 9, 19)) }
|
|
133
|
+
|
|
134
|
+
it "returns the local time" do
|
|
135
|
+
Time.get(@time).utc_offset.should == Time.local(2010, 9, 19).utc_offset
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
context "when we have a time close to midnight" do
|
|
140
|
+
before do
|
|
141
|
+
@original_time = Time.local(2010, 11, 19, 0, 30)
|
|
142
|
+
@stored_time = Time.set(@original_time)
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "does not change a local time" do
|
|
146
|
+
Time.get(@stored_time).should == @original_time
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
context "when the time zone is defined as UTC" do
|
|
152
|
+
before { Mongoid::Config.instance.use_utc = true }
|
|
153
|
+
after { Mongoid::Config.instance.use_utc = false }
|
|
154
|
+
|
|
155
|
+
context "when the local time is not observing daylight saving" do
|
|
156
|
+
before { @time = Time.set(Time.local(2010, 11, 19)) }
|
|
157
|
+
|
|
158
|
+
it "returns UTC" do
|
|
159
|
+
Time.get(@time).utc_offset.should == 0
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
context "when the local time is observing daylight saving" do
|
|
164
|
+
before do
|
|
165
|
+
@time = Time.set(Time.local(2010, 9, 19))
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
it "returns UTC" do
|
|
169
|
+
Time.get(@time).utc_offset.should == 0
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
context "when we have a time close to midnight" do
|
|
174
|
+
before do
|
|
175
|
+
Time.zone = "Stockholm"
|
|
176
|
+
@time = Time.set(Time.zone.local(2010, 11, 19, 0, 30))
|
|
177
|
+
end
|
|
178
|
+
after { Time.zone = nil }
|
|
179
|
+
|
|
180
|
+
it "changes the day since UTC is behind Stockholm" do
|
|
181
|
+
Time.get(@time).day.should == 18
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe TrueClass do
|
|
4
|
+
|
|
5
|
+
describe "#is_a?" do
|
|
6
|
+
|
|
7
|
+
context "when provided a Boolean" do
|
|
8
|
+
|
|
9
|
+
it "returns true" do
|
|
10
|
+
true.is_a?(Boolean).should be_true
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context "when provided a FalseClass" do
|
|
15
|
+
|
|
16
|
+
it "returns false" do
|
|
17
|
+
true.is_a?(FalseClass).should be_false
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
context "when provided a TrueClass" do
|
|
22
|
+
|
|
23
|
+
it "returns true" do
|
|
24
|
+
true.is_a?(TrueClass).should be_true
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context "when provided an invalid class" do
|
|
29
|
+
|
|
30
|
+
it "returns false" do
|
|
31
|
+
false.is_a?(String).should be_false
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extras do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
@klass = Class.new do
|
|
7
|
+
include Mongoid::Extras
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe ".cache" do
|
|
12
|
+
|
|
13
|
+
before do
|
|
14
|
+
@klass.cache
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "sets the cached boolean on the class" do
|
|
18
|
+
@klass.cached.should be_true
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe ".cached?" do
|
|
24
|
+
|
|
25
|
+
context "when the class is cached" do
|
|
26
|
+
|
|
27
|
+
before do
|
|
28
|
+
@klass.cache
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "returns true" do
|
|
32
|
+
@klass.should be_cached
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context "when the class is not cached" do
|
|
37
|
+
|
|
38
|
+
it "returns false" do
|
|
39
|
+
@klass.should_not be_cached
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe "#cached?" do
|
|
46
|
+
|
|
47
|
+
before do
|
|
48
|
+
@klass.cache
|
|
49
|
+
@doc = @klass.new
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "returns the class cached? value" do
|
|
53
|
+
@doc.should be_cached
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe ".enslave" do
|
|
58
|
+
|
|
59
|
+
before do
|
|
60
|
+
@klass.enslave
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "sets the enslaved boolean on the class" do
|
|
64
|
+
@klass.enslaved.should be_true
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe ".enslaved?" do
|
|
70
|
+
|
|
71
|
+
context "when the class is enslaved" do
|
|
72
|
+
|
|
73
|
+
before do
|
|
74
|
+
@klass.enslave
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "returns true" do
|
|
78
|
+
@klass.should be_enslaved
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
context "when the class is not enslaved" do
|
|
83
|
+
|
|
84
|
+
it "returns false" do
|
|
85
|
+
@klass.should_not be_enslaved
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe "#enslaved?" do
|
|
92
|
+
|
|
93
|
+
before do
|
|
94
|
+
@klass.enslave
|
|
95
|
+
@doc = @klass.new
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "returns the class enslaved? value" do
|
|
99
|
+
@doc.should be_enslaved
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Factory do
|
|
4
|
+
|
|
5
|
+
describe ".build" do
|
|
6
|
+
|
|
7
|
+
context "when the _type attribute is present" do
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
@attributes = { "_type" => "Person", "title" => "Sir" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "instantiates based on the type" do
|
|
14
|
+
person = Mongoid::Factory.build(Person, @attributes)
|
|
15
|
+
person.title.should == "Sir"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context "when _type is not preset" do
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
@attributes = { "title" => "Sir" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "instantiates based on the type" do
|
|
26
|
+
person = Mongoid::Factory.build(Person, @attributes)
|
|
27
|
+
person.title.should == "Sir"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Field do
|
|
4
|
+
|
|
5
|
+
describe "#accessible?" do
|
|
6
|
+
|
|
7
|
+
context "when value is not set" do
|
|
8
|
+
|
|
9
|
+
before do
|
|
10
|
+
@field = Mongoid::Field.new(:name)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "defaults to true" do
|
|
14
|
+
@field.accessible?.should be_true
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context "when set to true" do
|
|
19
|
+
|
|
20
|
+
before do
|
|
21
|
+
@field = Mongoid::Field.new(:name, :accessible => true)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "returns true" do
|
|
25
|
+
@field.accessible?.should be_true
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context "when set to false" do
|
|
30
|
+
|
|
31
|
+
before do
|
|
32
|
+
@field = Mongoid::Field.new(:name, :accessible => false)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "returns false" do
|
|
36
|
+
@field.accessible?.should be_false
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe "#default" do
|
|
42
|
+
|
|
43
|
+
before do
|
|
44
|
+
@field = Mongoid::Field.new(:score, :type => Integer, :default => 0)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "returns the default option" do
|
|
48
|
+
@field.default.should == 0
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context "when the field is an array" do
|
|
52
|
+
|
|
53
|
+
before do
|
|
54
|
+
@field = Mongoid::Field.new(:vals, :type => Array, :default => [ "first" ])
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "dups the array" do
|
|
58
|
+
array = @field.default
|
|
59
|
+
array << "second"
|
|
60
|
+
@field.default.should == [ "first" ]
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context "when the field is a hash" do
|
|
65
|
+
|
|
66
|
+
before do
|
|
67
|
+
@field = Mongoid::Field.new(:vals, :type => Hash, :default => { :key => "value" })
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "dups the hash" do
|
|
71
|
+
hash = @field.default
|
|
72
|
+
hash[:key_two] = "value2"
|
|
73
|
+
@field.default.should == { :key => "value" }
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
describe "#initialize" do
|
|
80
|
+
|
|
81
|
+
context "when the field name is invalid" do
|
|
82
|
+
|
|
83
|
+
it "raises an error" do
|
|
84
|
+
lambda { Mongoid::Field.new(:collection) }.should raise_error(Mongoid::Errors::InvalidField)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "when the default value does not match the type" do
|
|
89
|
+
|
|
90
|
+
it "raises an error" do
|
|
91
|
+
lambda {
|
|
92
|
+
Mongoid::Field.new(:names, :type => Integer, :default => "Jacob")
|
|
93
|
+
}.should raise_error(Mongoid::Errors::InvalidType)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
describe "#name" do
|
|
99
|
+
|
|
100
|
+
before do
|
|
101
|
+
@field = Mongoid::Field.new(:score, :type => Integer, :default => 0)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "returns the name" do
|
|
105
|
+
@field.name.should == :score
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
describe "#type" do
|
|
111
|
+
|
|
112
|
+
before do
|
|
113
|
+
@field = Mongoid::Field.new(:name)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "defaults to String" do
|
|
117
|
+
@field.type.should == String
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
describe "#set" do
|
|
123
|
+
|
|
124
|
+
before do
|
|
125
|
+
@field = Mongoid::Field.new(:score, :default => 10, :type => Integer)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
context "nil is provided" do
|
|
129
|
+
|
|
130
|
+
it "returns the default value" do
|
|
131
|
+
@field.set(nil).should == nil
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
context "value is provided" do
|
|
137
|
+
|
|
138
|
+
it "sets the value" do
|
|
139
|
+
@field.set("30").should == 30
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe "#get" do
|
|
147
|
+
|
|
148
|
+
before do
|
|
149
|
+
@field = Mongoid::Field.new(:score, :default => 10, :type => Integer)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "returns the value" do
|
|
153
|
+
@field.get(30).should == 30
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
describe "#options" do
|
|
158
|
+
before do
|
|
159
|
+
@field = Mongoid::Field.new(:terrible_and_unsafe_html_goes_here, :sanitize => true, :hello => :goodbye)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "stores the arbitrary options" do
|
|
163
|
+
@field.options[:sanitize].should be_true
|
|
164
|
+
@field.options[:hello].should == :goodbye
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
end
|