mongoid 3.1.7 → 4.0.0.alpha1
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 +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- 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/{dirty.rb → changeable.rb} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- 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 +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -0
- data/lib/mongoid/matchable.rb +152 -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/persistable.rb +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -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 +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- 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 +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- 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/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.rb +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -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 +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- 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 +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- 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 +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- 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/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/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- 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 +0 -2
- 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/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -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/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 +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- 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} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- 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 +60 -56
- 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 +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -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 +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- 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_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 +3 -3
- 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 +7 -7
- 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/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 +9 -9
- 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 +15 -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 +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- 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} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -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 +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -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 +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -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} +19 -14
- 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 +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- 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 +22 -33
- 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 +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- 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 +143 -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 +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- 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 +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- 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 +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -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 +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- 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/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -283
- 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/criterion/findable.rb +0 -179
- 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.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- 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.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- 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/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.rb +0 -214
- 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/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- 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/draft.rb +0 -9
- 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/#atomic_spec.rb# +0 -365
- 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/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
@@ -9,7 +9,7 @@ describe Mongoid::Fields::Standard do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "returns false" do
|
12
|
-
field.
|
12
|
+
expect(field).to_not be_lazy
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -42,7 +42,7 @@ describe Mongoid::Fields::Standard do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "returns true" do
|
45
|
-
field.
|
45
|
+
expect(field).to be_pre_processed
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
@@ -58,7 +58,7 @@ describe Mongoid::Fields::Standard do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it "returns false" do
|
61
|
-
field.
|
61
|
+
expect(field).to_not be_pre_processed
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -75,7 +75,7 @@ describe Mongoid::Fields::Standard do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "returns true" do
|
78
|
-
field.
|
78
|
+
expect(field).to be_pre_processed
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -90,7 +90,7 @@ describe Mongoid::Fields::Standard do
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it "returns false" do
|
93
|
-
field.
|
93
|
+
expect(field).to_not be_pre_processed
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -102,7 +102,7 @@ describe Mongoid::Fields::Standard do
|
|
102
102
|
end
|
103
103
|
|
104
104
|
it "does not conflict with the ruby core hash" do
|
105
|
-
image.hash_is_hash.
|
105
|
+
expect(image.hash_is_hash).to be true
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
@@ -119,14 +119,14 @@ describe Mongoid::Fields::Standard do
|
|
119
119
|
end
|
120
120
|
|
121
121
|
it "allows normal hash access" do
|
122
|
-
hash[:key].
|
122
|
+
expect(hash[:key]).to eq("value")
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
126
126
|
context "when getting a non existant value" do
|
127
127
|
|
128
128
|
it "returns nil" do
|
129
|
-
hash[:key].
|
129
|
+
expect(hash[:key]).to be_nil
|
130
130
|
end
|
131
131
|
end
|
132
132
|
end
|
@@ -138,11 +138,11 @@ describe Mongoid::Fields::Standard do
|
|
138
138
|
end
|
139
139
|
|
140
140
|
it "inherits the parents deserialize method" do
|
141
|
-
Thumbnail.demongoize("testy").name.
|
141
|
+
expect(Thumbnail.demongoize("testy").name).to eq("testy")
|
142
142
|
end
|
143
143
|
|
144
144
|
it "inherits the parents serialize method" do
|
145
|
-
thumbnail.mongoize.
|
145
|
+
expect(thumbnail.mongoize).to eq("test")
|
146
146
|
end
|
147
147
|
|
148
148
|
context "when instantiating the class" do
|
@@ -155,11 +155,11 @@ describe Mongoid::Fields::Standard do
|
|
155
155
|
end
|
156
156
|
|
157
157
|
it "deserializes the parent type" do
|
158
|
-
movie.poster.name.
|
158
|
+
expect(movie.poster.name).to eq("poster")
|
159
159
|
end
|
160
160
|
|
161
161
|
it "deserializes the child type" do
|
162
|
-
movie.poster_thumb.name.
|
162
|
+
expect(movie.poster_thumb.name).to eq("thumb")
|
163
163
|
end
|
164
164
|
end
|
165
165
|
end
|
data/spec/mongoid/fields_spec.rb
CHANGED
@@ -31,10 +31,14 @@ describe Mongoid::Fields do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "returns all the translations" do
|
34
|
-
translations.
|
34
|
+
expect(translations).to eq(
|
35
35
|
{ "en" => "test", "de" => "The best" }
|
36
36
|
)
|
37
37
|
end
|
38
|
+
|
39
|
+
it "returns translations as a HashWithIndifferentAccess" do
|
40
|
+
expect(translations[:en]).to eq("test")
|
41
|
+
end
|
38
42
|
end
|
39
43
|
|
40
44
|
context "when translations do not exist" do
|
@@ -42,25 +46,33 @@ describe Mongoid::Fields do
|
|
42
46
|
context "when no default is provided" do
|
43
47
|
|
44
48
|
it "returns an empty hash" do
|
45
|
-
product.description_translations.
|
49
|
+
expect(product.description_translations).to be_empty
|
46
50
|
end
|
47
51
|
end
|
48
52
|
|
49
53
|
context "when a default is provided" do
|
50
54
|
|
51
55
|
it "returns the translations with the default" do
|
52
|
-
product.name_translations.
|
56
|
+
expect(product.name_translations).to eq(
|
53
57
|
{ "en" => "no translation" }
|
54
58
|
)
|
55
59
|
end
|
56
60
|
end
|
57
61
|
end
|
62
|
+
|
63
|
+
it "should have alias method #\{field}_t" do
|
64
|
+
product.method(:name_t).should eq product.method(:name_translations)
|
65
|
+
end
|
58
66
|
end
|
59
67
|
|
60
68
|
context "when the field is not localized" do
|
61
69
|
|
62
70
|
it "does not respond to the method" do
|
63
|
-
product.
|
71
|
+
expect(product).to_not respond_to(:price_translations)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "does not respond to the alias method" do
|
75
|
+
product.should_not respond_to(:price_t)
|
64
76
|
end
|
65
77
|
end
|
66
78
|
end
|
@@ -88,7 +100,7 @@ describe Mongoid::Fields do
|
|
88
100
|
end
|
89
101
|
|
90
102
|
it "sets the raw values of the translations" do
|
91
|
-
product.description_translations.
|
103
|
+
expect(product.description_translations).to eq(translations)
|
92
104
|
end
|
93
105
|
|
94
106
|
context "when saving the new translations" do
|
@@ -98,7 +110,7 @@ describe Mongoid::Fields do
|
|
98
110
|
end
|
99
111
|
|
100
112
|
it "persists the changes" do
|
101
|
-
product.reload.description_translations.
|
113
|
+
expect(product.reload.description_translations).to eq(translations)
|
102
114
|
end
|
103
115
|
|
104
116
|
context "when updating the translations" do
|
@@ -109,7 +121,7 @@ describe Mongoid::Fields do
|
|
109
121
|
end
|
110
122
|
|
111
123
|
it "persists the changes" do
|
112
|
-
product.reload.description_translations.
|
124
|
+
expect(product.reload.description_translations).to eq(
|
113
125
|
{ "en" => "overwritten" }
|
114
126
|
)
|
115
127
|
end
|
@@ -128,7 +140,7 @@ describe Mongoid::Fields do
|
|
128
140
|
end
|
129
141
|
|
130
142
|
it "sets the mongoized values of the translations" do
|
131
|
-
dictionary.description_translations.
|
143
|
+
expect(dictionary.description_translations).to eq(
|
132
144
|
{ "en" => "1", "de" => "2" }
|
133
145
|
)
|
134
146
|
end
|
@@ -140,7 +152,7 @@ describe Mongoid::Fields do
|
|
140
152
|
end
|
141
153
|
|
142
154
|
it "persists the changes" do
|
143
|
-
dictionary.reload.description_translations.
|
155
|
+
expect(dictionary.reload.description_translations).to eq(
|
144
156
|
{ "en" => "1", "de" => "2" }
|
145
157
|
)
|
146
158
|
end
|
@@ -153,19 +165,27 @@ describe Mongoid::Fields do
|
|
153
165
|
end
|
154
166
|
|
155
167
|
it "persists the changes" do
|
156
|
-
dictionary.reload.description_translations.
|
168
|
+
expect(dictionary.reload.description_translations).to eq(
|
157
169
|
{ "en" => "overwritten" }
|
158
170
|
)
|
159
171
|
end
|
160
172
|
end
|
161
173
|
end
|
162
174
|
end
|
175
|
+
|
176
|
+
it "should have alias method #\{field}_t=" do
|
177
|
+
product.method(:name_t=).should eq product.method(:name_translations=)
|
178
|
+
end
|
163
179
|
end
|
164
180
|
|
165
181
|
context "when the field is not localized" do
|
166
182
|
|
167
183
|
it "does not respond to the method" do
|
168
|
-
product.
|
184
|
+
expect(product).to_not respond_to(:price_translations=)
|
185
|
+
end
|
186
|
+
|
187
|
+
it "does not respond to the alias method" do
|
188
|
+
product.should_not respond_to(:price_t=)
|
169
189
|
end
|
170
190
|
end
|
171
191
|
end
|
@@ -179,7 +199,7 @@ describe Mongoid::Fields do
|
|
179
199
|
context "when the document is subclassed" do
|
180
200
|
|
181
201
|
it "does not include the child aliases" do
|
182
|
-
person.aliased_fields.keys.
|
202
|
+
expect(person.aliased_fields.keys).to_not include("spec")
|
183
203
|
end
|
184
204
|
end
|
185
205
|
end
|
@@ -193,19 +213,19 @@ describe Mongoid::Fields do
|
|
193
213
|
end
|
194
214
|
|
195
215
|
it "includes the _id field" do
|
196
|
-
shape.attribute_names.
|
216
|
+
expect(shape.attribute_names).to include("_id")
|
197
217
|
end
|
198
218
|
|
199
219
|
it "includes the _type field" do
|
200
|
-
shape.attribute_names.
|
220
|
+
expect(shape.attribute_names).to include("_type")
|
201
221
|
end
|
202
222
|
|
203
223
|
it "includes its own fields" do
|
204
|
-
shape.attribute_names.
|
224
|
+
expect(shape.attribute_names).to include("x")
|
205
225
|
end
|
206
226
|
|
207
227
|
it "does not return subclass fields" do
|
208
|
-
shape.attribute_names.
|
228
|
+
expect(shape.attribute_names).to_not include("radius")
|
209
229
|
end
|
210
230
|
end
|
211
231
|
|
@@ -216,23 +236,23 @@ describe Mongoid::Fields do
|
|
216
236
|
end
|
217
237
|
|
218
238
|
it "includes the _id field" do
|
219
|
-
circle.attribute_names.
|
239
|
+
expect(circle.attribute_names).to include("_id")
|
220
240
|
end
|
221
241
|
|
222
242
|
it "includes the _type field" do
|
223
|
-
circle.attribute_names.
|
243
|
+
expect(circle.attribute_names).to include("_type")
|
224
244
|
end
|
225
245
|
|
226
246
|
it "includes the first parent field" do
|
227
|
-
circle.attribute_names.
|
247
|
+
expect(circle.attribute_names).to include("x")
|
228
248
|
end
|
229
249
|
|
230
250
|
it "includes the second parent field" do
|
231
|
-
circle.attribute_names.
|
251
|
+
expect(circle.attribute_names).to include("y")
|
232
252
|
end
|
233
253
|
|
234
254
|
it "includes the child fields" do
|
235
|
-
circle.attribute_names.
|
255
|
+
expect(circle.attribute_names).to include("radius")
|
236
256
|
end
|
237
257
|
end
|
238
258
|
end
|
@@ -242,42 +262,42 @@ describe Mongoid::Fields do
|
|
242
262
|
context "when the class is a parent" do
|
243
263
|
|
244
264
|
it "includes the _id field" do
|
245
|
-
Shape.attribute_names.
|
265
|
+
expect(Shape.attribute_names).to include("_id")
|
246
266
|
end
|
247
267
|
|
248
268
|
it "includes the _type field" do
|
249
|
-
Shape.attribute_names.
|
269
|
+
expect(Shape.attribute_names).to include("_type")
|
250
270
|
end
|
251
271
|
|
252
272
|
it "includes its own fields" do
|
253
|
-
Shape.attribute_names.
|
273
|
+
expect(Shape.attribute_names).to include("x")
|
254
274
|
end
|
255
275
|
|
256
276
|
it "does not return subclass fields" do
|
257
|
-
Shape.attribute_names.
|
277
|
+
expect(Shape.attribute_names).to_not include("radius")
|
258
278
|
end
|
259
279
|
end
|
260
280
|
|
261
281
|
context "when the class is a subclass" do
|
262
282
|
|
263
283
|
it "includes the _id field" do
|
264
|
-
Circle.attribute_names.
|
284
|
+
expect(Circle.attribute_names).to include("_id")
|
265
285
|
end
|
266
286
|
|
267
287
|
it "includes the _type field" do
|
268
|
-
Circle.attribute_names.
|
288
|
+
expect(Circle.attribute_names).to include("_type")
|
269
289
|
end
|
270
290
|
|
271
291
|
it "includes the first parent field" do
|
272
|
-
Circle.attribute_names.
|
292
|
+
expect(Circle.attribute_names).to include("x")
|
273
293
|
end
|
274
294
|
|
275
295
|
it "includes the second parent field" do
|
276
|
-
Circle.attribute_names.
|
296
|
+
expect(Circle.attribute_names).to include("y")
|
277
297
|
end
|
278
298
|
|
279
299
|
it "includes the child fields" do
|
280
|
-
Circle.attribute_names.
|
300
|
+
expect(Circle.attribute_names).to include("radius")
|
281
301
|
end
|
282
302
|
end
|
283
303
|
end
|
@@ -302,7 +322,7 @@ describe Mongoid::Fields do
|
|
302
322
|
end
|
303
323
|
|
304
324
|
it "adds the field to the model" do
|
305
|
-
Band.fields["acceptable"].
|
325
|
+
expect(Band.fields["acceptable"]).to_not be_nil
|
306
326
|
end
|
307
327
|
end
|
308
328
|
|
@@ -313,7 +333,7 @@ describe Mongoid::Fields do
|
|
313
333
|
end
|
314
334
|
|
315
335
|
it "adds the field to the model" do
|
316
|
-
Band.fields["acceptable"].
|
336
|
+
expect(Band.fields["acceptable"]).to_not be_nil
|
317
337
|
end
|
318
338
|
end
|
319
339
|
end
|
@@ -333,7 +353,7 @@ describe Mongoid::Fields do
|
|
333
353
|
context "when the field is binary" do
|
334
354
|
|
335
355
|
let(:binary) do
|
336
|
-
|
356
|
+
BSON::Binary.new("testing", :md5)
|
337
357
|
end
|
338
358
|
|
339
359
|
let(:registry) do
|
@@ -341,7 +361,7 @@ describe Mongoid::Fields do
|
|
341
361
|
end
|
342
362
|
|
343
363
|
it "returns the binary data intact" do
|
344
|
-
registry.data.
|
364
|
+
expect(registry.data).to eq(binary)
|
345
365
|
end
|
346
366
|
end
|
347
367
|
|
@@ -362,7 +382,7 @@ describe Mongoid::Fields do
|
|
362
382
|
end
|
363
383
|
|
364
384
|
it "returns the default locale value" do
|
365
|
-
description.
|
385
|
+
expect(description).to eq("The best")
|
366
386
|
end
|
367
387
|
end
|
368
388
|
|
@@ -382,7 +402,7 @@ describe Mongoid::Fields do
|
|
382
402
|
end
|
383
403
|
|
384
404
|
it "returns the set locale value" do
|
385
|
-
description.
|
405
|
+
expect(description).to eq("The best")
|
386
406
|
end
|
387
407
|
end
|
388
408
|
|
@@ -403,7 +423,7 @@ describe Mongoid::Fields do
|
|
403
423
|
end
|
404
424
|
|
405
425
|
it "returns the current locale value" do
|
406
|
-
description.
|
426
|
+
expect(description).to eq("Cheaper drinks")
|
407
427
|
end
|
408
428
|
end
|
409
429
|
end
|
@@ -417,7 +437,7 @@ describe Mongoid::Fields do
|
|
417
437
|
context "when the attribute has not been assigned" do
|
418
438
|
|
419
439
|
it "delgates to the getter" do
|
420
|
-
person.age_before_type_cast.
|
440
|
+
expect(person.age_before_type_cast).to eq(person.age)
|
421
441
|
end
|
422
442
|
end
|
423
443
|
|
@@ -425,7 +445,7 @@ describe Mongoid::Fields do
|
|
425
445
|
|
426
446
|
it "returns the attribute before type cast" do
|
427
447
|
person.age = "old"
|
428
|
-
person.age_before_type_cast.
|
448
|
+
expect(person.age_before_type_cast).to eq("old")
|
429
449
|
end
|
430
450
|
end
|
431
451
|
end
|
@@ -436,10 +456,24 @@ describe Mongoid::Fields do
|
|
436
456
|
Product.new
|
437
457
|
end
|
438
458
|
|
459
|
+
context "when setting via the setter" do
|
460
|
+
|
461
|
+
it "returns the set value" do
|
462
|
+
expect(product.price = 10).to eq(10)
|
463
|
+
end
|
464
|
+
end
|
465
|
+
|
466
|
+
context "when setting via send" do
|
467
|
+
|
468
|
+
it "returns the set value" do
|
469
|
+
expect(product.send(:price=, 10)).to eq(10)
|
470
|
+
end
|
471
|
+
end
|
472
|
+
|
439
473
|
context "when the field is binary" do
|
440
474
|
|
441
475
|
let(:binary) do
|
442
|
-
|
476
|
+
BSON::Binary.new("testing", :md5)
|
443
477
|
end
|
444
478
|
|
445
479
|
let(:registry) do
|
@@ -451,7 +485,7 @@ describe Mongoid::Fields do
|
|
451
485
|
end
|
452
486
|
|
453
487
|
it "returns the binary data intact" do
|
454
|
-
registry.data.
|
488
|
+
expect(registry.data).to eq(binary)
|
455
489
|
end
|
456
490
|
end
|
457
491
|
|
@@ -470,7 +504,7 @@ describe Mongoid::Fields do
|
|
470
504
|
end
|
471
505
|
|
472
506
|
it "allows the set" do
|
473
|
-
product.stores.
|
507
|
+
expect(product.stores).to be_nil
|
474
508
|
end
|
475
509
|
end
|
476
510
|
|
@@ -482,11 +516,11 @@ describe Mongoid::Fields do
|
|
482
516
|
end
|
483
517
|
|
484
518
|
it "allows the set of nil values" do
|
485
|
-
product.stores.
|
519
|
+
expect(product.stores).to eq([ "kadewe", nil ])
|
486
520
|
end
|
487
521
|
|
488
522
|
it "persists the nil values" do
|
489
|
-
product.reload.stores.
|
523
|
+
expect(product.reload.stores).to eq([ "kadewe", nil ])
|
490
524
|
end
|
491
525
|
end
|
492
526
|
|
@@ -498,11 +532,11 @@ describe Mongoid::Fields do
|
|
498
532
|
end
|
499
533
|
|
500
534
|
it "reverses the values" do
|
501
|
-
product.stores.
|
535
|
+
expect(product.stores).to eq([ "karstadt", "kadewe" ])
|
502
536
|
end
|
503
537
|
|
504
538
|
it "persists the changes" do
|
505
|
-
product.reload.stores.
|
539
|
+
expect(product.reload.stores).to eq([ "karstadt", "kadewe" ])
|
506
540
|
end
|
507
541
|
end
|
508
542
|
end
|
@@ -520,7 +554,7 @@ describe Mongoid::Fields do
|
|
520
554
|
end
|
521
555
|
|
522
556
|
it "sets the value in the default locale" do
|
523
|
-
description.
|
557
|
+
expect(description).to eq({ "en" => "Cheap drinks" })
|
524
558
|
end
|
525
559
|
end
|
526
560
|
|
@@ -540,7 +574,7 @@ describe Mongoid::Fields do
|
|
540
574
|
end
|
541
575
|
|
542
576
|
it "sets the value in the default locale" do
|
543
|
-
description.
|
577
|
+
expect(description).to eq({ "de" => "Cheaper drinks" })
|
544
578
|
end
|
545
579
|
end
|
546
580
|
|
@@ -561,7 +595,7 @@ describe Mongoid::Fields do
|
|
561
595
|
end
|
562
596
|
|
563
597
|
it "sets the value in both locales" do
|
564
|
-
description.
|
598
|
+
expect(description).to eq(
|
565
599
|
{ "de" => "Cheaper drinks", "en" => "Cheap drinks" }
|
566
600
|
)
|
567
601
|
end
|
@@ -584,7 +618,7 @@ describe Mongoid::Fields do
|
|
584
618
|
context "when provided a default array" do
|
585
619
|
|
586
620
|
before do
|
587
|
-
Person.field(:array_testing, type: Array, default: [])
|
621
|
+
Person.field(:array_testing, type: Array, default: [], overwrite: true)
|
588
622
|
end
|
589
623
|
|
590
624
|
after do
|
@@ -593,7 +627,7 @@ describe Mongoid::Fields do
|
|
593
627
|
end
|
594
628
|
|
595
629
|
it "returns an equal object of a different instance" do
|
596
|
-
person_one.array_testing.object_id.
|
630
|
+
expect(person_one.array_testing.object_id).to_not eq(
|
597
631
|
person_two.array_testing.object_id
|
598
632
|
)
|
599
633
|
end
|
@@ -602,7 +636,7 @@ describe Mongoid::Fields do
|
|
602
636
|
context "when provided a default hash" do
|
603
637
|
|
604
638
|
before do
|
605
|
-
Person.field(:hash_testing, type: Hash, default: {})
|
639
|
+
Person.field(:hash_testing, type: Hash, default: {}, overwrite: true)
|
606
640
|
end
|
607
641
|
|
608
642
|
after do
|
@@ -610,7 +644,7 @@ describe Mongoid::Fields do
|
|
610
644
|
end
|
611
645
|
|
612
646
|
it "returns an equal object of a different instance" do
|
613
|
-
person_one.hash_testing.object_id.
|
647
|
+
expect(person_one.hash_testing.object_id).to_not eq(
|
614
648
|
person_two.hash_testing.object_id
|
615
649
|
)
|
616
650
|
end
|
@@ -624,7 +658,8 @@ describe Mongoid::Fields do
|
|
624
658
|
Person.field(
|
625
659
|
:generated_testing,
|
626
660
|
type: Float,
|
627
|
-
default: ->{ Time.now.to_f }
|
661
|
+
default: ->{ Time.now.to_f },
|
662
|
+
overwrite: true
|
628
663
|
)
|
629
664
|
end
|
630
665
|
|
@@ -634,7 +669,7 @@ describe Mongoid::Fields do
|
|
634
669
|
end
|
635
670
|
|
636
671
|
it "returns an equal object of a different instance" do
|
637
|
-
person_one.generated_testing.object_id.
|
672
|
+
expect(person_one.generated_testing.object_id).to_not eq(
|
638
673
|
person_two.generated_testing.object_id
|
639
674
|
)
|
640
675
|
end
|
@@ -646,7 +681,8 @@ describe Mongoid::Fields do
|
|
646
681
|
Person.field(
|
647
682
|
:rank,
|
648
683
|
type: Integer,
|
649
|
-
default: ->{ title? ? 1 : 2 }
|
684
|
+
default: ->{ title? ? 1 : 2 },
|
685
|
+
overwrite: true
|
650
686
|
)
|
651
687
|
end
|
652
688
|
|
@@ -656,7 +692,7 @@ describe Mongoid::Fields do
|
|
656
692
|
end
|
657
693
|
|
658
694
|
it "yields the document to the proc" do
|
659
|
-
Person.new.rank.
|
695
|
+
expect(Person.new.rank).to eq(2)
|
660
696
|
end
|
661
697
|
end
|
662
698
|
end
|
@@ -669,7 +705,7 @@ describe Mongoid::Fields do
|
|
669
705
|
end
|
670
706
|
|
671
707
|
it "does not return subclass defaults" do
|
672
|
-
shape.pre_processed_defaults.
|
708
|
+
expect(shape.pre_processed_defaults).to eq([ "_id", "x", "y", "_type" ])
|
673
709
|
end
|
674
710
|
end
|
675
711
|
|
@@ -680,7 +716,7 @@ describe Mongoid::Fields do
|
|
680
716
|
end
|
681
717
|
|
682
718
|
it "has the parent and child defaults" do
|
683
|
-
circle.pre_processed_defaults.
|
719
|
+
expect(circle.pre_processed_defaults).to eq([ "_id", "x", "y", "_type", "radius" ])
|
684
720
|
end
|
685
721
|
end
|
686
722
|
end
|
@@ -688,7 +724,7 @@ describe Mongoid::Fields do
|
|
688
724
|
describe ".field" do
|
689
725
|
|
690
726
|
it "returns the generated field" do
|
691
|
-
Person.field(:testing).
|
727
|
+
expect(Person.field(:testing)).to eq(Person.fields["testing"])
|
692
728
|
end
|
693
729
|
|
694
730
|
context "when the field name conflicts with mongoid's internals" do
|
@@ -703,6 +739,29 @@ describe Mongoid::Fields do
|
|
703
739
|
end
|
704
740
|
end
|
705
741
|
|
742
|
+
context "when field already exist and validate_duplicate is enable" do
|
743
|
+
|
744
|
+
before do
|
745
|
+
Mongoid.duplicate_fields_exception = true
|
746
|
+
end
|
747
|
+
|
748
|
+
after do
|
749
|
+
Mongoid.duplicate_fields_exception = false
|
750
|
+
end
|
751
|
+
|
752
|
+
it "raises an error" do
|
753
|
+
expect {
|
754
|
+
Person.field(:title)
|
755
|
+
}.to raise_error(Mongoid::Errors::InvalidField)
|
756
|
+
end
|
757
|
+
|
758
|
+
it "doesn't raise an error" do
|
759
|
+
expect {
|
760
|
+
Class.new(Person)
|
761
|
+
}.to_not raise_error
|
762
|
+
end
|
763
|
+
end
|
764
|
+
|
706
765
|
context "when the field is a time" do
|
707
766
|
|
708
767
|
let!(:time) do
|
@@ -724,7 +783,7 @@ describe Mongoid::Fields do
|
|
724
783
|
end
|
725
784
|
|
726
785
|
it "performs the necessary time conversions" do
|
727
|
-
person.lunch_time.to_s.
|
786
|
+
expect(person.lunch_time.to_s).to eq(time.getlocal.to_s)
|
728
787
|
end
|
729
788
|
end
|
730
789
|
end
|
@@ -732,7 +791,7 @@ describe Mongoid::Fields do
|
|
732
791
|
context "when providing no options" do
|
733
792
|
|
734
793
|
before do
|
735
|
-
Person.field(:testing)
|
794
|
+
Person.field(:testing, overwrite: true)
|
736
795
|
end
|
737
796
|
|
738
797
|
let(:person) do
|
@@ -740,15 +799,15 @@ describe Mongoid::Fields do
|
|
740
799
|
end
|
741
800
|
|
742
801
|
it "adds a reader for the fields defined" do
|
743
|
-
person.testing.
|
802
|
+
expect(person.testing).to eq("Test")
|
744
803
|
end
|
745
804
|
|
746
805
|
it "adds a writer for the fields defined" do
|
747
|
-
(person.testing = "Testy").
|
806
|
+
(person.testing = expect("Testy")).to eq("Testy")
|
748
807
|
end
|
749
808
|
|
750
809
|
it "adds an existance method" do
|
751
|
-
Person.new.testing
|
810
|
+
expect(Person.new.testing?).to be false
|
752
811
|
end
|
753
812
|
|
754
813
|
context "when overwriting an existing field" do
|
@@ -765,7 +824,7 @@ describe Mongoid::Fields do
|
|
765
824
|
end
|
766
825
|
|
767
826
|
it "properly overwrites the method" do
|
768
|
-
person.testing_override_called.
|
827
|
+
expect(person.testing_override_called).to be true
|
769
828
|
end
|
770
829
|
end
|
771
830
|
end
|
@@ -777,7 +836,7 @@ describe Mongoid::Fields do
|
|
777
836
|
end
|
778
837
|
|
779
838
|
it "returns the given value" do
|
780
|
-
bob.reading.
|
839
|
+
expect(bob.reading).to eq(10.023)
|
781
840
|
end
|
782
841
|
end
|
783
842
|
|
@@ -788,7 +847,7 @@ describe Mongoid::Fields do
|
|
788
847
|
end
|
789
848
|
|
790
849
|
it "adds an accessor method with a question mark" do
|
791
|
-
person.terms
|
850
|
+
expect(person.terms?).to be true
|
792
851
|
end
|
793
852
|
end
|
794
853
|
|
@@ -799,39 +858,39 @@ describe Mongoid::Fields do
|
|
799
858
|
end
|
800
859
|
|
801
860
|
before do
|
802
|
-
Person.field :aliased, as: :alias, type: Boolean
|
861
|
+
Person.field :aliased, as: :alias, type: Boolean, overwrite: true
|
803
862
|
end
|
804
863
|
|
805
864
|
it "uses the alias to write the attribute" do
|
806
|
-
(person.alias = true).
|
865
|
+
(person.alias = expect(true)).to be true
|
807
866
|
end
|
808
867
|
|
809
868
|
it "uses the alias to read the attribute" do
|
810
|
-
person.alias.
|
869
|
+
expect(person.alias).to be true
|
811
870
|
end
|
812
871
|
|
813
872
|
it "uses the alias for the query method" do
|
814
|
-
person.
|
873
|
+
expect(person).to be_alias
|
815
874
|
end
|
816
875
|
|
817
876
|
it "uses the name to write the attribute" do
|
818
|
-
(person.aliased = true).
|
877
|
+
(person.aliased = expect(true)).to be true
|
819
878
|
end
|
820
879
|
|
821
880
|
it "uses the name to read the attribute" do
|
822
|
-
person.aliased.
|
881
|
+
expect(person.aliased).to be true
|
823
882
|
end
|
824
883
|
|
825
884
|
it "uses the name for the query method" do
|
826
|
-
person.
|
885
|
+
expect(person).to be_aliased
|
827
886
|
end
|
828
887
|
|
829
888
|
it "creates dirty methods for the name" do
|
830
|
-
person.
|
889
|
+
expect(person).to respond_to(:aliased_changed?)
|
831
890
|
end
|
832
891
|
|
833
892
|
it "creates dirty methods for the alias" do
|
834
|
-
person.
|
893
|
+
expect(person).to respond_to(:alias_changed?)
|
835
894
|
end
|
836
895
|
|
837
896
|
context "when changing the name" do
|
@@ -841,11 +900,11 @@ describe Mongoid::Fields do
|
|
841
900
|
end
|
842
901
|
|
843
902
|
it "sets name_changed?" do
|
844
|
-
person.aliased_changed
|
903
|
+
expect(person.aliased_changed?).to be true
|
845
904
|
end
|
846
905
|
|
847
906
|
it "sets alias_changed?" do
|
848
|
-
person.alias_changed
|
907
|
+
expect(person.alias_changed?).to be true
|
849
908
|
end
|
850
909
|
end
|
851
910
|
|
@@ -856,11 +915,11 @@ describe Mongoid::Fields do
|
|
856
915
|
end
|
857
916
|
|
858
917
|
it "sets name_changed?" do
|
859
|
-
person.aliased_changed
|
918
|
+
expect(person.aliased_changed?).to be true
|
860
919
|
end
|
861
920
|
|
862
921
|
it "sets alias_changed?" do
|
863
|
-
person.alias_changed
|
922
|
+
expect(person.alias_changed?).to be true
|
864
923
|
end
|
865
924
|
end
|
866
925
|
|
@@ -871,7 +930,7 @@ describe Mongoid::Fields do
|
|
871
930
|
end
|
872
931
|
|
873
932
|
it "properly serializes the aliased field" do
|
874
|
-
criteria.selector.
|
933
|
+
expect(criteria.selector).to eq({ "aliased" => true })
|
875
934
|
end
|
876
935
|
end
|
877
936
|
end
|
@@ -889,27 +948,8 @@ describe Mongoid::Fields do
|
|
889
948
|
context "when option is provided" do
|
890
949
|
|
891
950
|
it "calls the handler with the model" do
|
892
|
-
|
893
|
-
|
894
|
-
end
|
895
|
-
|
896
|
-
User.field :custom, option: true
|
897
|
-
end
|
898
|
-
|
899
|
-
it "calls the handler with the field" do
|
900
|
-
handler.should_receive(:call).with do |_,field,_|
|
901
|
-
field.should eql User.fields["custom"]
|
902
|
-
end
|
903
|
-
|
904
|
-
User.field :custom, option: true
|
905
|
-
end
|
906
|
-
|
907
|
-
it "calls the handler with the option value" do
|
908
|
-
handler.should_receive(:call).with do |_,_,value|
|
909
|
-
value.should eql true
|
910
|
-
end
|
911
|
-
|
912
|
-
User.field :custom, option: true
|
951
|
+
User.field :custom, option: true, overwrite: true
|
952
|
+
expect(User.fields["custom"].options[:option]).to be_truthy
|
913
953
|
end
|
914
954
|
end
|
915
955
|
|
@@ -917,7 +957,7 @@ describe Mongoid::Fields do
|
|
917
957
|
|
918
958
|
it "calls the handler" do
|
919
959
|
handler.should_receive(:call)
|
920
|
-
User.field :custom, option: nil
|
960
|
+
User.field :custom, option: nil, overwrite: true
|
921
961
|
end
|
922
962
|
end
|
923
963
|
|
@@ -926,7 +966,7 @@ describe Mongoid::Fields do
|
|
926
966
|
it "does not call the handler" do
|
927
967
|
handler.should_receive(:call).never
|
928
968
|
|
929
|
-
User.field :custom
|
969
|
+
User.field :custom, overwrite: true
|
930
970
|
end
|
931
971
|
end
|
932
972
|
end
|
@@ -941,11 +981,11 @@ describe Mongoid::Fields do
|
|
941
981
|
end
|
942
982
|
|
943
983
|
it "includes its own fields" do
|
944
|
-
shape.fields.keys.
|
984
|
+
expect(shape.fields.keys).to include("x")
|
945
985
|
end
|
946
986
|
|
947
987
|
it "does not return subclass fields" do
|
948
|
-
shape.fields.keys.
|
988
|
+
expect(shape.fields.keys).to_not include("radius")
|
949
989
|
end
|
950
990
|
end
|
951
991
|
|
@@ -956,15 +996,15 @@ describe Mongoid::Fields do
|
|
956
996
|
end
|
957
997
|
|
958
998
|
it "includes the first parent field" do
|
959
|
-
circle.fields.keys.
|
999
|
+
expect(circle.fields.keys).to include("x")
|
960
1000
|
end
|
961
1001
|
|
962
1002
|
it "includes the second parent field" do
|
963
|
-
circle.fields.keys.
|
1003
|
+
expect(circle.fields.keys).to include("y")
|
964
1004
|
end
|
965
1005
|
|
966
1006
|
it "includes the child fields" do
|
967
|
-
circle.fields.keys.
|
1007
|
+
expect(circle.fields.keys).to include("radius")
|
968
1008
|
end
|
969
1009
|
end
|
970
1010
|
end
|
@@ -972,7 +1012,7 @@ describe Mongoid::Fields do
|
|
972
1012
|
describe ".replace_field" do
|
973
1013
|
|
974
1014
|
let!(:original) do
|
975
|
-
Person.field(:id_test, type:
|
1015
|
+
Person.field(:id_test, type: BSON::ObjectId, label: "id")
|
976
1016
|
end
|
977
1017
|
|
978
1018
|
let!(:altered) do
|
@@ -988,11 +1028,11 @@ describe Mongoid::Fields do
|
|
988
1028
|
end
|
989
1029
|
|
990
1030
|
it "sets the new type on the field" do
|
991
|
-
new_field.type.
|
1031
|
+
expect(new_field.type).to eq(String)
|
992
1032
|
end
|
993
1033
|
|
994
1034
|
it "keeps the options from the old field" do
|
995
|
-
new_field.options[:label].
|
1035
|
+
expect(new_field.options[:label]).to eq("id")
|
996
1036
|
end
|
997
1037
|
end
|
998
1038
|
|
@@ -1009,7 +1049,7 @@ describe Mongoid::Fields do
|
|
1009
1049
|
end
|
1010
1050
|
|
1011
1051
|
it "resets the fields" do
|
1012
|
-
fields.keys.
|
1052
|
+
expect(fields.keys).to include("user_id")
|
1013
1053
|
end
|
1014
1054
|
end
|
1015
1055
|
|
@@ -1020,7 +1060,7 @@ describe Mongoid::Fields do
|
|
1020
1060
|
end
|
1021
1061
|
|
1022
1062
|
it "resets the fields" do
|
1023
|
-
fields.keys.
|
1063
|
+
expect(fields.keys).to include("user_id")
|
1024
1064
|
end
|
1025
1065
|
end
|
1026
1066
|
end
|
@@ -1032,88 +1072,7 @@ describe Mongoid::Fields do
|
|
1032
1072
|
end
|
1033
1073
|
|
1034
1074
|
it "sets the default value pre process" do
|
1035
|
-
person.map_with_default.
|
1036
|
-
end
|
1037
|
-
end
|
1038
|
-
|
1039
|
-
context "when dealing with auto protection" do
|
1040
|
-
|
1041
|
-
context "when auto protect ids and types is true" do
|
1042
|
-
|
1043
|
-
context "when redefining as accessible" do
|
1044
|
-
|
1045
|
-
before do
|
1046
|
-
Person.attr_accessible :id, :_id, :_type
|
1047
|
-
end
|
1048
|
-
|
1049
|
-
after do
|
1050
|
-
Person.attr_protected :id, :_id, :_type
|
1051
|
-
end
|
1052
|
-
|
1053
|
-
let(:bson_id) do
|
1054
|
-
Moped::BSON::ObjectId.new
|
1055
|
-
end
|
1056
|
-
|
1057
|
-
it "allows mass assignment of id" do
|
1058
|
-
Person.new(_id: bson_id).id.should eq(bson_id)
|
1059
|
-
end
|
1060
|
-
|
1061
|
-
it "allows mass assignment of type" do
|
1062
|
-
Person.new(_type: "Something")._type.should eq("Something")
|
1063
|
-
end
|
1064
|
-
end
|
1065
|
-
|
1066
|
-
context "when redefining as protected" do
|
1067
|
-
|
1068
|
-
before do
|
1069
|
-
Person.attr_protected :id, :_id, :_type
|
1070
|
-
end
|
1071
|
-
|
1072
|
-
let(:bson_id) do
|
1073
|
-
Moped::BSON::ObjectId.new
|
1074
|
-
end
|
1075
|
-
|
1076
|
-
it "protects assignment of id" do
|
1077
|
-
Person.new(_id: bson_id).id.should_not eq(bson_id)
|
1078
|
-
end
|
1079
|
-
|
1080
|
-
it "protects assignment of type" do
|
1081
|
-
Person.new(_type: "Something")._type.should_not eq("Something")
|
1082
|
-
end
|
1083
|
-
end
|
1084
|
-
end
|
1085
|
-
|
1086
|
-
context "when auto protecting ids and types is false" do
|
1087
|
-
|
1088
|
-
before do
|
1089
|
-
Mongoid.protect_sensitive_fields = false
|
1090
|
-
end
|
1091
|
-
|
1092
|
-
after do
|
1093
|
-
Mongoid.protect_sensitive_fields = true
|
1094
|
-
end
|
1095
|
-
|
1096
|
-
let(:klass) do
|
1097
|
-
Class.new do
|
1098
|
-
include Mongoid::Document
|
1099
|
-
end
|
1100
|
-
end
|
1101
|
-
|
1102
|
-
let(:bson_id) do
|
1103
|
-
Moped::BSON::ObjectId.new
|
1104
|
-
end
|
1105
|
-
|
1106
|
-
let(:model) do
|
1107
|
-
klass.new(id: bson_id, _type: "Model")
|
1108
|
-
end
|
1109
|
-
|
1110
|
-
it "allows mass assignment of id" do
|
1111
|
-
model.id.should eq(bson_id)
|
1112
|
-
end
|
1113
|
-
|
1114
|
-
it "allows mass assignment of type" do
|
1115
|
-
model._type.should eq("Model")
|
1116
|
-
end
|
1075
|
+
expect(person.map_with_default).to eq({ "key" => "testing" })
|
1117
1076
|
end
|
1118
1077
|
end
|
1119
1078
|
|
@@ -1134,11 +1093,11 @@ describe Mongoid::Fields do
|
|
1134
1093
|
end
|
1135
1094
|
|
1136
1095
|
it "properly persists as a string" do
|
1137
|
-
band.attributes["sales"].
|
1096
|
+
expect(band.attributes["sales"]).to eq(decimal.to_s)
|
1138
1097
|
end
|
1139
1098
|
|
1140
1099
|
it "returns the proper big decimal" do
|
1141
|
-
band.sales.
|
1100
|
+
expect(band.sales).to eq(decimal)
|
1142
1101
|
end
|
1143
1102
|
end
|
1144
1103
|
|
@@ -1149,11 +1108,11 @@ describe Mongoid::Fields do
|
|
1149
1108
|
end
|
1150
1109
|
|
1151
1110
|
it "properly persists as a string" do
|
1152
|
-
band.attributes["sales"].
|
1111
|
+
expect(band.attributes["sales"]).to eq(decimal.to_s)
|
1153
1112
|
end
|
1154
1113
|
|
1155
1114
|
it "returns the proper big decimal" do
|
1156
|
-
band.sales.
|
1115
|
+
expect(band.sales).to eq(decimal)
|
1157
1116
|
end
|
1158
1117
|
end
|
1159
1118
|
|
@@ -1164,11 +1123,11 @@ describe Mongoid::Fields do
|
|
1164
1123
|
end
|
1165
1124
|
|
1166
1125
|
it "properly persists as a string" do
|
1167
|
-
band.attributes["sales"].
|
1126
|
+
expect(band.attributes["sales"]).to eq("1000000")
|
1168
1127
|
end
|
1169
1128
|
|
1170
1129
|
it "returns the proper big decimal" do
|
1171
|
-
band.sales.
|
1130
|
+
expect(band.sales).to eq(decimal)
|
1172
1131
|
end
|
1173
1132
|
end
|
1174
1133
|
|
@@ -1179,11 +1138,11 @@ describe Mongoid::Fields do
|
|
1179
1138
|
end
|
1180
1139
|
|
1181
1140
|
it "properly persists as a string" do
|
1182
|
-
band.attributes["sales"].
|
1141
|
+
expect(band.attributes["sales"]).to eq(decimal.to_s)
|
1183
1142
|
end
|
1184
1143
|
|
1185
1144
|
it "returns the proper big decimal" do
|
1186
|
-
band.sales.
|
1145
|
+
expect(band.sales).to eq(decimal)
|
1187
1146
|
end
|
1188
1147
|
end
|
1189
1148
|
end
|
@@ -1209,7 +1168,7 @@ describe Mongoid::Fields do
|
|
1209
1168
|
end
|
1210
1169
|
|
1211
1170
|
it "properly updates the hash" do
|
1212
|
-
person.map.
|
1171
|
+
expect(person.map).to eq(
|
1213
1172
|
{
|
1214
1173
|
"stack1" => [ 4, 3, 2, 1 ],
|
1215
1174
|
"stack2" => [ 1, 2, 3, 4 ],
|
@@ -1219,7 +1178,7 @@ describe Mongoid::Fields do
|
|
1219
1178
|
end
|
1220
1179
|
|
1221
1180
|
it "persists the changes" do
|
1222
|
-
person.reload.map.
|
1181
|
+
expect(person.reload.map).to eq(
|
1223
1182
|
{
|
1224
1183
|
"stack1" => [ 4, 3, 2, 1 ],
|
1225
1184
|
"stack2" => [ 1, 2, 3, 4 ],
|
@@ -1242,11 +1201,11 @@ describe Mongoid::Fields do
|
|
1242
1201
|
end
|
1243
1202
|
|
1244
1203
|
it "does not override the parent" do
|
1245
|
-
canvas.foo.
|
1204
|
+
expect(canvas.foo).to eq("original")
|
1246
1205
|
end
|
1247
1206
|
|
1248
1207
|
it "overrides the default" do
|
1249
|
-
test.foo.
|
1208
|
+
expect(test.foo).to eq("overridden")
|
1250
1209
|
end
|
1251
1210
|
end
|
1252
1211
|
end
|