mongoid 7.6.1 → 8.0.1

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 (314) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +2 -0
  3. data/README.md +3 -3
  4. data/Rakefile +21 -85
  5. data/lib/config/locales/en.yml +46 -30
  6. data/lib/mongoid/association/accessors.rb +32 -3
  7. data/lib/mongoid/association/bindable.rb +48 -0
  8. data/lib/mongoid/association/builders.rb +4 -2
  9. data/lib/mongoid/association/eager_loadable.rb +29 -7
  10. data/lib/mongoid/association/embedded/batchable.rb +28 -5
  11. data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
  12. data/lib/mongoid/association/embedded/embedded_in.rb +2 -1
  13. data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
  14. data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
  15. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +40 -18
  16. data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
  17. data/lib/mongoid/association/embedded/embeds_one/proxy.rb +21 -2
  18. data/lib/mongoid/association/macros.rb +2 -1
  19. data/lib/mongoid/association/many.rb +5 -0
  20. data/lib/mongoid/association/nested/many.rb +2 -1
  21. data/lib/mongoid/association/proxy.rb +12 -0
  22. data/lib/mongoid/association/referenced/auto_save.rb +3 -2
  23. data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
  24. data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
  25. data/lib/mongoid/association/referenced/belongs_to.rb +1 -1
  26. data/lib/mongoid/association/referenced/counter_cache.rb +8 -8
  27. data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +64 -11
  28. data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +4 -1
  29. data/lib/mongoid/association/referenced/has_many/enumerable.rb +10 -18
  30. data/lib/mongoid/association/referenced/has_many/proxy.rb +12 -9
  31. data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
  32. data/lib/mongoid/association/referenced/has_one/proxy.rb +8 -11
  33. data/lib/mongoid/association/referenced/syncable.rb +2 -2
  34. data/lib/mongoid/association/relatable.rb +38 -4
  35. data/lib/mongoid/attributes/processing.rb +9 -2
  36. data/lib/mongoid/attributes.rb +30 -27
  37. data/lib/mongoid/cacheable.rb +2 -2
  38. data/lib/mongoid/changeable.rb +37 -2
  39. data/lib/mongoid/clients/factory.rb +0 -4
  40. data/lib/mongoid/clients/options.rb +4 -0
  41. data/lib/mongoid/clients/sessions.rb +2 -14
  42. data/lib/mongoid/config.rb +15 -11
  43. data/lib/mongoid/contextual/aggregable/memory.rb +23 -15
  44. data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
  45. data/lib/mongoid/contextual/map_reduce.rb +2 -2
  46. data/lib/mongoid/contextual/memory.rb +55 -28
  47. data/lib/mongoid/contextual/mongo.rb +173 -287
  48. data/lib/mongoid/contextual/none.rb +33 -15
  49. data/lib/mongoid/copyable.rb +32 -8
  50. data/lib/mongoid/criteria/includable.rb +24 -20
  51. data/lib/mongoid/criteria/marshalable.rb +10 -2
  52. data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -15
  53. data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
  54. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -1
  55. data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
  56. data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
  57. data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -16
  58. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
  59. data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
  60. data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
  61. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +1 -1
  62. data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -1
  63. data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
  64. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
  65. data/lib/mongoid/criteria/queryable/optional.rb +3 -9
  66. data/lib/mongoid/criteria/queryable/options.rb +1 -1
  67. data/lib/mongoid/criteria/queryable/selectable.rb +2 -24
  68. data/lib/mongoid/criteria/queryable/selector.rb +90 -5
  69. data/lib/mongoid/criteria/queryable/smash.rb +39 -6
  70. data/lib/mongoid/criteria/queryable/storable.rb +1 -1
  71. data/lib/mongoid/criteria/queryable.rb +11 -6
  72. data/lib/mongoid/criteria.rb +1 -28
  73. data/lib/mongoid/deprecable.rb +36 -0
  74. data/lib/mongoid/deprecation.rb +25 -0
  75. data/lib/mongoid/document.rb +88 -33
  76. data/lib/mongoid/equality.rb +4 -4
  77. data/lib/mongoid/errors/document_not_found.rb +6 -2
  78. data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
  79. data/lib/mongoid/errors/invalid_field.rb +5 -1
  80. data/lib/mongoid/errors/invalid_field_type.rb +26 -0
  81. data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
  82. data/lib/mongoid/errors.rb +2 -2
  83. data/lib/mongoid/extensions/array.rb +8 -6
  84. data/lib/mongoid/extensions/big_decimal.rb +29 -10
  85. data/lib/mongoid/extensions/binary.rb +42 -0
  86. data/lib/mongoid/extensions/boolean.rb +8 -2
  87. data/lib/mongoid/extensions/date.rb +26 -20
  88. data/lib/mongoid/extensions/date_time.rb +1 -1
  89. data/lib/mongoid/extensions/float.rb +4 -5
  90. data/lib/mongoid/extensions/hash.rb +13 -32
  91. data/lib/mongoid/extensions/integer.rb +4 -5
  92. data/lib/mongoid/extensions/object.rb +2 -0
  93. data/lib/mongoid/extensions/range.rb +41 -10
  94. data/lib/mongoid/extensions/regexp.rb +11 -4
  95. data/lib/mongoid/extensions/set.rb +11 -4
  96. data/lib/mongoid/extensions/string.rb +2 -13
  97. data/lib/mongoid/extensions/symbol.rb +3 -14
  98. data/lib/mongoid/extensions/time.rb +27 -16
  99. data/lib/mongoid/extensions/time_with_zone.rb +1 -2
  100. data/lib/mongoid/extensions.rb +1 -0
  101. data/lib/mongoid/factory.rb +42 -7
  102. data/lib/mongoid/fields/foreign_key.rb +7 -0
  103. data/lib/mongoid/fields/validators/macro.rb +3 -9
  104. data/lib/mongoid/fields.rb +49 -7
  105. data/lib/mongoid/findable.rb +21 -16
  106. data/lib/mongoid/indexable/specification.rb +1 -1
  107. data/lib/mongoid/indexable/validators/options.rb +4 -1
  108. data/lib/mongoid/interceptable.rb +69 -9
  109. data/lib/mongoid/persistable/creatable.rb +14 -5
  110. data/lib/mongoid/persistable/updatable.rb +12 -5
  111. data/lib/mongoid/persistence_context.rb +8 -42
  112. data/lib/mongoid/query_cache.rb +6 -258
  113. data/lib/mongoid/railties/controller_runtime.rb +1 -1
  114. data/lib/mongoid/reloadable.rb +7 -3
  115. data/lib/mongoid/scopable.rb +9 -11
  116. data/lib/mongoid/selectable.rb +1 -2
  117. data/lib/mongoid/shardable.rb +11 -35
  118. data/lib/mongoid/stateful.rb +27 -1
  119. data/lib/mongoid/timestamps/created.rb +1 -1
  120. data/lib/mongoid/timestamps/updated.rb +1 -1
  121. data/lib/mongoid/touchable.rb +2 -3
  122. data/lib/mongoid/traversable.rb +1 -0
  123. data/lib/mongoid/validatable/uniqueness.rb +2 -1
  124. data/lib/mongoid/version.rb +1 -5
  125. data/lib/mongoid/warnings.rb +3 -4
  126. data/lib/mongoid.rb +1 -0
  127. data/spec/config/mongoid.yml +16 -0
  128. data/spec/integration/app_spec.rb +8 -12
  129. data/spec/integration/associations/belongs_to_spec.rb +18 -0
  130. data/spec/integration/associations/embedded_spec.rb +15 -0
  131. data/spec/integration/associations/embeds_many_spec.rb +15 -2
  132. data/spec/integration/associations/embeds_one_spec.rb +18 -0
  133. data/spec/integration/associations/foreign_key_spec.rb +9 -0
  134. data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
  135. data/spec/integration/associations/has_one_spec.rb +97 -1
  136. data/spec/integration/associations/scope_option_spec.rb +1 -1
  137. data/spec/integration/callbacks_models.rb +95 -1
  138. data/spec/integration/callbacks_spec.rb +226 -4
  139. data/spec/integration/criteria/range_spec.rb +95 -1
  140. data/spec/integration/discriminator_key_spec.rb +115 -76
  141. data/spec/integration/dots_and_dollars_spec.rb +277 -0
  142. data/spec/integration/i18n_fallbacks_spec.rb +1 -15
  143. data/spec/integration/matcher_examples_spec.rb +20 -13
  144. data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
  145. data/spec/integration/matcher_operator_spec.rb +3 -5
  146. data/spec/integration/persistence/range_field_spec.rb +350 -0
  147. data/spec/mongoid/association/counter_cache_spec.rb +1 -1
  148. data/spec/mongoid/association/depending_spec.rb +9 -9
  149. data/spec/mongoid/association/eager_spec.rb +2 -1
  150. data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
  151. data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
  152. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
  153. data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
  154. data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +198 -8
  155. data/spec/mongoid/association/embedded/embeds_many_models.rb +36 -0
  156. data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
  157. data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
  158. data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
  159. data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
  160. data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
  161. data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
  162. data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
  163. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
  164. data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
  165. data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
  166. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +38 -5
  167. data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
  168. data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
  169. data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
  170. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
  171. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +62 -13
  172. data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
  173. data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
  174. data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
  175. data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
  176. data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
  177. data/spec/mongoid/association/syncable_spec.rb +14 -0
  178. data/spec/mongoid/atomic/paths_spec.rb +0 -14
  179. data/spec/mongoid/attributes/nested_spec.rb +80 -11
  180. data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
  181. data/spec/mongoid/attributes/projector_spec.rb +1 -5
  182. data/spec/mongoid/attributes_spec.rb +480 -27
  183. data/spec/mongoid/cacheable_spec.rb +3 -3
  184. data/spec/mongoid/changeable_spec.rb +130 -13
  185. data/spec/mongoid/clients/factory_spec.rb +22 -60
  186. data/spec/mongoid/clients/sessions_spec.rb +0 -38
  187. data/spec/mongoid/clients_spec.rb +2 -2
  188. data/spec/mongoid/config_spec.rb +52 -15
  189. data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
  190. data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
  191. data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
  192. data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
  193. data/spec/mongoid/contextual/memory_spec.rb +521 -14
  194. data/spec/mongoid/contextual/mongo_spec.rb +566 -426
  195. data/spec/mongoid/contextual/none_spec.rb +11 -19
  196. data/spec/mongoid/copyable_spec.rb +451 -2
  197. data/spec/mongoid/criteria/findable_spec.rb +86 -210
  198. data/spec/mongoid/criteria/includable_spec.rb +1492 -0
  199. data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
  200. data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
  201. data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
  202. data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
  203. data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +1 -2
  204. data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
  205. data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
  206. data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +1 -2
  207. data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
  208. data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
  209. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
  210. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
  211. data/spec/mongoid/criteria/queryable/optional_spec.rb +0 -484
  212. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
  213. data/spec/mongoid/criteria/queryable/selectable_spec.rb +77 -85
  214. data/spec/mongoid/criteria/queryable/selector_spec.rb +16 -77
  215. data/spec/mongoid/criteria/queryable/storable_spec.rb +0 -72
  216. data/spec/mongoid/criteria_spec.rb +469 -1201
  217. data/spec/mongoid/document_fields_spec.rb +173 -24
  218. data/spec/mongoid/document_spec.rb +32 -41
  219. data/spec/mongoid/equality_spec.rb +12 -12
  220. data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
  221. data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
  222. data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
  223. data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
  224. data/spec/mongoid/errors/no_environment_spec.rb +3 -3
  225. data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
  226. data/spec/mongoid/extensions/array_spec.rb +16 -2
  227. data/spec/mongoid/extensions/big_decimal_spec.rb +697 -212
  228. data/spec/mongoid/extensions/binary_spec.rb +44 -9
  229. data/spec/mongoid/extensions/boolean_spec.rb +68 -82
  230. data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
  231. data/spec/mongoid/extensions/date_spec.rb +71 -1
  232. data/spec/mongoid/extensions/date_time_spec.rb +15 -9
  233. data/spec/mongoid/extensions/float_spec.rb +48 -76
  234. data/spec/mongoid/extensions/hash_spec.rb +30 -236
  235. data/spec/mongoid/extensions/integer_spec.rb +45 -66
  236. data/spec/mongoid/extensions/range_spec.rb +255 -54
  237. data/spec/mongoid/extensions/regexp_spec.rb +58 -33
  238. data/spec/mongoid/extensions/set_spec.rb +106 -0
  239. data/spec/mongoid/extensions/string_spec.rb +53 -25
  240. data/spec/mongoid/extensions/symbol_spec.rb +18 -25
  241. data/spec/mongoid/extensions/time_spec.rb +634 -66
  242. data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
  243. data/spec/mongoid/factory_spec.rb +61 -1
  244. data/spec/mongoid/fields_spec.rb +321 -50
  245. data/spec/mongoid/findable_spec.rb +64 -29
  246. data/spec/mongoid/indexable/specification_spec.rb +2 -2
  247. data/spec/mongoid/indexable_spec.rb +16 -19
  248. data/spec/mongoid/interceptable_spec.rb +584 -5
  249. data/spec/mongoid/interceptable_spec_models.rb +235 -4
  250. data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
  251. data/spec/mongoid/mongoizable_spec.rb +285 -0
  252. data/spec/mongoid/persistable/creatable_spec.rb +2 -2
  253. data/spec/mongoid/persistable/deletable_spec.rb +2 -2
  254. data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
  255. data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
  256. data/spec/mongoid/persistence_context_spec.rb +24 -0
  257. data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
  258. data/spec/mongoid/query_cache_spec.rb +1 -156
  259. data/spec/mongoid/reloadable_spec.rb +35 -2
  260. data/spec/mongoid/scopable_spec.rb +36 -34
  261. data/spec/mongoid/serializable_spec.rb +14 -7
  262. data/spec/mongoid/shardable_models.rb +0 -14
  263. data/spec/mongoid/shardable_spec.rb +61 -153
  264. data/spec/mongoid/stateful_spec.rb +28 -0
  265. data/spec/mongoid/timestamps_spec.rb +390 -0
  266. data/spec/mongoid/timestamps_spec_models.rb +67 -0
  267. data/spec/mongoid/touchable_spec.rb +116 -0
  268. data/spec/mongoid/touchable_spec_models.rb +12 -8
  269. data/spec/mongoid/traversable_spec.rb +4 -11
  270. data/spec/mongoid/validatable/presence_spec.rb +1 -1
  271. data/spec/mongoid/validatable/uniqueness_spec.rb +60 -31
  272. data/spec/mongoid/warnings_spec.rb +35 -0
  273. data/spec/mongoid_spec.rb +1 -7
  274. data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
  275. data/spec/rails/mongoid_spec.rb +4 -16
  276. data/spec/shared/lib/mrss/docker_runner.rb +1 -8
  277. data/spec/shared/lib/mrss/event_subscriber.rb +5 -15
  278. data/spec/shared/lib/mrss/lite_constraints.rb +2 -10
  279. data/spec/shared/lib/mrss/server_version_registry.rb +24 -17
  280. data/spec/shared/lib/mrss/spec_organizer.rb +3 -32
  281. data/spec/shared/lib/mrss/utils.rb +6 -28
  282. data/spec/shared/share/Dockerfile.erb +107 -33
  283. data/spec/shared/shlib/distro.sh +0 -10
  284. data/spec/shared/shlib/server.sh +33 -64
  285. data/spec/shared/shlib/set_env.sh +71 -12
  286. data/spec/support/constraints.rb +24 -0
  287. data/spec/support/expectations.rb +17 -20
  288. data/spec/support/macros.rb +30 -0
  289. data/spec/support/models/augmentation.rb +12 -0
  290. data/spec/support/models/band.rb +3 -0
  291. data/spec/support/models/catalog.rb +24 -0
  292. data/spec/support/models/circus.rb +3 -0
  293. data/spec/support/models/fanatic.rb +8 -0
  294. data/spec/support/models/implant.rb +9 -0
  295. data/spec/support/models/label.rb +2 -0
  296. data/spec/support/models/passport.rb +9 -0
  297. data/spec/support/models/person.rb +1 -0
  298. data/spec/support/models/player.rb +2 -0
  299. data/spec/support/models/powerup.rb +12 -0
  300. data/spec/support/models/registry.rb +1 -0
  301. data/spec/support/models/school.rb +14 -0
  302. data/spec/support/models/shield.rb +18 -0
  303. data/spec/support/models/student.rb +14 -0
  304. data/spec/support/models/weapon.rb +12 -0
  305. data.tar.gz.sig +0 -0
  306. metadata +695 -641
  307. metadata.gz.sig +0 -0
  308. data/lib/mongoid/errors/eager_load.rb +0 -23
  309. data/lib/mongoid/errors/invalid_value.rb +0 -17
  310. data/spec/mongoid/errors/eager_load_spec.rb +0 -31
  311. data/spec/shared/CANDIDATE.md +0 -28
  312. data/spec/shared/lib/mrss/release/candidate.rb +0 -281
  313. data/spec/shared/lib/mrss/release/product_data.rb +0 -144
  314. data/spec/shared/lib/tasks/candidate.rake +0 -64
