mongoid 3.1.6 → 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 +479 -8
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- data/lib/mongoid.rb +10 -76
- data/lib/mongoid/atomic.rb +3 -14
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- 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/root.rb +0 -13
- data/lib/mongoid/attributes.rb +65 -101
- 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} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +7 -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/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/criteria/#findable.rb# +141 -0
- 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/document.rb +39 -24
- data/lib/mongoid/errors.rb +4 -1
- 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/extensions.rb +15 -7
- 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/factory.rb +8 -6
- data/lib/mongoid/fields.rb +41 -8
- 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/{finders.rb → findable.rb} +35 -7
- 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} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -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 +2 -2
- 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 +216 -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/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.rb +11 -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.rb +2 -2
- 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/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 +46 -0
- 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/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/{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.rb +37 -345
- 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/{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.rb +26 -172
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- 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/version.rb +1 -1
- 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/draft.rb +9 -0
- 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_spec.rb# +365 -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 +349 -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 +78 -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 +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 +715 -2421
- 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/matchable/ne_spec.rb +46 -0
- 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} +14 -19
- 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 -335
- data/spec/spec_helper.rb +31 -13
- metadata +303 -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/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/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/ne_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
@@ -23,7 +23,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
23
23
|
context "when the proxied document is same class" do
|
24
24
|
|
25
25
|
it "returns true" do
|
26
|
-
(relation === Name.new).
|
26
|
+
expect((relation === Name.new)).to be true
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -47,19 +47,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it "sets the target of the relation" do
|
50
|
-
person.name.
|
50
|
+
expect(person.name).to eq(name)
|
51
51
|
end
|
52
52
|
|
53
53
|
it "sets the base on the inverse relation" do
|
54
|
-
name.namable.
|
54
|
+
expect(name.namable).to eq(person)
|
55
55
|
end
|
56
56
|
|
57
57
|
it "sets the same instance on the inverse relation" do
|
58
|
-
name.namable.
|
58
|
+
expect(name.namable).to eql(person)
|
59
59
|
end
|
60
60
|
|
61
61
|
it "does not save the target" do
|
62
|
-
name.
|
62
|
+
expect(name).to_not be_persisted
|
63
63
|
end
|
64
64
|
|
65
65
|
context "with overwritten getter" do
|
@@ -76,7 +76,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
76
76
|
|
77
77
|
it "sets the target without an invinite recursion" do
|
78
78
|
person.name = name
|
79
|
-
person.name.
|
79
|
+
expect(person.name).to be_present
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -102,19 +102,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
102
102
|
end
|
103
103
|
|
104
104
|
it "sets the target of the relation" do
|
105
|
-
person.name.
|
105
|
+
expect(person.name).to eq(child_name)
|
106
106
|
end
|
107
107
|
|
108
108
|
it "sets the base on the inverse relation" do
|
109
|
-
child_name.namable.
|
109
|
+
expect(child_name.namable).to eq(person)
|
110
110
|
end
|
111
111
|
|
112
112
|
it "sets the same instance on the inverse relation" do
|
113
|
-
child_name.namable.
|
113
|
+
expect(child_name.namable).to eql(person)
|
114
114
|
end
|
115
115
|
|
116
116
|
it "saves the target" do
|
117
|
-
child_name.
|
117
|
+
expect(child_name).to be_persisted
|
118
118
|
end
|
119
119
|
|
120
120
|
context "when replacing a relation with a hash" do
|
@@ -124,7 +124,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
124
124
|
end
|
125
125
|
|
126
126
|
it "sets the relation with the proper object" do
|
127
|
-
person.name.
|
127
|
+
expect(person.name).to be_a(Name)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
end
|
@@ -137,11 +137,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
it "does not change the relation" do
|
140
|
-
person.name.
|
140
|
+
expect(person.name).to eq(name)
|
141
141
|
end
|
142
142
|
|
143
143
|
it "does not persist any change" do
|
144
|
-
person.reload.name.
|
144
|
+
expect(person.reload.name).to eq(name)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
@@ -152,19 +152,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
152
152
|
end
|
153
153
|
|
154
154
|
it "sets the target of the relation" do
|
155
|
-
person.name.
|
155
|
+
expect(person.name).to eq(name)
|
156
156
|
end
|
157
157
|
|
158
158
|
it "sets the base on the inverse relation" do
|
159
|
-
name.namable.
|
159
|
+
expect(name.namable).to eq(person)
|
160
160
|
end
|
161
161
|
|
162
162
|
it "sets the same instance on the inverse relation" do
|
163
|
-
name.namable.
|
163
|
+
expect(name.namable).to eql(person)
|
164
164
|
end
|
165
165
|
|
166
166
|
it "saves the target" do
|
167
|
-
name.
|
167
|
+
expect(name).to be_persisted
|
168
168
|
end
|
169
169
|
|
170
170
|
context "when replacing an exising document" do
|
@@ -174,11 +174,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
174
174
|
end
|
175
175
|
|
176
176
|
let(:pet_one) do
|
177
|
-
Pet.new
|
177
|
+
Pet.new(name: 'kika')
|
178
178
|
end
|
179
179
|
|
180
180
|
let(:pet_two) do
|
181
|
-
Pet.new
|
181
|
+
Pet.new(name: 'tiksy')
|
182
182
|
end
|
183
183
|
|
184
184
|
before do
|
@@ -187,7 +187,15 @@ describe Mongoid::Relations::Embedded::One do
|
|
187
187
|
end
|
188
188
|
|
189
189
|
it "runs the destroy callbacks on the old document" do
|
190
|
-
pet_one.destroy_flag.
|
190
|
+
expect(pet_one.destroy_flag).to be true
|
191
|
+
end
|
192
|
+
|
193
|
+
it "keeps the name of the destroyed" do
|
194
|
+
expect(pet_one.name).to eq("kika")
|
195
|
+
end
|
196
|
+
|
197
|
+
it "saves the new name" do
|
198
|
+
expect(pet_owner.pet.name).to eq("tiksy")
|
191
199
|
end
|
192
200
|
end
|
193
201
|
end
|
@@ -199,11 +207,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
199
207
|
end
|
200
208
|
|
201
209
|
it "sets the target of the relation" do
|
202
|
-
person.name.
|
210
|
+
expect(person.name).to eq(name)
|
203
211
|
end
|
204
212
|
|
205
213
|
it "does not save the target" do
|
206
|
-
name.
|
214
|
+
expect(name).to_not be_persisted
|
207
215
|
end
|
208
216
|
end
|
209
217
|
end
|
@@ -226,19 +234,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
226
234
|
end
|
227
235
|
|
228
236
|
it "sets the target of the relation" do
|
229
|
-
parent_shelf.child_shelf.
|
237
|
+
expect(parent_shelf.child_shelf).to eq(child_shelf)
|
230
238
|
end
|
231
239
|
|
232
240
|
it "sets the base on the inverse relation" do
|
233
|
-
child_shelf.parent_shelf.
|
241
|
+
expect(child_shelf.parent_shelf).to eq(parent_shelf)
|
234
242
|
end
|
235
243
|
|
236
244
|
it "sets the same instance on the inverse relation" do
|
237
|
-
child_shelf.parent_shelf.
|
245
|
+
expect(child_shelf.parent_shelf).to eql(parent_shelf)
|
238
246
|
end
|
239
247
|
|
240
248
|
it "does not save the target" do
|
241
|
-
child_shelf.
|
249
|
+
expect(child_shelf).to_not be_persisted
|
242
250
|
end
|
243
251
|
end
|
244
252
|
|
@@ -257,19 +265,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
257
265
|
end
|
258
266
|
|
259
267
|
it "sets the target of the relation" do
|
260
|
-
parent_shelf.child_shelf.
|
268
|
+
expect(parent_shelf.child_shelf).to eq(child_shelf)
|
261
269
|
end
|
262
270
|
|
263
271
|
it "sets the base on the inverse relation" do
|
264
|
-
child_shelf.parent_shelf.
|
272
|
+
expect(child_shelf.parent_shelf).to eq(parent_shelf)
|
265
273
|
end
|
266
274
|
|
267
275
|
it "sets the same instance on the inverse relation" do
|
268
|
-
child_shelf.parent_shelf.
|
276
|
+
expect(child_shelf.parent_shelf).to eql(parent_shelf)
|
269
277
|
end
|
270
278
|
|
271
279
|
it "saves the target" do
|
272
|
-
child_shelf.
|
280
|
+
expect(child_shelf).to be_persisted
|
273
281
|
end
|
274
282
|
end
|
275
283
|
end
|
@@ -287,7 +295,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
287
295
|
end
|
288
296
|
|
289
297
|
it "saves the child document" do
|
290
|
-
parent.first_child.
|
298
|
+
expect(parent.first_child).to be_a(Child)
|
291
299
|
end
|
292
300
|
end
|
293
301
|
end
|
@@ -312,11 +320,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
312
320
|
end
|
313
321
|
|
314
322
|
it "sets the relation to nil" do
|
315
|
-
person.name.
|
323
|
+
expect(person.name).to be_nil
|
316
324
|
end
|
317
325
|
|
318
326
|
it "removes the inverse relation" do
|
319
|
-
name.namable.
|
327
|
+
expect(name.namable).to be_nil
|
320
328
|
end
|
321
329
|
end
|
322
330
|
|
@@ -331,7 +339,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
331
339
|
end
|
332
340
|
|
333
341
|
it "sets the relation to nil" do
|
334
|
-
person.name.
|
342
|
+
expect(person.name).to be_nil
|
335
343
|
end
|
336
344
|
end
|
337
345
|
|
@@ -353,15 +361,15 @@ describe Mongoid::Relations::Embedded::One do
|
|
353
361
|
end
|
354
362
|
|
355
363
|
it "sets the relation to nil" do
|
356
|
-
person.name.
|
364
|
+
expect(person.name).to be_nil
|
357
365
|
end
|
358
366
|
|
359
367
|
it "removed the inverse relation" do
|
360
|
-
name.namable.
|
368
|
+
expect(name.namable).to be_nil
|
361
369
|
end
|
362
370
|
|
363
371
|
it "deletes the child document" do
|
364
|
-
name.
|
372
|
+
expect(name).to be_destroyed
|
365
373
|
end
|
366
374
|
end
|
367
375
|
|
@@ -373,11 +381,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
373
381
|
end
|
374
382
|
|
375
383
|
it "sets the relation to nil" do
|
376
|
-
person.name.
|
384
|
+
expect(person.name).to be_nil
|
377
385
|
end
|
378
386
|
|
379
387
|
it "does not delete the child document" do
|
380
|
-
name.
|
388
|
+
expect(name).to_not be_destroyed
|
381
389
|
end
|
382
390
|
end
|
383
391
|
end
|
@@ -401,11 +409,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
401
409
|
end
|
402
410
|
|
403
411
|
it "sets the relation to nil" do
|
404
|
-
parent_shelf.child_shelf.
|
412
|
+
expect(parent_shelf.child_shelf).to be_nil
|
405
413
|
end
|
406
414
|
|
407
415
|
it "removes the inverse relation" do
|
408
|
-
child_shelf.parent_shelf.
|
416
|
+
expect(child_shelf.parent_shelf).to be_nil
|
409
417
|
end
|
410
418
|
end
|
411
419
|
|
@@ -420,7 +428,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
420
428
|
end
|
421
429
|
|
422
430
|
it "sets the relation to nil" do
|
423
|
-
parent_shelf.child_shelf.
|
431
|
+
expect(parent_shelf.child_shelf).to be_nil
|
424
432
|
end
|
425
433
|
end
|
426
434
|
|
@@ -440,15 +448,15 @@ describe Mongoid::Relations::Embedded::One do
|
|
440
448
|
end
|
441
449
|
|
442
450
|
it "sets the relation to nil" do
|
443
|
-
parent_shelf.child_shelf.
|
451
|
+
expect(parent_shelf.child_shelf).to be_nil
|
444
452
|
end
|
445
453
|
|
446
454
|
it "removed the inverse relation" do
|
447
|
-
child_shelf.parent_shelf.
|
455
|
+
expect(child_shelf.parent_shelf).to be_nil
|
448
456
|
end
|
449
457
|
|
450
458
|
it "deletes the child document" do
|
451
|
-
child_shelf.
|
459
|
+
expect(child_shelf).to be_destroyed
|
452
460
|
end
|
453
461
|
end
|
454
462
|
end
|
@@ -456,27 +464,6 @@ describe Mongoid::Relations::Embedded::One do
|
|
456
464
|
|
457
465
|
describe "#build_#\{name}" do
|
458
466
|
|
459
|
-
context "when providing mass assignment scoping" do
|
460
|
-
|
461
|
-
let(:person) do
|
462
|
-
Person.new
|
463
|
-
end
|
464
|
-
|
465
|
-
let(:quiz) do
|
466
|
-
person.build_quiz(
|
467
|
-
{ topic: "Testing", name: "Test" }, as: :admin
|
468
|
-
)
|
469
|
-
end
|
470
|
-
|
471
|
-
it "sets the attributes for the role" do
|
472
|
-
quiz.topic.should eq("Testing")
|
473
|
-
end
|
474
|
-
|
475
|
-
it "does not set attributes not for the role" do
|
476
|
-
quiz.name.should be_nil
|
477
|
-
end
|
478
|
-
end
|
479
|
-
|
480
467
|
context "when the relation is not cyclic" do
|
481
468
|
|
482
469
|
context "when the parent is a new record" do
|
@@ -494,19 +481,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
494
481
|
end
|
495
482
|
|
496
483
|
it "sets the target of the relation" do
|
497
|
-
person.name.
|
484
|
+
expect(person.name).to eq(name)
|
498
485
|
end
|
499
486
|
|
500
487
|
it "sets the base on the inverse relation" do
|
501
|
-
name.namable.
|
488
|
+
expect(name.namable).to eq(person)
|
502
489
|
end
|
503
490
|
|
504
491
|
it "sets no attributes" do
|
505
|
-
name.first_name.
|
492
|
+
expect(name.first_name).to be_nil
|
506
493
|
end
|
507
494
|
|
508
495
|
it "does not save the target" do
|
509
|
-
name.
|
496
|
+
expect(name).to_not be_persisted
|
510
497
|
end
|
511
498
|
end
|
512
499
|
|
@@ -522,19 +509,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
522
509
|
end
|
523
510
|
|
524
511
|
it "sets the target of the relation" do
|
525
|
-
person.name.
|
512
|
+
expect(person.name).to eq(name)
|
526
513
|
end
|
527
514
|
|
528
515
|
it "sets the base on the inverse relation" do
|
529
|
-
name.namable.
|
516
|
+
expect(name.namable).to eq(person)
|
530
517
|
end
|
531
518
|
|
532
519
|
it "sets no attributes" do
|
533
|
-
name.first_name.
|
520
|
+
expect(name.first_name).to be_nil
|
534
521
|
end
|
535
522
|
|
536
523
|
it "does not save the target" do
|
537
|
-
name.
|
524
|
+
expect(name).to_not be_persisted
|
538
525
|
end
|
539
526
|
end
|
540
527
|
end
|
@@ -550,19 +537,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
550
537
|
end
|
551
538
|
|
552
539
|
it "sets the target of the relation" do
|
553
|
-
person.name.
|
540
|
+
expect(person.name).to eq(name)
|
554
541
|
end
|
555
542
|
|
556
543
|
it "sets the base on the inverse relation" do
|
557
|
-
name.namable.
|
544
|
+
expect(name.namable).to eq(person)
|
558
545
|
end
|
559
546
|
|
560
547
|
it "sets no attributes" do
|
561
|
-
name.first_name.
|
548
|
+
expect(name.first_name).to be_nil
|
562
549
|
end
|
563
550
|
|
564
551
|
it "does not save the target" do
|
565
|
-
name.
|
552
|
+
expect(name).to_not be_persisted
|
566
553
|
end
|
567
554
|
end
|
568
555
|
|
@@ -577,19 +564,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
577
564
|
end
|
578
565
|
|
579
566
|
it "sets the target of the relation" do
|
580
|
-
person.name.
|
567
|
+
expect(person.name).to eq(name)
|
581
568
|
end
|
582
569
|
|
583
570
|
it "sets the base on the inverse relation" do
|
584
|
-
name.namable.
|
571
|
+
expect(name.namable).to eq(person)
|
585
572
|
end
|
586
573
|
|
587
574
|
it "sets the attributes" do
|
588
|
-
name.first_name.
|
575
|
+
expect(name.first_name).to eq("James")
|
589
576
|
end
|
590
577
|
|
591
578
|
it "does not save the target" do
|
592
|
-
name.
|
579
|
+
expect(name).to_not be_persisted
|
593
580
|
end
|
594
581
|
end
|
595
582
|
end
|
@@ -605,7 +592,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
605
592
|
end
|
606
593
|
|
607
594
|
it "does not save the target" do
|
608
|
-
name.
|
595
|
+
expect(name).to_not be_persisted
|
609
596
|
end
|
610
597
|
end
|
611
598
|
end
|
@@ -623,19 +610,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
623
610
|
end
|
624
611
|
|
625
612
|
it "sets the target of the relation" do
|
626
|
-
parent_shelf.child_shelf.
|
613
|
+
expect(parent_shelf.child_shelf).to eq(child_shelf)
|
627
614
|
end
|
628
615
|
|
629
616
|
it "sets the base on the inverse relation" do
|
630
|
-
child_shelf.parent_shelf.
|
617
|
+
expect(child_shelf.parent_shelf).to eq(parent_shelf)
|
631
618
|
end
|
632
619
|
|
633
620
|
it "sets the attributes" do
|
634
|
-
child_shelf.level.
|
621
|
+
expect(child_shelf.level).to eq(1)
|
635
622
|
end
|
636
623
|
|
637
624
|
it "does not save the target" do
|
638
|
-
child_shelf.
|
625
|
+
expect(child_shelf).to_not be_persisted
|
639
626
|
end
|
640
627
|
end
|
641
628
|
|
@@ -650,7 +637,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
650
637
|
end
|
651
638
|
|
652
639
|
it "does not save the target" do
|
653
|
-
child_shelf.
|
640
|
+
expect(child_shelf).to_not be_persisted
|
654
641
|
end
|
655
642
|
end
|
656
643
|
end
|
@@ -675,33 +662,12 @@ describe Mongoid::Relations::Embedded::One do
|
|
675
662
|
end
|
676
663
|
|
677
664
|
it "returns the embedded one builder" do
|
678
|
-
described_class.builder(base, metadata, target).
|
665
|
+
expect(described_class.builder(base, metadata, target)).to be_a(builder_klass)
|
679
666
|
end
|
680
667
|
end
|
681
668
|
|
682
669
|
describe "#create_#\{name}" do
|
683
670
|
|
684
|
-
context "when providing mass assignment scoping" do
|
685
|
-
|
686
|
-
let(:person) do
|
687
|
-
Person.new
|
688
|
-
end
|
689
|
-
|
690
|
-
let(:quiz) do
|
691
|
-
person.create_quiz(
|
692
|
-
{ topic: "Testing", name: "Test" }, as: :admin
|
693
|
-
)
|
694
|
-
end
|
695
|
-
|
696
|
-
it "sets the attributes for the role" do
|
697
|
-
quiz.topic.should eq("Testing")
|
698
|
-
end
|
699
|
-
|
700
|
-
it "does not set attributes not for the role" do
|
701
|
-
quiz.name.should be_nil
|
702
|
-
end
|
703
|
-
end
|
704
|
-
|
705
671
|
context "when the parent is a new record" do
|
706
672
|
|
707
673
|
context "when not providing any attributes" do
|
@@ -715,19 +681,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
715
681
|
end
|
716
682
|
|
717
683
|
it "sets the target of the relation" do
|
718
|
-
person.name.
|
684
|
+
expect(person.name).to eq(name)
|
719
685
|
end
|
720
686
|
|
721
687
|
it "sets the base on the inverse relation" do
|
722
|
-
name.namable.
|
688
|
+
expect(name.namable).to eq(person)
|
723
689
|
end
|
724
690
|
|
725
691
|
it "sets no attributes" do
|
726
|
-
name.first_name.
|
692
|
+
expect(name.first_name).to be_nil
|
727
693
|
end
|
728
694
|
|
729
695
|
it "saves the target" do
|
730
|
-
name.
|
696
|
+
expect(name).to be_persisted
|
731
697
|
end
|
732
698
|
end
|
733
699
|
|
@@ -742,19 +708,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
742
708
|
end
|
743
709
|
|
744
710
|
it "sets the target of the relation" do
|
745
|
-
person.name.
|
711
|
+
expect(person.name).to eq(name)
|
746
712
|
end
|
747
713
|
|
748
714
|
it "sets the base on the inverse relation" do
|
749
|
-
name.namable.
|
715
|
+
expect(name.namable).to eq(person)
|
750
716
|
end
|
751
717
|
|
752
718
|
it "sets no attributes" do
|
753
|
-
name.first_name.
|
719
|
+
expect(name.first_name).to be_nil
|
754
720
|
end
|
755
721
|
|
756
722
|
it "saves the target" do
|
757
|
-
name.
|
723
|
+
expect(name).to be_persisted
|
758
724
|
end
|
759
725
|
end
|
760
726
|
|
@@ -769,19 +735,19 @@ describe Mongoid::Relations::Embedded::One do
|
|
769
735
|
end
|
770
736
|
|
771
737
|
it "sets the target of the relation" do
|
772
|
-
person.name.
|
738
|
+
expect(person.name).to eq(name)
|
773
739
|
end
|
774
740
|
|
775
741
|
it "sets the base on the inverse relation" do
|
776
|
-
name.namable.
|
742
|
+
expect(name.namable).to eq(person)
|
777
743
|
end
|
778
744
|
|
779
745
|
it "sets the attributes" do
|
780
|
-
name.first_name.
|
746
|
+
expect(name.first_name).to eq("James")
|
781
747
|
end
|
782
748
|
|
783
749
|
it "saves the target" do
|
784
|
-
name.
|
750
|
+
expect(name).to be_persisted
|
785
751
|
end
|
786
752
|
end
|
787
753
|
|
@@ -796,7 +762,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
796
762
|
end
|
797
763
|
|
798
764
|
it "does not save the target" do
|
799
|
-
name.
|
765
|
+
expect(name).to be_persisted
|
800
766
|
end
|
801
767
|
end
|
802
768
|
end
|
@@ -805,21 +771,21 @@ describe Mongoid::Relations::Embedded::One do
|
|
805
771
|
describe ".embedded?" do
|
806
772
|
|
807
773
|
it "returns true" do
|
808
|
-
described_class.
|
774
|
+
expect(described_class).to be_embedded
|
809
775
|
end
|
810
776
|
end
|
811
777
|
|
812
778
|
describe ".foreign_key_suffix" do
|
813
779
|
|
814
780
|
it "returns nil" do
|
815
|
-
described_class.foreign_key_suffix.
|
781
|
+
expect(described_class.foreign_key_suffix).to be_nil
|
816
782
|
end
|
817
783
|
end
|
818
784
|
|
819
785
|
describe ".macro" do
|
820
786
|
|
821
787
|
it "returns embeds_one" do
|
822
|
-
described_class.macro.
|
788
|
+
expect(described_class.macro).to eq(:embeds_one)
|
823
789
|
end
|
824
790
|
end
|
825
791
|
|
@@ -838,8 +804,9 @@ describe Mongoid::Relations::Embedded::One do
|
|
838
804
|
end
|
839
805
|
|
840
806
|
it "returns the single nested builder" do
|
841
|
-
|
842
|
-
|
807
|
+
expect(
|
808
|
+
described_class.nested_builder(metadata, attributes, {})
|
809
|
+
).to be_a(nested_builder_klass)
|
843
810
|
end
|
844
811
|
end
|
845
812
|
|
@@ -862,20 +829,20 @@ describe Mongoid::Relations::Embedded::One do
|
|
862
829
|
context "when checking #{method}" do
|
863
830
|
|
864
831
|
it "returns true" do
|
865
|
-
document.respond_to?(method).
|
832
|
+
expect(document.respond_to?(method)).to be true
|
866
833
|
end
|
867
834
|
end
|
868
835
|
end
|
869
836
|
|
870
837
|
it "responds to persisted?" do
|
871
|
-
document.
|
838
|
+
expect(document).to respond_to(:persisted?)
|
872
839
|
end
|
873
840
|
end
|
874
841
|
|
875
842
|
describe ".valid_options" do
|
876
843
|
|
877
844
|
it "returns the valid options" do
|
878
|
-
described_class.valid_options.
|
845
|
+
expect(described_class.valid_options).to eq(
|
879
846
|
[ :autobuild, :as, :cascade_callbacks, :cyclic, :store_as ]
|
880
847
|
)
|
881
848
|
end
|
@@ -884,7 +851,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
884
851
|
describe ".validation_default" do
|
885
852
|
|
886
853
|
it "returns true" do
|
887
|
-
described_class.validation_default.
|
854
|
+
expect(described_class.validation_default).to be true
|
888
855
|
end
|
889
856
|
end
|
890
857
|
|
@@ -914,11 +881,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
914
881
|
end
|
915
882
|
|
916
883
|
it "sets the values of the array" do
|
917
|
-
from_db.aliases.
|
884
|
+
expect(from_db.aliases).to eq([ "Syd", "Sydney" ])
|
918
885
|
end
|
919
886
|
|
920
887
|
it "persists the array" do
|
921
|
-
Person.find(person.id).name.aliases.
|
888
|
+
expect(Person.find(person.id).name.aliases).to eq([ "Syd", "Sydney" ])
|
922
889
|
end
|
923
890
|
end
|
924
891
|
end
|
@@ -956,7 +923,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
956
923
|
end
|
957
924
|
|
958
925
|
it "persists the new document on the first save" do
|
959
|
-
from_db.reload.name.translations.
|
926
|
+
expect(from_db.reload.name.translations).to_not be_empty
|
960
927
|
end
|
961
928
|
end
|
962
929
|
end
|
@@ -986,7 +953,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
986
953
|
end
|
987
954
|
|
988
955
|
it "reloads the correct number" do
|
989
|
-
person.reload.addresses.count.
|
956
|
+
expect(person.reload.addresses.count).to eq(1)
|
990
957
|
end
|
991
958
|
|
992
959
|
context "when adding a child" do
|
@@ -1000,7 +967,7 @@ describe Mongoid::Relations::Embedded::One do
|
|
1000
967
|
end
|
1001
968
|
|
1002
969
|
it "reloads the correct number" do
|
1003
|
-
person.reload.addresses.count.
|
970
|
+
expect(person.reload.addresses.count).to eq(1)
|
1004
971
|
end
|
1005
972
|
end
|
1006
973
|
end
|
@@ -1029,11 +996,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
1029
996
|
end
|
1030
997
|
|
1031
998
|
it "creates proper documents from the db" do
|
1032
|
-
label.name.
|
999
|
+
expect(label.name).to eq("Mute")
|
1033
1000
|
end
|
1034
1001
|
|
1035
1002
|
it "assigns ids to the documents" do
|
1036
|
-
label.id.
|
1003
|
+
expect(label.id).to_not be_nil
|
1037
1004
|
end
|
1038
1005
|
|
1039
1006
|
context "when subsequently updating the documents" do
|
@@ -1043,11 +1010,11 @@ describe Mongoid::Relations::Embedded::One do
|
|
1043
1010
|
end
|
1044
1011
|
|
1045
1012
|
it "updates the document" do
|
1046
|
-
label.name.
|
1013
|
+
expect(label.name).to eq("Interscope")
|
1047
1014
|
end
|
1048
1015
|
|
1049
1016
|
it "persists the change" do
|
1050
|
-
label.reload.name.
|
1017
|
+
expect(label.reload.name).to eq("Interscope")
|
1051
1018
|
end
|
1052
1019
|
end
|
1053
1020
|
end
|