mongoid 2.0.0.alpha → 2.0.0.beta.5

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 (216) hide show
  1. data/lib/mongoid.rb +11 -5
  2. data/lib/mongoid/associations.rb +112 -107
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/embedded_in.rb +12 -4
  5. data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
  6. data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
  7. data/lib/mongoid/associations/has_many_related.rb +51 -5
  8. data/lib/mongoid/associations/has_one_related.rb +9 -5
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +15 -6
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +34 -13
  13. data/lib/mongoid/callbacks.rb +1 -2
  14. data/lib/mongoid/collection.rb +4 -3
  15. data/lib/mongoid/collections.rb +41 -0
  16. data/lib/mongoid/collections/master.rb +3 -2
  17. data/lib/mongoid/collections/slaves.rb +3 -2
  18. data/lib/mongoid/components.rb +4 -1
  19. data/lib/mongoid/config.rb +163 -13
  20. data/lib/mongoid/contexts.rb +1 -2
  21. data/lib/mongoid/contexts/enumerable.rb +1 -1
  22. data/lib/mongoid/contexts/mongo.rb +1 -1
  23. data/lib/mongoid/contexts/paging.rb +10 -2
  24. data/lib/mongoid/criteria.rb +13 -22
  25. data/lib/mongoid/criterion/exclusion.rb +3 -3
  26. data/lib/mongoid/criterion/inclusion.rb +17 -0
  27. data/lib/mongoid/criterion/optional.rb +1 -1
  28. data/lib/mongoid/dirty.rb +253 -0
  29. data/lib/mongoid/document.rb +40 -85
  30. data/lib/mongoid/errors.rb +48 -1
  31. data/lib/mongoid/extensions.rb +11 -9
  32. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  33. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  34. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  35. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  36. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  37. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  38. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  39. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  40. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  41. data/lib/mongoid/extensions/object/conversions.rb +3 -3
  42. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  43. data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
  44. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  45. data/lib/mongoid/factory.rb +2 -1
  46. data/lib/mongoid/field.rb +15 -2
  47. data/lib/mongoid/fields.rb +1 -1
  48. data/lib/mongoid/identity.rb +3 -3
  49. data/lib/mongoid/indexes.rb +3 -3
  50. data/lib/mongoid/matchers.rb +1 -2
  51. data/lib/mongoid/memoization.rb +8 -2
  52. data/lib/mongoid/named_scope.rb +0 -5
  53. data/lib/mongoid/observable.rb +1 -1
  54. data/lib/mongoid/paths.rb +30 -22
  55. data/lib/mongoid/persistence.rb +218 -0
  56. data/lib/mongoid/persistence/command.rb +39 -0
  57. data/lib/mongoid/persistence/insert.rb +47 -0
  58. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  59. data/lib/mongoid/persistence/remove.rb +39 -0
  60. data/lib/mongoid/persistence/remove_all.rb +37 -0
  61. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  62. data/lib/mongoid/persistence/update.rb +63 -0
  63. data/lib/mongoid/railtie.rb +53 -0
  64. data/lib/mongoid/railties/database.rake +37 -0
  65. data/lib/mongoid/timestamps.rb +2 -2
  66. data/lib/mongoid/validations.rb +2 -2
  67. data/lib/mongoid/validations/associated.rb +2 -2
  68. data/lib/mongoid/validations/uniqueness.rb +13 -2
  69. data/lib/mongoid/version.rb +4 -0
  70. data/lib/mongoid/versioning.rb +3 -2
  71. data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
  72. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
  73. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  74. data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
  75. data/lib/rails/generators/mongoid_generator.rb +61 -0
  76. metadata +76 -301
  77. data/.gitignore +0 -6
  78. data/.watchr +0 -29
  79. data/Rakefile +0 -52
  80. data/VERSION +0 -1
  81. data/caliper.yml +0 -4
  82. data/lib/mongoid/collections/mimic.rb +0 -46
  83. data/lib/mongoid/commands.rb +0 -161
  84. data/lib/mongoid/commands/create.rb +0 -19
  85. data/lib/mongoid/commands/delete.rb +0 -16
  86. data/lib/mongoid/commands/delete_all.rb +0 -23
  87. data/lib/mongoid/commands/deletion.rb +0 -18
  88. data/lib/mongoid/commands/destroy.rb +0 -17
  89. data/lib/mongoid/commands/destroy_all.rb +0 -23
  90. data/lib/mongoid/commands/save.rb +0 -29
  91. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  92. data/mongoid.gemspec +0 -408
  93. data/perf/benchmark.rb +0 -77
  94. data/spec/integration/mongoid/associations_spec.rb +0 -340
  95. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  96. data/spec/integration/mongoid/commands_spec.rb +0 -227
  97. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  98. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  99. data/spec/integration/mongoid/document_spec.rb +0 -650
  100. data/spec/integration/mongoid/extensions_spec.rb +0 -22
  101. data/spec/integration/mongoid/finders_spec.rb +0 -119
  102. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  103. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  104. data/spec/models/address.rb +0 -39
  105. data/spec/models/animal.rb +0 -6
  106. data/spec/models/callbacks.rb +0 -18
  107. data/spec/models/comment.rb +0 -8
  108. data/spec/models/country_code.rb +0 -6
  109. data/spec/models/employer.rb +0 -5
  110. data/spec/models/game.rb +0 -7
  111. data/spec/models/inheritance.rb +0 -56
  112. data/spec/models/location.rb +0 -5
  113. data/spec/models/mixed_drink.rb +0 -4
  114. data/spec/models/name.rb +0 -13
  115. data/spec/models/namespacing.rb +0 -11
  116. data/spec/models/patient.rb +0 -4
  117. data/spec/models/person.rb +0 -99
  118. data/spec/models/pet.rb +0 -7
  119. data/spec/models/pet_owner.rb +0 -6
  120. data/spec/models/phone.rb +0 -7
  121. data/spec/models/post.rb +0 -15
  122. data/spec/models/translation.rb +0 -5
  123. data/spec/models/vet_visit.rb +0 -5
  124. data/spec/spec.opts +0 -3
  125. data/spec/spec_helper.rb +0 -31
  126. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  127. data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
  128. data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
  129. data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
  130. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
  131. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  132. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  133. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  134. data/spec/unit/mongoid/associations_spec.rb +0 -595
  135. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  136. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  137. data/spec/unit/mongoid/collection_spec.rb +0 -187
  138. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  139. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  140. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  141. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  142. data/spec/unit/mongoid/commands/create_spec.rb +0 -31
  143. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  144. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  145. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
  146. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
  147. data/spec/unit/mongoid/commands/save_spec.rb +0 -107
  148. data/spec/unit/mongoid/commands_spec.rb +0 -270
  149. data/spec/unit/mongoid/config_spec.rb +0 -172
  150. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  151. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  152. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  153. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  154. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  155. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  156. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  157. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  158. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  159. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  160. data/spec/unit/mongoid/document_spec.rb +0 -818
  161. data/spec/unit/mongoid/errors_spec.rb +0 -103
  162. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  163. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  164. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  165. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  166. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  167. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  168. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  169. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  170. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
  171. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  172. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  173. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  174. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  175. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  176. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  177. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  178. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  179. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  180. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  181. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  182. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  183. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  184. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  185. data/spec/unit/mongoid/extras_spec.rb +0 -102
  186. data/spec/unit/mongoid/factory_spec.rb +0 -31
  187. data/spec/unit/mongoid/field_spec.rb +0 -143
  188. data/spec/unit/mongoid/fields_spec.rb +0 -181
  189. data/spec/unit/mongoid/finders_spec.rb +0 -404
  190. data/spec/unit/mongoid/identity_spec.rb +0 -109
  191. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  192. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  193. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  194. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  195. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  196. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  197. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  198. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  199. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  200. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  201. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  202. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  203. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  204. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  205. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  206. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  207. data/spec/unit/mongoid/observable_spec.rb +0 -46
  208. data/spec/unit/mongoid/paths_spec.rb +0 -124
  209. data/spec/unit/mongoid/scope_spec.rb +0 -240
  210. data/spec/unit/mongoid/state_spec.rb +0 -83
  211. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  212. data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
  213. data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
  214. data/spec/unit/mongoid/validations_spec.rb +0 -190
  215. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  216. data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,103 +0,0 @@
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
-
19
- end
20
-
21
- end
22
-
23
- end
24
-
25
- describe Mongoid::Errors::InvalidOptions do
26
-
27
- describe "#message" do
28
-
29
- context "default" do
30
-
31
- before do
32
- @error = Mongoid::Errors::InvalidOptions.new
33
- end
34
-
35
- it "returns the class name" do
36
- @error.message.should == @error.class.name
37
- end
38
-
39
- end
40
-
41
- end
42
-
43
- end
44
-
45
- describe Mongoid::Errors::InvalidDatabase do
46
-
47
- describe "#message" do
48
-
49
- before do
50
- @error = Mongoid::Errors::InvalidDatabase.new("Test")
51
- end
52
-
53
- it "returns a message with the bad db object class" do
54
- @error.message.should include("String")
55
- end
56
-
57
- end
58
-
59
- end
60
-
61
- describe Mongoid::Errors::Validations do
62
-
63
- describe "#message" do
64
-
65
- context "default" do
66
-
67
- before do
68
- @errors = stub(:full_messages => "Testing")
69
- @error = Mongoid::Errors::Validations.new(@errors)
70
- end
71
-
72
- it "contains the errors' full messages" do
73
- @error.message.should include("Testing")
74
- end
75
-
76
- end
77
-
78
- end
79
-
80
- end
81
-
82
- describe Mongoid::Errors::InvalidCollection do
83
-
84
- describe "#message" do
85
-
86
- context "default" do
87
-
88
- before do
89
- @klass = Address
90
- @error = Mongoid::Errors::InvalidCollection.new(@klass)
91
- end
92
-
93
- it "contains class is not allowed" do
94
- @error.message.should include("Address is not allowed")
95
- end
96
-
97
- end
98
-
99
- end
100
-
101
- end
102
-
103
- end
@@ -1,50 +0,0 @@
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
@@ -1,24 +0,0 @@
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
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Array::Conversions do
4
-
5
- describe "#mongoidize" do
6
-
7
- it "collects each of its attributes" do
8
- array = [
9
- Person.new(:_id => 1, :title => "Sir"),
10
- Person.new(:_id => 2, :title => "Madam")
11
- ]
12
- array.mongoidize.should ==
13
- [ HashWithIndifferentAccess.new({ :_id => 1, :title => "Sir", :age => 100, :_type => "Person", "blood_alcohol_content" => 0.0, :pets => false }),
14
- HashWithIndifferentAccess.new({ :_id => 2, :title => "Madam", :age => 100, :_type => "Person", "blood_alcohol_content" => 0.0, :pets => false }) ]
15
- end
16
-
17
- end
18
-
19
- describe "#get" do
20
-
21
- it "returns the array" do
22
- Array.get(["test"]).should == ["test"]
23
- end
24
-
25
- end
26
-
27
- describe "#set" do
28
-
29
- it "returns the array" do
30
- Array.set(["test"]).should == ["test"]
31
- end
32
-
33
- end
34
-
35
- end
@@ -1,20 +0,0 @@
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
@@ -1,22 +0,0 @@
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
- end
15
-
16
- describe "#set" do
17
-
18
- it "converts the big decimal to a string" do
19
- BigDecimal.set(number).should == "123456.789"
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
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
@@ -1,49 +0,0 @@
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
-
13
- end
14
-
15
- context "when 'false'" do
16
-
17
- it "returns false" do
18
- Boolean.set("false").should be_false
19
- end
20
-
21
- end
22
-
23
- context "when 0" do
24
-
25
- it "returns false" do
26
- Boolean.set("0").should be_false
27
- end
28
-
29
- end
30
-
31
- context "when 1" do
32
-
33
- it "returns true" do
34
- Boolean.set("1").should be_true
35
- end
36
-
37
- end
38
-
39
- end
40
-
41
- describe "#get" do
42
-
43
- it "returns the boolean" do
44
- Boolean.get(false).should be_false
45
- end
46
-
47
- end
48
-
49
- end
@@ -1,102 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::Date::Conversions do
4
-
5
- before do
6
- @time = Date.today.to_time
7
- end
8
-
9
- describe "#set" do
10
-
11
- context "when string provided" do
12
-
13
- context "when string is a non utc time" do
14
-
15
- it "returns a utc time from the string" do
16
- Date.set(@time.to_s).should == @time.utc
17
- end
18
-
19
- end
20
-
21
- context "when string is a date" do
22
-
23
- it "returns a time from the string" do
24
- date = RUBY_VERSION.start_with?("1.9") ? "15/01/2007" : "01/15/2007"
25
- Date.set(date).should == Date.new(2007, 1, 15).at_midnight.utc
26
- end
27
-
28
- end
29
-
30
- context "when string is empty" do
31
-
32
- it "returns nil" do
33
- Date.set("").should == nil
34
- end
35
-
36
- end
37
-
38
- end
39
-
40
- context "when time provided" do
41
-
42
- it "returns the time" do
43
- Date.set(@time).should == @time.utc
44
- end
45
-
46
- end
47
-
48
- context "when a date provided" do
49
-
50
- it "returns a time from the date" do
51
- Date.set(@time.to_date).should == @time
52
- end
53
-
54
- end
55
-
56
- end
57
-
58
- describe "#get" do
59
-
60
- context "when value is nil" do
61
-
62
- it "returns nil" do
63
- Date.get(nil).should be_nil
64
- end
65
-
66
- end
67
-
68
- context "when value is not nil" do
69
-
70
- context "when time is UTC" do
71
-
72
- before do
73
- @utc = Date.new(1974, 12, 1).to_time.utc
74
- end
75
-
76
- context "when time zone is not utc" do
77
-
78
- before do
79
- Time.zone = "Eastern Time (US & Canada)"
80
- end
81
-
82
- after do
83
- Time.zone = "UTC"
84
- end
85
-
86
- it "converts to the proper date" do
87
- Date.get(@utc).should == Date.new(1974, 12, 1)
88
- end
89
-
90
- end
91
-
92
- end
93
-
94
- it "converts the time back to a date" do
95
- Date.get(@time).should == @time.to_date
96
- end
97
-
98
- end
99
-
100
- end
101
-
102
- end
@@ -1,67 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Extensions::DateTime::Conversions do
4
-
5
- before do
6
- Time.zone = "Eastern Time (US & Canada)"
7
- @time = Time.local(1976, 11, 19)
8
- end
9
-
10
- after do
11
- Time.zone = nil
12
- end
13
-
14
- describe "#set" do
15
-
16
- before do
17
- @date_time = DateTime.civil(2005, 11, 19).new_offset(1800)
18
- end
19
-
20
- context "when value is a string" do
21
-
22
- it "converts to a utc time" do
23
- DateTime.set(@date_time.to_s).utc_offset.should == 0
24
- end
25
-
26
- end
27
-
28
- context "when value is a date_time" do
29
-
30
- it "converts to a utc time" do
31
- DateTime.set(@date_time).utc_offset.should == 0
32
- end
33
-
34
- end
35
-
36
- context "when value is nil" do
37
-
38
- it "returns nil" do
39
- DateTime.set(nil).should be_nil
40
- end
41
-
42
- end
43
-
44
- end
45
-
46
- describe "#get" do
47
-
48
- context "when time is provided" do
49
-
50
- it "returns a DateTime" do
51
- DateTime.get(@time.dup).should be_a_kind_of(DateTime)
52
- end
53
-
54
- it "returns the local date_time" do
55
- DateTime.get(@time.dup).utc_offset.should == @time.utc_offset
56
- end
57
-
58
- end
59
-
60
- context "when time is nil" do
61
-
62
- it "returns nil" do
63
- DateTime.get(nil).should be_nil
64
- end
65
- end
66
- end
67
- end