@@ -114,6 +114,25 @@ describe Mongoid::Extensions::String do
114
114
  it_behaves_like 'maintains precision when mongoized'
115
115
  end
116
116
 
117
+ context "when the string is a valid time without time" do
118
+
119
+ let(:string) do
120
+ "2010-11-19"
121
+ end
122
+
123
+ let(:mongoized) do
124
+ string.__mongoize_time__
125
+ end
126
+
127
+ let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
128
+
129
+ it "converts to the AS time zone" do
130
+ expect(mongoized.zone).to eq("JST")
131
+ end
132
+
133
+ it_behaves_like 'mongoizes to AS::TimeWithZone'
134
+ end
135
+
117
136
  context "when the string is an invalid time" do
118
137
 
119
138
  let(:string) do
@@ -171,6 +190,29 @@ describe Mongoid::Extensions::String do
171
190
  it_behaves_like 'maintains precision when mongoized'
172
191
  end
173
192
 
193
+ context "when the string is a valid time without time" do
194
+
195
+ let(:string) do
196
+ "2010-11-19"
197
+ end
198
+
199
+ let(:mongoized) do
200
+ string.__mongoize_time__
201
+ end
202
+
203
+ let(:utc_offset) do
204
+ Time.now.utc_offset
205
+ end
206
+
207
+ let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
208
+
209
+ it 'test operates in multiple time zones' do
210
+ expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
211
+ end
212
+
213
+ it_behaves_like 'mongoizes to Time'
214
+ end
215
+
174
216
  context "when the string is an invalid time" do
