mongoid 3.1.7 → 4.0.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +470 -9
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/atomic.rb +3 -14
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/attributes.rb +63 -99
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -2
- data/lib/mongoid/contextual/memory.rb +23 -11
- data/lib/mongoid/contextual/mongo.rb +75 -57
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/contextual/text_search.rb +178 -0
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
- data/lib/mongoid/criteria/permission.rb +70 -0
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/document.rb +39 -24
- data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors/readonly_document.rb +24 -0
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/extensions/array.rb +3 -3
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +15 -17
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +2 -1
- data/lib/mongoid/extensions/hash.rb +3 -3
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +7 -7
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +9 -3
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +6 -18
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +3 -3
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/extensions.rb +15 -7
- data/lib/mongoid/factory.rb +8 -6
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/localized.rb +1 -1
- data/lib/mongoid/fields/standard.rb +5 -17
- data/lib/mongoid/fields/validators/macro.rb +15 -5
- data/lib/mongoid/fields.rb +41 -8
- data/lib/mongoid/{finders.rb → findable.rb} +35 -7
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/persistable/creatable.rb +189 -0
- data/lib/mongoid/persistable/deletable.rb +149 -0
- data/lib/mongoid/persistable/destroyable.rb +60 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +153 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/persistable.rb +216 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/query_cache.rb +255 -0
- data/lib/mongoid/railtie.rb +34 -60
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations/accessors.rb +15 -51
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +2 -25
- data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager/base.rb +149 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
- data/lib/mongoid/relations/eager/has_many.rb +38 -0
- data/lib/mongoid/relations/eager/has_one.rb +30 -0
- data/lib/mongoid/relations/eager.rb +46 -0
- data/lib/mongoid/relations/embedded/batchable.rb +4 -5
- data/lib/mongoid/relations/embedded/in.rb +4 -4
- data/lib/mongoid/relations/embedded/many.rb +14 -32
- data/lib/mongoid/relations/embedded/one.rb +1 -1
- data/lib/mongoid/relations/macros.rb +3 -4
- data/lib/mongoid/relations/many.rb +51 -31
- data/lib/mongoid/relations/marshalable.rb +3 -3
- data/lib/mongoid/relations/metadata.rb +14 -79
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/one.rb +1 -1
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +21 -41
- data/lib/mongoid/relations/referenced/in.rb +4 -20
- data/lib/mongoid/relations/referenced/many.rb +22 -35
- data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +4 -4
- data/lib/mongoid/relations/targets/enumerable.rb +10 -10
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
- data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +185 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +16 -3
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/{state.rb → stateful.rb} +13 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/tasks/database.rake +31 -0
- data/lib/mongoid/tasks/database.rb +107 -0
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/threaded.rb +26 -172
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +10 -76
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +0 -122
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +2 -1
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +8 -3
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +3 -3
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contextable_item.rb +5 -0
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dog.rb +1 -1
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/edit.rb +5 -0
- data/spec/app/models/even.rb +7 -0
- data/spec/app/models/event.rb +1 -1
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +1 -3
- data/spec/app/models/id_key.rb +6 -0
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/line_item.rb +1 -1
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +3 -1
- data/spec/app/models/odd.rb +7 -0
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +16 -10
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +3 -3
- data/spec/app/models/post.rb +5 -3
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +10 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/symptom.rb +1 -1
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +3 -3
- data/spec/app/models/video.rb +1 -5
- data/spec/app/models/wiki_page.rb +2 -5
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
- data/spec/mongoid/attributes/readonly_spec.rb +58 -18
- data/spec/mongoid/attributes_spec.rb +334 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +59 -55
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +156 -94
- data/spec/mongoid/contextual/mongo_spec.rb +238 -150
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/contextual/text_search_spec.rb +209 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +713 -2419
- data/spec/mongoid/document_spec.rb +171 -121
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +8 -8
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +29 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/findable_spec.rb +509 -0
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
- data/spec/mongoid/log_subscriber_spec.rb +75 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +553 -0
- data/spec/mongoid/persistable/deletable_spec.rb +218 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +498 -0
- data/spec/mongoid/persistable/settable_spec.rb +162 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +9 -9
- data/spec/mongoid/query_cache_spec.rb +263 -0
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +37 -17
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
- data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
- data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
- data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
- data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +180 -255
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
- data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
- data/spec/mongoid/relations/touchable_spec.rb +333 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +108 -0
- data/spec/mongoid/sessions_spec.rb +319 -178
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
- data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
- data/spec/mongoid/tasks/database_spec.rb +160 -0
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
- data/spec/mongoid/timestamps/updated_spec.rb +9 -13
- data/spec/mongoid/timestamps_spec.rb +9 -13
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +19 -350
- data/spec/spec_helper.rb +26 -15
- metadata +262 -247
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/finders_spec.rb +0 -321
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
|
@@ -3,7 +3,7 @@ require "spec_helper"
|
|
|
3
3
|
describe Mongoid::Threaded do
|
|
4
4
|
|
|
5
5
|
let(:object) do
|
|
6
|
-
|
|
6
|
+
double
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
describe "#begin" do
|
|
@@ -17,7 +17,7 @@ describe Mongoid::Threaded do
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
it "adds a boolen to the load stack" do
|
|
20
|
-
described_class.stack("load").
|
|
20
|
+
expect(described_class.stack("load")).to eq([ true ])
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
@@ -26,7 +26,7 @@ describe Mongoid::Threaded do
|
|
|
26
26
|
context "when loading is not set" do
|
|
27
27
|
|
|
28
28
|
it "returns false" do
|
|
29
|
-
described_class.
|
|
29
|
+
expect(described_class).to_not be_executing(:load)
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -41,7 +41,7 @@ describe Mongoid::Threaded do
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "returns true" do
|
|
44
|
-
described_class.
|
|
44
|
+
expect(described_class).to be_executing(:load)
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
@@ -52,7 +52,7 @@ describe Mongoid::Threaded do
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
it "returns false" do
|
|
55
|
-
described_class.
|
|
55
|
+
expect(described_class).to_not be_executing(:load)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
end
|
|
@@ -66,7 +66,7 @@ describe Mongoid::Threaded do
|
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
it "returns an empty stack" do
|
|
69
|
-
loading.
|
|
69
|
+
expect(loading).to be_empty
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
|
|
@@ -85,7 +85,7 @@ describe Mongoid::Threaded do
|
|
|
85
85
|
end
|
|
86
86
|
|
|
87
87
|
it "returns the stack" do
|
|
88
|
-
loading.
|
|
88
|
+
expect(loading).to eq([ true ])
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
end
|
|
@@ -102,67 +102,14 @@ describe Mongoid::Threaded do
|
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
it "removes a boolen from the stack" do
|
|
105
|
-
described_class.stack("load").
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
describe "#clear_persistence_options" do
|
|
110
|
-
|
|
111
|
-
before do
|
|
112
|
-
described_class.set_persistence_options(Band, { safe: { w: 3 }})
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
let!(:cleared) do
|
|
116
|
-
described_class.clear_persistence_options(Band)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
it "removes all persistence options" do
|
|
120
|
-
described_class.persistence_options(Band).should be_nil
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
it "returns true" do
|
|
124
|
-
cleared.should be_true
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
describe "#identity_map" do
|
|
129
|
-
|
|
130
|
-
before do
|
|
131
|
-
Thread.current["[mongoid]:identity-map"] = object
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
after do
|
|
135
|
-
Thread.current["[mongoid]:identity-map"] = nil
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
it "returns the object with the identity map key" do
|
|
139
|
-
described_class.identity_map.should eq(object)
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
describe "#persistence_options" do
|
|
144
|
-
|
|
145
|
-
before do
|
|
146
|
-
described_class.set_persistence_options(Band, { safe: { w: 3 }})
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
after do
|
|
150
|
-
described_class.set_persistence_options(Band, nil)
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
let(:options) do
|
|
154
|
-
described_class.persistence_options(Band)
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
it "sets the persistence options" do
|
|
158
|
-
options.should eq({ safe: { w: 3 }})
|
|
105
|
+
expect(described_class.stack("load")).to be_empty
|
|
159
106
|
end
|
|
160
107
|
end
|
|
161
108
|
|
|
162
109
|
describe "#scope_stack" do
|
|
163
110
|
|
|
164
111
|
it "returns the default with the scope stack key" do
|
|
165
|
-
described_class.scope_stack.
|
|
112
|
+
expect(described_class.scope_stack).to be_a(Hash)
|
|
166
113
|
end
|
|
167
114
|
end
|
|
168
115
|
|
|
@@ -181,7 +128,7 @@ describe Mongoid::Threaded do
|
|
|
181
128
|
end
|
|
182
129
|
|
|
183
130
|
it "marks the document as being validated" do
|
|
184
|
-
described_class.validations_for(Person).
|
|
131
|
+
expect(described_class.validations_for(Person)).to eq([ person.id ])
|
|
185
132
|
end
|
|
186
133
|
end
|
|
187
134
|
|
|
@@ -197,7 +144,7 @@ describe Mongoid::Threaded do
|
|
|
197
144
|
end
|
|
198
145
|
|
|
199
146
|
it "unmarks the document as being validated" do
|
|
200
|
-
described_class.validations_for(Person).
|
|
147
|
+
expect(described_class.validations_for(Person)).to be_empty
|
|
201
148
|
end
|
|
202
149
|
end
|
|
203
150
|
|
|
@@ -218,14 +165,14 @@ describe Mongoid::Threaded do
|
|
|
218
165
|
end
|
|
219
166
|
|
|
220
167
|
it "returns true" do
|
|
221
|
-
described_class.validated?(person).
|
|
168
|
+
expect(described_class.validated?(person)).to be true
|
|
222
169
|
end
|
|
223
170
|
end
|
|
224
171
|
|
|
225
172
|
context "when the document is not validated" do
|
|
226
173
|
|
|
227
174
|
it "returns false" do
|
|
228
|
-
described_class.validated?(person).
|
|
175
|
+
expect(described_class.validated?(person)).to be false
|
|
229
176
|
end
|
|
230
177
|
end
|
|
231
178
|
end
|
|
@@ -245,7 +192,7 @@ describe Mongoid::Threaded do
|
|
|
245
192
|
end
|
|
246
193
|
|
|
247
194
|
it "marks the document as being autosaved" do
|
|
248
|
-
described_class.autosaves_for(Person).
|
|
195
|
+
expect(described_class.autosaves_for(Person)).to eq([ person.id ])
|
|
249
196
|
end
|
|
250
197
|
end
|
|
251
198
|
|
|
@@ -261,7 +208,7 @@ describe Mongoid::Threaded do
|
|
|
261
208
|
end
|
|
262
209
|
|
|
263
210
|
it "unmarks the document as being autosaved" do
|
|
264
|
-
described_class.autosaves_for(Person).
|
|
211
|
+
expect(described_class.autosaves_for(Person)).to be_empty
|
|
265
212
|
end
|
|
266
213
|
end
|
|
267
214
|
|
|
@@ -282,14 +229,14 @@ describe Mongoid::Threaded do
|
|
|
282
229
|
end
|
|
283
230
|
|
|
284
231
|
it "returns true" do
|
|
285
|
-
described_class.autosaved?(person).
|
|
232
|
+
expect(described_class.autosaved?(person)).to be true
|
|
286
233
|
end
|
|
287
234
|
end
|
|
288
235
|
|
|
289
236
|
context "when the document is not autosaved" do
|
|
290
237
|
|
|
291
238
|
it "returns false" do
|
|
292
|
-
described_class.autosaved?(person).
|
|
239
|
+
expect(described_class.autosaved?(person)).to be false
|
|
293
240
|
end
|
|
294
241
|
end
|
|
295
242
|
end
|
|
@@ -18,19 +18,19 @@ describe Mongoid::Timestamps::Created::Short do
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "adds c_at to the document" do
|
|
21
|
-
fields["c_at"].
|
|
21
|
+
expect(fields["c_at"]).to_not be_nil
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "does not add u_at to the document" do
|
|
25
|
-
fields["u_at"].
|
|
25
|
+
expect(fields["u_at"]).to be_nil
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "does not add the created_at to the document" do
|
|
29
|
-
fields["created_at"].
|
|
29
|
+
expect(fields["created_at"]).to be_nil
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "forces the c_at timestamps to UTC" do
|
|
33
|
-
quiz.created_at.
|
|
33
|
+
expect(quiz.created_at).to be_within(10).of(Time.now.utc)
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -41,11 +41,11 @@ describe Mongoid::Timestamps::Created::Short do
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
it "runs the created callbacks" do
|
|
44
|
-
quiz.created_at.
|
|
44
|
+
expect(quiz.created_at).to be_within(10).of(Time.now.utc)
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "allows access via the raw field" do
|
|
48
|
-
quiz.c_at.
|
|
48
|
+
expect(quiz.c_at).to eq(quiz.created_at)
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
end
|
|
@@ -18,15 +18,15 @@ describe Mongoid::Timestamps::Created do
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "adds created_at to the document" do
|
|
21
|
-
fields["created_at"].
|
|
21
|
+
expect(fields["created_at"]).to_not be_nil
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "does not add updated_at to the document" do
|
|
25
|
-
fields["updated_at"].
|
|
25
|
+
expect(fields["updated_at"]).to be_nil
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "forces the created_at timestamps to UTC" do
|
|
29
|
-
quiz.created_at.
|
|
29
|
+
expect(quiz.created_at).to be_within(10).of(Time.now.utc)
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
@@ -37,8 +37,8 @@ describe Mongoid::Timestamps::Created do
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
it "runs the created callbacks" do
|
|
40
|
-
quiz.created_at.
|
|
41
|
-
quiz.created_at.
|
|
40
|
+
expect(quiz.created_at).to_not be_nil
|
|
41
|
+
expect(quiz.created_at).to be_within(10).of(Time.now.utc)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -73,11 +73,11 @@ describe Mongoid::Timestamps::Timeless do
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
it "does not set the created timestamp" do
|
|
76
|
-
document.created_at.
|
|
76
|
+
expect(document.created_at).to be_nil
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
it "does not set the updated timestamp" do
|
|
80
|
-
document.updated_at.
|
|
80
|
+
expect(document.updated_at).to be_nil
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
it "clears out the timeless option after save" do
|
|
@@ -91,7 +91,7 @@ describe Mongoid::Timestamps::Timeless do
|
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
it "sets the updated timestamp" do
|
|
94
|
-
document.updated_at.
|
|
94
|
+
expect(document.updated_at).to_not be_nil
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
end
|
|
@@ -103,11 +103,11 @@ describe Mongoid::Timestamps::Timeless do
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
it "does not set the created timestamp" do
|
|
106
|
-
document.created_at.
|
|
106
|
+
expect(document.created_at).to be_nil
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
it "does not set the updated timestamp" do
|
|
110
|
-
document.updated_at.
|
|
110
|
+
expect(document.updated_at).to be_nil
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
it "clears out the timeless option after save" do
|
|
@@ -121,7 +121,7 @@ describe Mongoid::Timestamps::Timeless do
|
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
it "sets the updated timestamp" do
|
|
124
|
-
document.updated_at.
|
|
124
|
+
expect(document.updated_at).to_not be_nil
|
|
125
125
|
end
|
|
126
126
|
end
|
|
127
127
|
end
|
|
@@ -18,23 +18,23 @@ describe Mongoid::Timestamps::Updated::Short do
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "does not add c_at to the document" do
|
|
21
|
-
fields["c_at"].
|
|
21
|
+
expect(fields["c_at"]).to be_nil
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "adds u_at to the document" do
|
|
25
|
-
fields["u_at"].
|
|
25
|
+
expect(fields["u_at"]).to_not be_nil
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "does not add the long updated_at" do
|
|
29
|
-
fields["updated_at"].
|
|
29
|
+
expect(fields["updated_at"]).to be_nil
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "forces the updated_at timestamps to UTC" do
|
|
33
|
-
agent.updated_at.
|
|
33
|
+
expect(agent.updated_at).to be_within(10).of(Time.now.utc)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "aliases the raw field" do
|
|
37
|
-
agent.u_at.
|
|
37
|
+
expect(agent.u_at).to eq(agent.updated_at)
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
@@ -51,11 +51,11 @@ describe Mongoid::Timestamps::Updated::Short do
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
it "does not override it with the default" do
|
|
54
|
-
doc.updated_at.
|
|
54
|
+
expect(doc.updated_at).to eq(time)
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it "does not persist an auto value" do
|
|
58
|
-
doc.reload.updated_at.
|
|
58
|
+
expect(doc.reload.updated_at).to eq(time)
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
end
|
|
@@ -63,7 +63,7 @@ describe Mongoid::Timestamps::Updated::Short do
|
|
|
63
63
|
context "when the document has not changed" do
|
|
64
64
|
|
|
65
65
|
let(:agent) do
|
|
66
|
-
ShortAgent.instantiate("_id" =>
|
|
66
|
+
ShortAgent.instantiate("_id" => BSON::ObjectId.new, "account_ids" => [])
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
before do
|
|
@@ -71,7 +71,7 @@ describe Mongoid::Timestamps::Updated::Short do
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
it "does not run the update callbacks" do
|
|
74
|
-
agent.
|
|
74
|
+
expect(agent).to receive(:updated_at=).never
|
|
75
75
|
agent.save
|
|
76
76
|
end
|
|
77
77
|
end
|
|
@@ -83,8 +83,8 @@ describe Mongoid::Timestamps::Updated::Short do
|
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
it "runs the update callbacks" do
|
|
86
|
-
agent.updated_at.
|
|
87
|
-
agent.updated_at.
|
|
86
|
+
expect(agent.updated_at).to_not be_nil
|
|
87
|
+
expect(agent.updated_at).to be_within(10).of(Time.now.utc)
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
end
|
|
@@ -18,19 +18,15 @@ describe Mongoid::Timestamps::Updated do
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "does not add created_at to the document" do
|
|
21
|
-
fields["created_at"].
|
|
21
|
+
expect(fields["created_at"]).to be_nil
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "adds updated_at to the document" do
|
|
25
|
-
fields["updated_at"].
|
|
25
|
+
expect(fields["updated_at"]).to_not be_nil
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "forces the updated_at timestamps to UTC" do
|
|
29
|
-
agent.updated_at.
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "includes a record_timestamps class_accessor to ease AR compatibility" do
|
|
33
|
-
Agent.should.respond_to? :record_timestamps
|
|
29
|
+
expect(agent.updated_at).to be_within(10).of(Time.now.utc)
|
|
34
30
|
end
|
|
35
31
|
end
|
|
36
32
|
|
|
@@ -47,11 +43,11 @@ describe Mongoid::Timestamps::Updated do
|
|
|
47
43
|
end
|
|
48
44
|
|
|
49
45
|
it "does not override it with the default" do
|
|
50
|
-
doc.updated_at.
|
|
46
|
+
expect(doc.updated_at).to eq(time)
|
|
51
47
|
end
|
|
52
48
|
|
|
53
49
|
it "does not persist an auto value" do
|
|
54
|
-
doc.reload.updated_at.
|
|
50
|
+
expect(doc.reload.updated_at).to eq(time)
|
|
55
51
|
end
|
|
56
52
|
end
|
|
57
53
|
end
|
|
@@ -59,7 +55,7 @@ describe Mongoid::Timestamps::Updated do
|
|
|
59
55
|
context "when the document has not changed" do
|
|
60
56
|
|
|
61
57
|
let(:agent) do
|
|
62
|
-
Agent.instantiate("_id" =>
|
|
58
|
+
Agent.instantiate("_id" => BSON::ObjectId.new, "account_ids" => [])
|
|
63
59
|
end
|
|
64
60
|
|
|
65
61
|
before do
|
|
@@ -67,7 +63,7 @@ describe Mongoid::Timestamps::Updated do
|
|
|
67
63
|
end
|
|
68
64
|
|
|
69
65
|
it "does not run the update callbacks" do
|
|
70
|
-
agent.
|
|
66
|
+
expect(agent).to receive(:updated_at=).never
|
|
71
67
|
agent.save
|
|
72
68
|
end
|
|
73
69
|
end
|
|
@@ -79,8 +75,8 @@ describe Mongoid::Timestamps::Updated do
|
|
|
79
75
|
end
|
|
80
76
|
|
|
81
77
|
it "runs the update callbacks" do
|
|
82
|
-
agent.updated_at.
|
|
83
|
-
agent.updated_at.
|
|
78
|
+
expect(agent.updated_at).to_not be_nil
|
|
79
|
+
expect(agent.updated_at).to be_within(10).of(Time.now.utc)
|
|
84
80
|
end
|
|
85
81
|
end
|
|
86
82
|
end
|
|
@@ -18,27 +18,23 @@ describe Mongoid::Timestamps do
|
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it "adds created_at to the document" do
|
|
21
|
-
fields["created_at"].
|
|
21
|
+
expect(fields["created_at"]).to_not be_nil
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
it "adds updated_at to the document" do
|
|
25
|
-
fields["updated_at"].
|
|
25
|
+
expect(fields["updated_at"]).to_not be_nil
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "forces the created_at timestamps to UTC" do
|
|
29
|
-
document.created_at.
|
|
29
|
+
expect(document.created_at).to be_within(10).of(Time.now.utc)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "forces the updated_at timestamps to UTC" do
|
|
33
|
-
document.updated_at.
|
|
33
|
+
expect(document.updated_at).to be_within(10).of(Time.now.utc)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it "ensures created_at equals updated_at on new records" do
|
|
37
|
-
document.updated_at.
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "includes a record_timestamps class_accessor to ease AR compatibility" do
|
|
41
|
-
Dokument.should.respond_to? :record_timestamps
|
|
37
|
+
expect(document.updated_at).to eq(document.created_at)
|
|
42
38
|
end
|
|
43
39
|
end
|
|
44
40
|
|
|
@@ -53,7 +49,7 @@ describe Mongoid::Timestamps do
|
|
|
53
49
|
end
|
|
54
50
|
|
|
55
51
|
it "does not run the update callbacks" do
|
|
56
|
-
document.
|
|
52
|
+
expect(document).to receive(:updated_at=).never
|
|
57
53
|
document.save
|
|
58
54
|
end
|
|
59
55
|
end
|
|
@@ -70,7 +66,7 @@ describe Mongoid::Timestamps do
|
|
|
70
66
|
end
|
|
71
67
|
|
|
72
68
|
it "does not set updated at" do
|
|
73
|
-
document.
|
|
69
|
+
expect(document).to receive(:updated_at=).never
|
|
74
70
|
document.save
|
|
75
71
|
end
|
|
76
72
|
end
|
|
@@ -82,7 +78,7 @@ describe Mongoid::Timestamps do
|
|
|
82
78
|
end
|
|
83
79
|
|
|
84
80
|
it "runs the update callbacks" do
|
|
85
|
-
document.updated_at.
|
|
81
|
+
expect(document.updated_at).to eq(document.created_at)
|
|
86
82
|
end
|
|
87
83
|
end
|
|
88
84
|
|
|
@@ -106,7 +102,7 @@ describe Mongoid::Timestamps do
|
|
|
106
102
|
end
|
|
107
103
|
|
|
108
104
|
it "updates the root document updated at" do
|
|
109
|
-
document.updated_at.
|
|
105
|
+
expect(document.updated_at).to be_within(1).of(Time.now)
|
|
110
106
|
end
|
|
111
107
|
end
|
|
112
108
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Traversable do
|
|
4
4
|
|
|
5
5
|
describe "#_children" do
|
|
6
6
|
|
|
@@ -24,11 +24,11 @@ describe Mongoid::Hierarchy do
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it "includes embeds_one documents" do
|
|
27
|
-
person._children.
|
|
27
|
+
expect(person._children).to include(name)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it "includes embeds_many documents" do
|
|
31
|
-
person._children.
|
|
31
|
+
expect(person._children).to include(address)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
@@ -53,15 +53,15 @@ describe Mongoid::Hierarchy do
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
it "includes embeds_one documents" do
|
|
56
|
-
person._children.
|
|
56
|
+
expect(person._children).to include(name)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
it "includes embeds_many documents" do
|
|
60
|
-
person._children.
|
|
60
|
+
expect(person._children).to include(address)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
it "includes embedded documents multiple levels deep" do
|
|
64
|
-
person._children.
|
|
64
|
+
expect(person._children).to include(location)
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
end
|
|
@@ -71,14 +71,14 @@ describe Mongoid::Hierarchy do
|
|
|
71
71
|
context "when the document is a subclass" do
|
|
72
72
|
|
|
73
73
|
it "returns true" do
|
|
74
|
-
Circle.
|
|
74
|
+
expect(Circle).to be_hereditary
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
context "when the document is not a subclass" do
|
|
79
79
|
|
|
80
80
|
it "returns false" do
|
|
81
|
-
Shape.
|
|
81
|
+
expect(Shape).to_not be_hereditary
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
end
|
|
@@ -88,14 +88,14 @@ describe Mongoid::Hierarchy do
|
|
|
88
88
|
context "when the document is a subclass" do
|
|
89
89
|
|
|
90
90
|
it "returns true" do
|
|
91
|
-
Circle.new.
|
|
91
|
+
expect(Circle.new).to be_hereditary
|
|
92
92
|
end
|
|
93
93
|
end
|
|
94
94
|
|
|
95
95
|
context "when the document is not a subclass" do
|
|
96
96
|
|
|
97
97
|
it "returns false" do
|
|
98
|
-
Shape.new.
|
|
98
|
+
expect(Shape.new).to_not be_hereditary
|
|
99
99
|
end
|
|
100
100
|
end
|
|
101
101
|
end
|
|
@@ -122,7 +122,7 @@ describe Mongoid::Hierarchy do
|
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
it "sets the parent document" do
|
|
125
|
-
address._parent.
|
|
125
|
+
expect(address._parent).to eq(person)
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
@@ -143,7 +143,7 @@ describe Mongoid::Hierarchy do
|
|
|
143
143
|
end
|
|
144
144
|
|
|
145
145
|
it "removes the relation instance" do
|
|
146
|
-
person.name.
|
|
146
|
+
expect(person.name).to be_nil
|
|
147
147
|
end
|
|
148
148
|
end
|
|
149
149
|
|
|
@@ -158,7 +158,7 @@ describe Mongoid::Hierarchy do
|
|
|
158
158
|
end
|
|
159
159
|
|
|
160
160
|
it "removes the document from the relation target" do
|
|
161
|
-
person.addresses.
|
|
161
|
+
expect(person.addresses).to be_empty
|
|
162
162
|
end
|
|
163
163
|
end
|
|
164
164
|
end
|
|
@@ -180,14 +180,14 @@ describe Mongoid::Hierarchy do
|
|
|
180
180
|
context "when the document is not the root" do
|
|
181
181
|
|
|
182
182
|
it "returns the root" do
|
|
183
|
-
address._root.
|
|
183
|
+
expect(address._root).to eq(person)
|
|
184
184
|
end
|
|
185
185
|
end
|
|
186
186
|
|
|
187
187
|
context "when the document is the root" do
|
|
188
188
|
|
|
189
189
|
it "returns self" do
|
|
190
|
-
person._root.
|
|
190
|
+
expect(person._root).to eq(person)
|
|
191
191
|
end
|
|
192
192
|
end
|
|
193
193
|
end
|
|
@@ -203,7 +203,7 @@ describe Mongoid::Hierarchy do
|
|
|
203
203
|
end
|
|
204
204
|
|
|
205
205
|
it "returns true" do
|
|
206
|
-
band.
|
|
206
|
+
expect(band).to be__root
|
|
207
207
|
end
|
|
208
208
|
end
|
|
209
209
|
|
|
@@ -216,7 +216,7 @@ describe Mongoid::Hierarchy do
|
|
|
216
216
|
context "when the document is root in a cyclic relation" do
|
|
217
217
|
|
|
218
218
|
it "returns true" do
|
|
219
|
-
root_role.
|
|
219
|
+
expect(root_role).to be__root
|
|
220
220
|
end
|
|
221
221
|
end
|
|
222
222
|
|
|
@@ -227,7 +227,7 @@ describe Mongoid::Hierarchy do
|
|
|
227
227
|
end
|
|
228
228
|
|
|
229
229
|
it "returns false" do
|
|
230
|
-
child_role.
|
|
230
|
+
expect(child_role).to_not be__root
|
|
231
231
|
end
|
|
232
232
|
end
|
|
233
233
|
end
|
|
@@ -244,7 +244,7 @@ describe Mongoid::Hierarchy do
|
|
|
244
244
|
end
|
|
245
245
|
|
|
246
246
|
it "returns false" do
|
|
247
|
-
address.
|
|
247
|
+
expect(address).to_not be__root
|
|
248
248
|
end
|
|
249
249
|
end
|
|
250
250
|
end
|