175
217
 
176
218
  let(:string) do
@@ -209,23 +251,6 @@ describe Mongoid::Extensions::String do
209
251
  end
210
252
  end
211
253
 
212
- describe ".demongoize" do
213
-
214
- context "when the object is not a string" do
215
-
216
- it "returns the string" do
217
- expect(String.demongoize(:test)).to eq("test")
218
- end
219
- end
220
-
221
- context "when the object is nil" do
222
-
223
- it "returns nil" do
224
- expect(String.demongoize(nil)).to be_nil
225
- end
226
- end
227
- end
228
-
229
254
  describe "#mongoid_id?" do
230
255
 
231
256
  context "when the string is id" do
@@ -257,19 +282,22 @@ describe Mongoid::Extensions::String do
257
282
  end
258
283
  end
259
284
 
260
- describe ".mongoize" do
285
+ [ :mongoize, :demongoize ].each do |method|
261
286
 
262
- context "when the object is not a string" do
287
+ describe ".#{method}" do
263
288
 
264
- it "returns the string" do
265
- expect(String.mongoize(:test)).to eq("test")
289
+ context "when the object is not a string" do
290
+
291
+ it "returns the string" do
292
+ expect(String.send(method, :test)).to eq("test")
293
+ end
266
294
  end
267
- end
268
295
 
269
- context "when the object is nil" do
296
+ context "when the object is nil" do
270
297
 
271
- it "returns nil" do
272
- expect(String.mongoize(nil)).to be_nil
298
+ it "returns nil" do
299
+ expect(String.send(method, nil)).to be_nil
300
+ end
273
301
  end
274
302
  end
275
303
  end
@@ -4,23 +4,6 @@ require "spec_helper"
4
4
 
5
5
  describe Mongoid::Extensions::Symbol do
6
6
 
7
- describe ".demongoize" do
8
-
9
- context "when the object is not a symbol" do
10
-
11
- it "returns the symbol" do
12
- expect(Symbol.demongoize("test")).to eq(:test)
13
- end
14
- end
15
-
16
- context "when the object is nil" do
17
-
18
- it "returns nil" do
19
- expect(Symbol.demongoize(nil)).to be_nil
20
- end
21
- end
22
- end
23
-
24
7
  describe "#mongoid_id?" do
25
8
 
26
9
  context "when the string is id" do
@@ -52,19 +35,29 @@ describe Mongoid::Extensions::Symbol do
52
35
  end
53
36
  end
54
37
 
55
- describe ".mongoize" do
38
+ [ :mongoize, :demongoize ].each do |method|
56
39
 
57
- context "when the object is not a symbol" do
40
+ describe ".mongoize" do
58
41
 
59
- it "returns the symbol" do
60
- expect(Symbol.mongoize("test")).to eq(:test)
42
+ context "when the object is not a symbol" do
43
+
44
+ it "returns the symbol" do
45
+ expect(Symbol.send(method, "test")).to eq(:test)
46
+ end
47
+ end
48
+
49
+ context "when the object is nil" do
50
+
51
+ it "returns nil" do
52
+ expect(Symbol.send(method, nil)).to be_nil
53
+ end
61
54
  end
62
- end
63
55
 
64
- context "when the object is nil" do
56
+ context "when the object is uncastable" do
65
57
 
66
- it "returns nil" do
67
- expect(Symbol.mongoize(nil)).to be_nil
58
+ it "returns nil" do
59
+ expect(Symbol.send(method, [])).to be_nil
60
+ end
68
61
  end
69
62
  end
70
63
  end