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
 
| 
         @@ -4,7 +4,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              before(:all) do
         
     | 
| 
       6 
6 
     | 
    
         
             
                Mongoid.raise_not_found_error = true
         
     | 
| 
       7 
     | 
    
         
            -
                Person.autosaved_relations.delete_one(:preferences)
         
     | 
| 
       8 
7 
     | 
    
         
             
                Person.autosave(Person.relations["preferences"].merge!(autosave: true))
         
     | 
| 
       9 
8 
     | 
    
         
             
                Person.synced(Person.relations["preferences"])
         
     | 
| 
       10 
9 
     | 
    
         
             
              end
         
     | 
| 
         @@ -35,7 +34,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       35 
34 
     | 
    
         
             
                      end
         
     | 
| 
       36 
35 
     | 
    
         | 
| 
       37 
36 
     | 
    
         
             
                      it "persists the child document" do
         
     | 
| 
       38 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 37 
     | 
    
         
            +
                        expect(preference).to be_persisted
         
     | 
| 
       39 
38 
     | 
    
         
             
                      end
         
     | 
| 
       40 
39 
     | 
    
         
             
                    end
         
     | 
| 
       41 
40 
     | 
    
         | 
| 
         @@ -46,7 +45,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       46 
45 
     | 
    
         
             
                      end
         
     | 
| 
       47 
46 
     | 
    
         | 
| 
       48 
47 
     | 
    
         
             
                      it "does not persist the child document" do
         
     | 
| 
       49 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 48 
     | 
    
         
            +
                        expect(preference).to receive(:save).never
         
     | 
| 
       50 
49 
     | 
    
         
             
                        article.preferences.send(method, preference)
         
     | 
| 
       51 
50 
     | 
    
         
             
                      end
         
     | 
| 
       52 
51 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -67,7 +66,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       67 
66 
     | 
    
         
             
                    end
         
     | 
| 
       68 
67 
     | 
    
         | 
| 
       69 
68 
     | 
    
         
             
                    it "returns an array of loaded documents" do
         
     | 
| 
       70 
     | 
    
         
            -
                      result. 
     | 
| 
      
 69 
     | 
    
         
            +
                      expect(result).to eq([ preference ])
         
     | 
| 
       71 
70 
     | 
    
         
             
                    end
         
     | 
| 
       72 
71 
     | 
    
         
             
                  end
         
     | 
| 
       73 
72 
     | 
    
         | 
| 
         @@ -86,7 +85,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       86 
85 
     | 
    
         
             
                    end
         
     | 
| 
       87 
86 
     | 
    
         | 
| 
       88 
87 
     | 
    
         
             
                    it "returns an array of loaded documents" do
         
     | 
| 
       89 
     | 
    
         
            -
                      result. 
     | 
| 
      
 88 
     | 
    
         
            +
                      expect(result).to eq([ preference ])
         
     | 
| 
       90 
89 
     | 
    
         
             
                    end
         
     | 
| 
       91 
90 
     | 
    
         
             
                  end
         
     | 
| 
       92 
91 
     | 
    
         | 
| 
         @@ -107,11 +106,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       107 
106 
     | 
    
         
             
                      end
         
     | 
| 
       108 
107 
     | 
    
         | 
| 
       109 
108 
     | 
    
         
             
                      it "appends the document to the relation" do
         
     | 
| 
       110 
     | 
    
         
            -
                        person.houses. 
     | 
| 
      
 109 
     | 
    
         
            +
                        expect(person.houses).to eq([ house ])
         
     | 
| 
       111 
110 
     | 
    
         
             
                      end
         
     | 
| 
       112 
111 
     | 
    
         | 
| 
       113 
112 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       114 
     | 
    
         
            -
                        person.house_ids. 
     | 
| 
      
 113 
     | 
    
         
            +
                        expect(person.house_ids).to eq([ house.id ])
         
     | 
| 
       115 
114 
     | 
    
         
             
                      end
         
     | 
| 
       116 
115 
     | 
    
         
             
                    end
         
     | 
| 
       117 
116 
     | 
    
         | 
| 
         @@ -128,27 +127,27 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       128 
127 
     | 
    
         
             
                      end
         
     | 
| 
       129 
128 
     | 
    
         | 
| 
       130 
129 
     | 
    
         
             
                      it "adds the documents to the relation" do
         
     | 
| 
       131 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 130 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       132 
131 
     | 
    
         
             
                      end
         
     | 
| 
       133 
132 
     | 
    
         | 
| 
       134 
133 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       135 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 134 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       136 
135 
     | 
    
         
             
                      end
         
     | 
| 
       137 
136 
     | 
    
         | 
| 
       138 
137 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       139 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 138 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       140 
139 
     | 
    
         
             
                      end
         
     | 
| 
       141 
140 
     | 
    
         | 
| 
       142 
141 
     | 
    
         
             
                      it "saves the target" do
         
     | 
| 
       143 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 142 
     | 
    
         
            +
                        expect(preference).to be_persisted
         
     | 
| 
       144 
143 
     | 
    
         
             
                      end
         
     | 
| 
       145 
144 
     | 
    
         | 
| 
       146 
145 
     | 
    
         
             
                      it "adds the correct number of documents" do
         
     | 
| 
       147 
     | 
    
         
            -
                        person.preferences.size. 
     | 
| 
      
 146 
     | 
    
         
            +
                        expect(person.preferences.size).to eq(1)
         
     | 
| 
       148 
147 
     | 
    
         
             
                      end
         
     | 
| 
       149 
148 
     | 
    
         | 
| 
       150 
149 
     | 
    
         
             
                      it "persists the link" do
         
     | 
| 
       151 
     | 
    
         
            -
                        person.reload.preferences. 
     | 
| 
      
 150 
     | 
    
         
            +
                        expect(person.reload.preferences).to eq([ preference ])
         
     | 
| 
       152 
151 
     | 
    
         
             
                      end
         
     | 
| 
       153 
152 
     | 
    
         
             
                    end
         
     | 
| 
       154 
153 
     | 
    
         | 
| 
         @@ -169,23 +168,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       169 
168 
     | 
    
         
             
                        end
         
     | 
| 
       170 
169 
     | 
    
         | 
| 
       171 
170 
     | 
    
         
             
                        it "adds the documents to the relation" do
         
     | 
| 
       172 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 171 
     | 
    
         
            +
                          expect(person.preferences).to eq([ preference ])
         
     | 
| 
       173 
172 
     | 
    
         
             
                        end
         
     | 
| 
       174 
173 
     | 
    
         | 
| 
       175 
174 
     | 
    
         
             
                        it "sets the foreign key on the relation" do
         
     | 
| 
       176 
     | 
    
         
            -
                          person.preference_ids. 
     | 
| 
      
 175 
     | 
    
         
            +
                          expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       177 
176 
     | 
    
         
             
                        end
         
     | 
| 
       178 
177 
     | 
    
         | 
| 
       179 
178 
     | 
    
         
             
                        it "sets the foreign key on the inverse relation" do
         
     | 
| 
       180 
     | 
    
         
            -
                          preference.person_ids. 
     | 
| 
      
 179 
     | 
    
         
            +
                          expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       181 
180 
     | 
    
         
             
                        end
         
     | 
| 
       182 
181 
     | 
    
         | 
| 
       183 
182 
     | 
    
         
             
                        it "does not save the target" do
         
     | 
| 
       184 
     | 
    
         
            -
                          preference. 
     | 
| 
      
 183 
     | 
    
         
            +
                          expect(preference).to be_new_record
         
     | 
| 
       185 
184 
     | 
    
         
             
                        end
         
     | 
| 
       186 
185 
     | 
    
         | 
| 
       187 
186 
     | 
    
         
             
                        it "adds the correct number of documents" do
         
     | 
| 
       188 
     | 
    
         
            -
                          person.preferences.size. 
     | 
| 
      
 187 
     | 
    
         
            +
                          expect(person.preferences.size).to eq(1)
         
     | 
| 
       189 
188 
     | 
    
         
             
                        end
         
     | 
| 
       190 
189 
     | 
    
         | 
| 
       191 
190 
     | 
    
         
             
                        context "when appending a second time" do
         
     | 
| 
         @@ -195,11 +194,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       195 
194 
     | 
    
         
             
                          end
         
     | 
| 
       196 
195 
     | 
    
         | 
| 
       197 
196 
     | 
    
         
             
                          it "does not allow the document to be added again" do
         
     | 
| 
       198 
     | 
    
         
            -
                            person.preferences. 
     | 
| 
      
 197 
     | 
    
         
            +
                            expect(person.preferences).to eq([ preference ])
         
     | 
| 
       199 
198 
     | 
    
         
             
                          end
         
     | 
| 
       200 
199 
     | 
    
         | 
| 
       201 
200 
     | 
    
         
             
                          it "does not allow duplicate ids" do
         
     | 
| 
       202 
     | 
    
         
            -
                            person.preference_ids. 
     | 
| 
      
 201 
     | 
    
         
            +
                            expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       203 
202 
     | 
    
         
             
                          end
         
     | 
| 
       204 
203 
     | 
    
         
             
                        end
         
     | 
| 
       205 
204 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -220,27 +219,27 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       220 
219 
     | 
    
         
             
                        end
         
     | 
| 
       221 
220 
     | 
    
         | 
| 
       222 
221 
     | 
    
         
             
                        it "adds the documents to the relation" do
         
     | 
| 
       223 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 222 
     | 
    
         
            +
                          expect(person.preferences).to eq([ preference ])
         
     | 
| 
       224 
223 
     | 
    
         
             
                        end
         
     | 
| 
       225 
224 
     | 
    
         | 
| 
       226 
225 
     | 
    
         
             
                        it "sets the foreign key on the relation" do
         
     | 
| 
       227 
     | 
    
         
            -
                          person.preference_ids. 
     | 
| 
      
 226 
     | 
    
         
            +
                          expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       228 
227 
     | 
    
         
             
                        end
         
     | 
| 
       229 
228 
     | 
    
         | 
| 
       230 
229 
     | 
    
         
             
                        it "sets the foreign key on the inverse relation" do
         
     | 
| 
       231 
     | 
    
         
            -
                          preference.person_ids. 
     | 
| 
      
 230 
     | 
    
         
            +
                          expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       232 
231 
     | 
    
         
             
                        end
         
     | 
| 
       233 
232 
     | 
    
         | 
| 
       234 
233 
     | 
    
         
             
                        it "saves the target" do
         
     | 
| 
       235 
     | 
    
         
            -
                          preference. 
     | 
| 
      
 234 
     | 
    
         
            +
                          expect(preference).to be_persisted
         
     | 
| 
       236 
235 
     | 
    
         
             
                        end
         
     | 
| 
       237 
236 
     | 
    
         | 
| 
       238 
237 
     | 
    
         
             
                        it "adds the correct number of documents" do
         
     | 
| 
       239 
     | 
    
         
            -
                          person.preferences.size. 
     | 
| 
      
 238 
     | 
    
         
            +
                          expect(person.preferences.size).to eq(1)
         
     | 
| 
       240 
239 
     | 
    
         
             
                        end
         
     | 
| 
       241 
240 
     | 
    
         | 
| 
       242 
241 
     | 
    
         
             
                        it "persists the link" do
         
     | 
| 
       243 
     | 
    
         
            -
                          person.reload.preferences. 
     | 
| 
      
 242 
     | 
    
         
            +
                          expect(person.reload.preferences).to eq([ preference ])
         
     | 
| 
       244 
243 
     | 
    
         
             
                        end
         
     | 
| 
       245 
244 
     | 
    
         
             
                      end
         
     | 
| 
       246 
245 
     | 
    
         | 
| 
         @@ -263,23 +262,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       263 
262 
     | 
    
         
             
                        end
         
     | 
| 
       264 
263 
     | 
    
         | 
| 
       265 
264 
     | 
    
         
             
                        it "adds the documents to the relation" do
         
     | 
| 
       266 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 265 
     | 
    
         
            +
                          expect(person.preferences).to eq([ preference ])
         
     | 
| 
       267 
266 
     | 
    
         
             
                        end
         
     | 
| 
       268 
267 
     | 
    
         | 
| 
       269 
268 
     | 
    
         
             
                        it "sets the foreign key on the relation" do
         
     | 
| 
       270 
     | 
    
         
            -
                          person.preference_ids. 
     | 
| 
      
 269 
     | 
    
         
            +
                          expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       271 
270 
     | 
    
         
             
                        end
         
     | 
| 
       272 
271 
     | 
    
         | 
| 
       273 
272 
     | 
    
         
             
                        it "sets the foreign key on the inverse relation" do
         
     | 
| 
       274 
     | 
    
         
            -
                          preference.reload.person_ids. 
     | 
| 
      
 273 
     | 
    
         
            +
                          expect(preference.reload.person_ids).to eq([ person.id ])
         
     | 
| 
       275 
274 
     | 
    
         
             
                        end
         
     | 
| 
       276 
275 
     | 
    
         | 
| 
       277 
276 
     | 
    
         
             
                        it "adds the correct number of documents" do
         
     | 
| 
       278 
     | 
    
         
            -
                          person.preferences.size. 
     | 
| 
      
 277 
     | 
    
         
            +
                          expect(person.preferences.size).to eq(1)
         
     | 
| 
       279 
278 
     | 
    
         
             
                        end
         
     | 
| 
       280 
279 
     | 
    
         | 
| 
       281 
280 
     | 
    
         
             
                        it "persists the link" do
         
     | 
| 
       282 
     | 
    
         
            -
                          person.reload.preferences. 
     | 
| 
      
 281 
     | 
    
         
            +
                          expect(person.reload.preferences).to eq([ preference ])
         
     | 
| 
       283 
282 
     | 
    
         
             
                        end
         
     | 
| 
       284 
283 
     | 
    
         
             
                      end
         
     | 
| 
       285 
284 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -299,31 +298,31 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       299 
298 
     | 
    
         
             
                      end
         
     | 
| 
       300 
299 
     | 
    
         | 
| 
       301 
300 
     | 
    
         
             
                      it "adds the documents to the relation" do
         
     | 
| 
       302 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 301 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       303 
302 
     | 
    
         
             
                      end
         
     | 
| 
       304 
303 
     | 
    
         | 
| 
       305 
304 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       306 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 305 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       307 
306 
     | 
    
         
             
                      end
         
     | 
| 
       308 
307 
     | 
    
         | 
| 
       309 
308 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       310 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 309 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       311 
310 
     | 
    
         
             
                      end
         
     | 
| 
       312 
311 
     | 
    
         | 
| 
       313 
312 
     | 
    
         
             
                      it "sets the base on the inverse relation" do
         
     | 
| 
       314 
     | 
    
         
            -
                        preference.people. 
     | 
| 
      
 313 
     | 
    
         
            +
                        expect(preference.people).to eq([ person ])
         
     | 
| 
       315 
314 
     | 
    
         
             
                      end
         
     | 
| 
       316 
315 
     | 
    
         | 
| 
       317 
316 
     | 
    
         
             
                      it "sets the same instance on the inverse relation" do
         
     | 
| 
       318 
     | 
    
         
            -
                        preference.people.first. 
     | 
| 
      
 317 
     | 
    
         
            +
                        expect(preference.people.first).to eql(person)
         
     | 
| 
       319 
318 
     | 
    
         
             
                      end
         
     | 
| 
       320 
319 
     | 
    
         | 
| 
       321 
320 
     | 
    
         
             
                      it "saves the target" do
         
     | 
| 
       322 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 321 
     | 
    
         
            +
                        expect(preference).to_not be_new_record
         
     | 
| 
       323 
322 
     | 
    
         
             
                      end
         
     | 
| 
       324 
323 
     | 
    
         | 
| 
       325 
324 
     | 
    
         
             
                      it "adds the document to the target" do
         
     | 
| 
       326 
     | 
    
         
            -
                        person.preferences.count. 
     | 
| 
      
 325 
     | 
    
         
            +
                        expect(person.preferences.count).to eq(1)
         
     | 
| 
       327 
326 
     | 
    
         
             
                      end
         
     | 
| 
       328 
327 
     | 
    
         | 
| 
       329 
328 
     | 
    
         
             
                      context "when documents already exist on the relation" do
         
     | 
| 
         @@ -337,31 +336,31 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       337 
336 
     | 
    
         
             
                        end
         
     | 
| 
       338 
337 
     | 
    
         | 
| 
       339 
338 
     | 
    
         
             
                        it "adds the documents to the relation" do
         
     | 
| 
       340 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 339 
     | 
    
         
            +
                          expect(person.preferences).to eq([ preference, preference_two ])
         
     | 
| 
       341 
340 
     | 
    
         
             
                        end
         
     | 
| 
       342 
341 
     | 
    
         | 
| 
       343 
342 
     | 
    
         
             
                        it "sets the foreign key on the relation" do
         
     | 
| 
       344 
     | 
    
         
            -
                          person.preference_ids. 
     | 
| 
      
 343 
     | 
    
         
            +
                          expect(person.preference_ids).to eq([ preference.id, preference_two.id ])
         
     | 
| 
       345 
344 
     | 
    
         
             
                        end
         
     | 
| 
       346 
345 
     | 
    
         | 
| 
       347 
346 
     | 
    
         
             
                        it "sets the foreign key on the inverse relation" do
         
     | 
| 
       348 
     | 
    
         
            -
                          preference_two.person_ids. 
     | 
| 
      
 347 
     | 
    
         
            +
                          expect(preference_two.person_ids).to eq([ person.id ])
         
     | 
| 
       349 
348 
     | 
    
         
             
                        end
         
     | 
| 
       350 
349 
     | 
    
         | 
| 
       351 
350 
     | 
    
         
             
                        it "sets the base on the inverse relation" do
         
     | 
| 
       352 
     | 
    
         
            -
                          preference_two.people. 
     | 
| 
      
 351 
     | 
    
         
            +
                          expect(preference_two.people).to eq([ person ])
         
     | 
| 
       353 
352 
     | 
    
         
             
                        end
         
     | 
| 
       354 
353 
     | 
    
         | 
| 
       355 
354 
     | 
    
         
             
                        it "sets the same instance on the inverse relation" do
         
     | 
| 
       356 
     | 
    
         
            -
                          preference_two.people.first. 
     | 
| 
      
 355 
     | 
    
         
            +
                          expect(preference_two.people.first).to eql(person)
         
     | 
| 
       357 
356 
     | 
    
         
             
                        end
         
     | 
| 
       358 
357 
     | 
    
         | 
| 
       359 
358 
     | 
    
         
             
                        it "saves the target" do
         
     | 
| 
       360 
     | 
    
         
            -
                          preference. 
     | 
| 
      
 359 
     | 
    
         
            +
                          expect(preference).to_not be_new_record
         
     | 
| 
       361 
360 
     | 
    
         
             
                        end
         
     | 
| 
       362 
361 
     | 
    
         | 
| 
       363 
362 
     | 
    
         
             
                        it "adds the document to the target" do
         
     | 
| 
       364 
     | 
    
         
            -
                          person.preferences.count. 
     | 
| 
      
 363 
     | 
    
         
            +
                          expect(person.preferences.count).to eq(2)
         
     | 
| 
       365 
364 
     | 
    
         
             
                        end
         
     | 
| 
       366 
365 
     | 
    
         
             
                      end
         
     | 
| 
       367 
366 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -381,21 +380,21 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       381 
380 
     | 
    
         
             
                      end
         
     | 
| 
       382 
381 
     | 
    
         | 
| 
       383 
382 
     | 
    
         
             
                      it "sets the front side of the relation" do
         
     | 
| 
       384 
     | 
    
         
            -
                        person.administrated_events. 
     | 
| 
      
 383 
     | 
    
         
            +
                        expect(person.administrated_events).to eq([ event ])
         
     | 
| 
       385 
384 
     | 
    
         
             
                      end
         
     | 
| 
       386 
385 
     | 
    
         | 
| 
       387 
386 
     | 
    
         
             
                      it "sets the inverse side of the relation" do
         
     | 
| 
       388 
     | 
    
         
            -
                        event.administrators(true). 
     | 
| 
      
 387 
     | 
    
         
            +
                        expect(event.administrators(true)).to eq([ person ])
         
     | 
| 
       389 
388 
     | 
    
         
             
                      end
         
     | 
| 
       390 
389 
     | 
    
         | 
| 
       391 
390 
     | 
    
         
             
                      context "when reloading" do
         
     | 
| 
       392 
391 
     | 
    
         | 
| 
       393 
392 
     | 
    
         
             
                        it "sets the front side of the relation" do
         
     | 
| 
       394 
     | 
    
         
            -
                          person.reload.administrated_events. 
     | 
| 
      
 393 
     | 
    
         
            +
                          expect(person.reload.administrated_events).to eq([ event ])
         
     | 
| 
       395 
394 
     | 
    
         
             
                        end
         
     | 
| 
       396 
395 
     | 
    
         | 
| 
       397 
396 
     | 
    
         
             
                        it "sets the inverse side of the relation" do
         
     | 
| 
       398 
     | 
    
         
            -
                          event.reload.administrators. 
     | 
| 
      
 397 
     | 
    
         
            +
                          expect(event.reload.administrators).to eq([ person ])
         
     | 
| 
       399 
398 
     | 
    
         
             
                        end
         
     | 
| 
       400 
399 
     | 
    
         
             
                      end
         
     | 
| 
       401 
400 
     | 
    
         | 
| 
         @@ -410,11 +409,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       410 
409 
     | 
    
         
             
                        end
         
     | 
| 
       411 
410 
     | 
    
         | 
| 
       412 
411 
     | 
    
         
             
                        it "sets the front side of the relation" do
         
     | 
| 
       413 
     | 
    
         
            -
                          loaded_person.administrated_events. 
     | 
| 
      
 412 
     | 
    
         
            +
                          expect(loaded_person.administrated_events).to eq([ event ])
         
     | 
| 
       414 
413 
     | 
    
         
             
                        end
         
     | 
| 
       415 
414 
     | 
    
         | 
| 
       416 
415 
     | 
    
         
             
                        it "sets the inverse side of the relation" do
         
     | 
| 
       417 
     | 
    
         
            -
                          loaded_event.administrators. 
     | 
| 
      
 416 
     | 
    
         
            +
                          expect(loaded_event.administrators).to eq([ person ])
         
     | 
| 
       418 
417 
     | 
    
         
             
                        end
         
     | 
| 
       419 
418 
     | 
    
         
             
                      end
         
     | 
| 
       420 
419 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -438,7 +437,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       438 
437 
     | 
    
         
             
                      end
         
     | 
| 
       439 
438 
     | 
    
         | 
| 
       440 
439 
     | 
    
         
             
                      it "creates a single artwork object" do
         
     | 
| 
       441 
     | 
    
         
            -
                        Artwork.count. 
     | 
| 
      
 440 
     | 
    
         
            +
                        expect(Artwork.count).to eq(1)
         
     | 
| 
       442 
441 
     | 
    
         
             
                      end
         
     | 
| 
       443 
442 
     | 
    
         
             
                    end
         
     | 
| 
       444 
443 
     | 
    
         | 
| 
         @@ -457,21 +456,21 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       457 
456 
     | 
    
         
             
                      end
         
     | 
| 
       458 
457 
     | 
    
         | 
| 
       459 
458 
     | 
    
         
             
                      it "sets the front side of the relation" do
         
     | 
| 
       460 
     | 
    
         
            -
                        tag_one.related. 
     | 
| 
      
 459 
     | 
    
         
            +
                        expect(tag_one.related).to eq([ tag_two ])
         
     | 
| 
       461 
460 
     | 
    
         
             
                      end
         
     | 
| 
       462 
461 
     | 
    
         | 
| 
       463 
462 
     | 
    
         
             
                      it "sets the inverse side of the relation" do
         
     | 
| 
       464 
     | 
    
         
            -
                        tag_two.related(true). 
     | 
| 
      
 463 
     | 
    
         
            +
                        expect(tag_two.related(true)).to eq([ tag_one ])
         
     | 
| 
       465 
464 
     | 
    
         
             
                      end
         
     | 
| 
       466 
465 
     | 
    
         | 
| 
       467 
466 
     | 
    
         
             
                      context "when reloading" do
         
     | 
| 
       468 
467 
     | 
    
         | 
| 
       469 
468 
     | 
    
         
             
                        it "sets the front side of the relation" do
         
     | 
| 
       470 
     | 
    
         
            -
                          tag_one.reload.related. 
     | 
| 
      
 469 
     | 
    
         
            +
                          expect(tag_one.reload.related).to eq([ tag_two ])
         
     | 
| 
       471 
470 
     | 
    
         
             
                        end
         
     | 
| 
       472 
471 
     | 
    
         | 
| 
       473 
472 
     | 
    
         
             
                        it "sets the inverse side of the relation" do
         
     | 
| 
       474 
     | 
    
         
            -
                          tag_two.reload.related. 
     | 
| 
      
 473 
     | 
    
         
            +
                          expect(tag_two.reload.related).to eq([ tag_one ])
         
     | 
| 
       475 
474 
     | 
    
         
             
                        end
         
     | 
| 
       476 
475 
     | 
    
         
             
                      end
         
     | 
| 
       477 
476 
     | 
    
         | 
| 
         @@ -486,11 +485,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       486 
485 
     | 
    
         
             
                        end
         
     | 
| 
       487 
486 
     | 
    
         | 
| 
       488 
487 
     | 
    
         
             
                        it "sets the front side of the relation" do
         
     | 
| 
       489 
     | 
    
         
            -
                          loaded_tag_one.related. 
     | 
| 
      
 488 
     | 
    
         
            +
                          expect(loaded_tag_one.related).to eq([ tag_two ])
         
     | 
| 
       490 
489 
     | 
    
         
             
                        end
         
     | 
| 
       491 
490 
     | 
    
         | 
| 
       492 
491 
     | 
    
         
             
                        it "sets the inverse side of the relation" do
         
     | 
| 
       493 
     | 
    
         
            -
                          loaded_tag_two.related. 
     | 
| 
      
 492 
     | 
    
         
            +
                          expect(loaded_tag_two.related).to eq([ tag_one ])
         
     | 
| 
       494 
493 
     | 
    
         
             
                        end
         
     | 
| 
       495 
494 
     | 
    
         
             
                      end
         
     | 
| 
       496 
495 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -510,20 +509,20 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       510 
509 
     | 
    
         | 
| 
       511 
510 
     | 
    
         
             
                      it "executes the callback" do
         
     | 
| 
       512 
511 
     | 
    
         
             
                        post.tags.send(method, tag)
         
     | 
| 
       513 
     | 
    
         
            -
                        post.before_add_called. 
     | 
| 
      
 512 
     | 
    
         
            +
                        expect(post.before_add_called).to be true
         
     | 
| 
       514 
513 
     | 
    
         
             
                      end
         
     | 
| 
       515 
514 
     | 
    
         | 
| 
       516 
515 
     | 
    
         
             
                      context "when errors are raised" do
         
     | 
| 
       517 
516 
     | 
    
         | 
| 
       518 
517 
     | 
    
         
             
                        before do
         
     | 
| 
       519 
     | 
    
         
            -
                          post. 
     | 
| 
      
 518 
     | 
    
         
            +
                          expect(post).to receive(:before_add_tag).and_raise
         
     | 
| 
       520 
519 
     | 
    
         
             
                        end
         
     | 
| 
       521 
520 
     | 
    
         | 
| 
       522 
521 
     | 
    
         
             
                        it "does not add the document to the relation" do
         
     | 
| 
       523 
522 
     | 
    
         
             
                          expect {
         
     | 
| 
       524 
523 
     | 
    
         
             
                            post.tags.send(method, tag)
         
     | 
| 
       525 
524 
     | 
    
         
             
                          }.to raise_error
         
     | 
| 
       526 
     | 
    
         
            -
                          post.tags. 
     | 
| 
      
 525 
     | 
    
         
            +
                          expect(post.tags).to be_empty
         
     | 
| 
       527 
526 
     | 
    
         
             
                        end
         
     | 
| 
       528 
527 
     | 
    
         
             
                      end
         
     | 
| 
       529 
528 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -532,20 +531,20 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       532 
531 
     | 
    
         | 
| 
       533 
532 
     | 
    
         
             
                      it "executes the callback" do
         
     | 
| 
       534 
533 
     | 
    
         
             
                        post.tags.send(method, tag)
         
     | 
| 
       535 
     | 
    
         
            -
                        post.after_add_called. 
     | 
| 
      
 534 
     | 
    
         
            +
                        expect(post.after_add_called).to be true
         
     | 
| 
       536 
535 
     | 
    
         
             
                      end
         
     | 
| 
       537 
536 
     | 
    
         | 
| 
       538 
537 
     | 
    
         
             
                      context "when errors are raised" do
         
     | 
| 
       539 
538 
     | 
    
         | 
| 
       540 
539 
     | 
    
         
             
                        before do
         
     | 
| 
       541 
     | 
    
         
            -
                          post. 
     | 
| 
      
 540 
     | 
    
         
            +
                          expect(post).to receive(:after_add_tag).and_raise
         
     | 
| 
       542 
541 
     | 
    
         
             
                        end
         
     | 
| 
       543 
542 
     | 
    
         | 
| 
       544 
543 
     | 
    
         
             
                        it "adds the document to the relation" do
         
     | 
| 
       545 
544 
     | 
    
         
             
                          expect {
         
     | 
| 
       546 
545 
     | 
    
         
             
                            post.tags.send(method, tag)
         
     | 
| 
       547 
546 
     | 
    
         
             
                          }.to raise_error
         
     | 
| 
       548 
     | 
    
         
            -
                          post.tags. 
     | 
| 
      
 547 
     | 
    
         
            +
                          expect(post.tags).to eq([ tag ])
         
     | 
| 
       549 
548 
     | 
    
         
             
                        end
         
     | 
| 
       550 
549 
     | 
    
         
             
                      end
         
     | 
| 
       551 
550 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -572,11 +571,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       572 
571 
     | 
    
         
             
                  context "when the document is new" do
         
     | 
| 
       573 
572 
     | 
    
         | 
| 
       574 
573 
     | 
    
         
             
                    it "does not add the duplicates" do
         
     | 
| 
       575 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 574 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       576 
575 
     | 
    
         
             
                    end
         
     | 
| 
       577 
576 
     | 
    
         | 
| 
       578 
577 
     | 
    
         
             
                    it "does not create duplicate keys" do
         
     | 
| 
       579 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 578 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       580 
579 
     | 
    
         
             
                    end
         
     | 
| 
       581 
580 
     | 
    
         
             
                  end
         
     | 
| 
       582 
581 
     | 
    
         | 
| 
         @@ -587,19 +586,29 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       587 
586 
     | 
    
         
             
                    end
         
     | 
| 
       588 
587 
     | 
    
         | 
| 
       589 
588 
     | 
    
         
             
                    it "does not add the duplicates" do
         
     | 
| 
       590 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 589 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       591 
590 
     | 
    
         
             
                    end
         
     | 
| 
       592 
591 
     | 
    
         | 
| 
       593 
592 
     | 
    
         
             
                    it "does not create duplicate keys" do
         
     | 
| 
       594 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 593 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       595 
594 
     | 
    
         
             
                    end
         
     | 
| 
       596 
595 
     | 
    
         | 
| 
       597 
596 
     | 
    
         
             
                    it "does not add duplicates on the inverse" do
         
     | 
| 
       598 
     | 
    
         
            -
                      preference.people. 
     | 
| 
      
 597 
     | 
    
         
            +
                      expect(preference.people).to eq([ person ])
         
     | 
| 
       599 
598 
     | 
    
         
             
                    end
         
     | 
| 
       600 
599 
     | 
    
         | 
| 
       601 
600 
     | 
    
         
             
                    it "does not add duplicate inverse keys" do
         
     | 
| 
       602 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 601 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
      
 602 
     | 
    
         
            +
                    end
         
     | 
| 
      
 603 
     | 
    
         
            +
             
     | 
| 
      
 604 
     | 
    
         
            +
                    context "when reloading document from db" do
         
     | 
| 
      
 605 
     | 
    
         
            +
             
     | 
| 
      
 606 
     | 
    
         
            +
                      let(:from_db) { Preference.last }
         
     | 
| 
      
 607 
     | 
    
         
            +
             
     | 
| 
      
 608 
     | 
    
         
            +
                      it "does not create duplicate keys" do
         
     | 
| 
      
 609 
     | 
    
         
            +
                        person.preferences = [ from_db ]
         
     | 
| 
      
 610 
     | 
    
         
            +
                        expect(from_db.person_ids).to eq([ person.id ])
         
     | 
| 
      
 611 
     | 
    
         
            +
                      end
         
     | 
| 
       603 
612 
     | 
    
         
             
                    end
         
     | 
| 
       604 
613 
     | 
    
         
             
                  end
         
     | 
| 
       605 
614 
     | 
    
         
             
                end
         
     | 
| 
         @@ -621,19 +630,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       621 
630 
     | 
    
         
             
                    end
         
     | 
| 
       622 
631 
     | 
    
         | 
| 
       623 
632 
     | 
    
         
             
                    it "sets the relation" do
         
     | 
| 
       624 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 633 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       625 
634 
     | 
    
         
             
                    end
         
     | 
| 
       626 
635 
     | 
    
         | 
| 
       627 
636 
     | 
    
         
             
                    it "sets the foreign key on the relation" do
         
     | 
| 
       628 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 637 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       629 
638 
     | 
    
         
             
                    end
         
     | 
| 
       630 
639 
     | 
    
         | 
| 
       631 
640 
     | 
    
         
             
                    it "sets the foreign key on the inverse relation" do
         
     | 
| 
       632 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 641 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       633 
642 
     | 
    
         
             
                    end
         
     | 
| 
       634 
643 
     | 
    
         | 
| 
       635 
644 
     | 
    
         
             
                    it "does not save the target" do
         
     | 
| 
       636 
     | 
    
         
            -
                      preference. 
     | 
| 
      
 645 
     | 
    
         
            +
                      expect(preference).to be_new_record
         
     | 
| 
       637 
646 
     | 
    
         
             
                    end
         
     | 
| 
       638 
647 
     | 
    
         
             
                  end
         
     | 
| 
       639 
648 
     | 
    
         | 
| 
         @@ -652,15 +661,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       652 
661 
     | 
    
         
             
                    end
         
     | 
| 
       653 
662 
     | 
    
         | 
| 
       654 
663 
     | 
    
         
             
                    it "sets the relation" do
         
     | 
| 
       655 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 664 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       656 
665 
     | 
    
         
             
                    end
         
     | 
| 
       657 
666 
     | 
    
         | 
| 
       658 
667 
     | 
    
         
             
                    it "sets the foreign key on the relation" do
         
     | 
| 
       659 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 668 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       660 
669 
     | 
    
         
             
                    end
         
     | 
| 
       661 
670 
     | 
    
         | 
| 
       662 
671 
     | 
    
         
             
                    it "sets the foreign key on the inverse relation" do
         
     | 
| 
       663 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 672 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       664 
673 
     | 
    
         
             
                    end
         
     | 
| 
       665 
674 
     | 
    
         | 
| 
       666 
675 
     | 
    
         
             
                    context "and the parent is persisted" do
         
     | 
| 
         @@ -671,19 +680,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       671 
680 
     | 
    
         
             
                      end
         
     | 
| 
       672 
681 
     | 
    
         | 
| 
       673 
682 
     | 
    
         
             
                      it "maintains the relation" do
         
     | 
| 
       674 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 683 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       675 
684 
     | 
    
         
             
                      end
         
     | 
| 
       676 
685 
     | 
    
         | 
| 
       677 
686 
     | 
    
         
             
                      it "maintains the foreign key on the relation" do
         
     | 
| 
       678 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 687 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       679 
688 
     | 
    
         
             
                      end
         
     | 
| 
       680 
689 
     | 
    
         | 
| 
       681 
690 
     | 
    
         
             
                      it "maintains the foreign key on the inverse relation" do
         
     | 
| 
       682 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 691 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       683 
692 
     | 
    
         
             
                      end
         
     | 
| 
       684 
693 
     | 
    
         | 
| 
       685 
694 
     | 
    
         
             
                      it "maintains the base on the inverse relation" do
         
     | 
| 
       686 
     | 
    
         
            -
                        preference.people.first. 
     | 
| 
      
 695 
     | 
    
         
            +
                        expect(preference.people.first).to eq(person)
         
     | 
| 
       687 
696 
     | 
    
         
             
                      end
         
     | 
| 
       688 
697 
     | 
    
         
             
                    end
         
     | 
| 
       689 
698 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -703,23 +712,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       703 
712 
     | 
    
         
             
                    end
         
     | 
| 
       704 
713 
     | 
    
         | 
| 
       705 
714 
     | 
    
         
             
                    it "sets the relation" do
         
     | 
| 
       706 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 715 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       707 
716 
     | 
    
         
             
                    end
         
     | 
| 
       708 
717 
     | 
    
         | 
| 
       709 
718 
     | 
    
         
             
                    it "sets the foreign key on the relation" do
         
     | 
| 
       710 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 719 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       711 
720 
     | 
    
         
             
                    end
         
     | 
| 
       712 
721 
     | 
    
         | 
| 
       713 
722 
     | 
    
         
             
                    it "sets the foreign key on the inverse relation" do
         
     | 
| 
       714 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 723 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       715 
724 
     | 
    
         
             
                    end
         
     | 
| 
       716 
725 
     | 
    
         | 
| 
       717 
726 
     | 
    
         
             
                    it "sets the base on the inverse relation" do
         
     | 
| 
       718 
     | 
    
         
            -
                      preference.people.first. 
     | 
| 
      
 727 
     | 
    
         
            +
                      expect(preference.people.first).to eq(person)
         
     | 
| 
       719 
728 
     | 
    
         
             
                    end
         
     | 
| 
       720 
729 
     | 
    
         | 
| 
       721 
730 
     | 
    
         
             
                    it "saves the target" do
         
     | 
| 
       722 
     | 
    
         
            -
                      preference. 
     | 
| 
      
 731 
     | 
    
         
            +
                      expect(preference).to be_persisted
         
     | 
| 
       723 
732 
     | 
    
         
             
                    end
         
     | 
| 
       724 
733 
     | 
    
         | 
| 
       725 
734 
     | 
    
         
             
                    it "persists the relation" do
         
     | 
| 
         @@ -737,19 +746,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       737 
746 
     | 
    
         
             
                      end
         
     | 
| 
       738 
747 
     | 
    
         | 
| 
       739 
748 
     | 
    
         
             
                      it "sets the relation" do
         
     | 
| 
       740 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 749 
     | 
    
         
            +
                        expect(person.preferences).to eq([ another_preference ])
         
     | 
| 
       741 
750 
     | 
    
         
             
                      end
         
     | 
| 
       742 
751 
     | 
    
         | 
| 
       743 
752 
     | 
    
         
             
                      it "saves the target" do
         
     | 
| 
       744 
     | 
    
         
            -
                        another_preference. 
     | 
| 
      
 753 
     | 
    
         
            +
                        expect(another_preference).to be_persisted
         
     | 
| 
       745 
754 
     | 
    
         
             
                      end
         
     | 
| 
       746 
755 
     | 
    
         | 
| 
       747 
756 
     | 
    
         
             
                      it "does not leave foreign keys of the previous relation" do
         
     | 
| 
       748 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 757 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ another_preference.id ])
         
     | 
| 
       749 
758 
     | 
    
         
             
                      end
         
     | 
| 
       750 
759 
     | 
    
         | 
| 
       751 
760 
     | 
    
         
             
                      it "clears its own key on the foreign relation" do
         
     | 
| 
       752 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 761 
     | 
    
         
            +
                        expect(preference.person_ids).to be_empty
         
     | 
| 
       753 
762 
     | 
    
         
             
                      end
         
     | 
| 
       754 
763 
     | 
    
         | 
| 
       755 
764 
     | 
    
         
             
                      context "and then overwriting it again with the same value" do
         
     | 
| 
         @@ -759,7 +768,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       759 
768 
     | 
    
         
             
                        end
         
     | 
| 
       760 
769 
     | 
    
         | 
| 
       761 
770 
     | 
    
         
             
                        it "persists the relation between another_preference and person" do
         
     | 
| 
       762 
     | 
    
         
            -
                          another_preference.reload.people. 
     | 
| 
      
 771 
     | 
    
         
            +
                          expect(another_preference.reload.people).to eq([ person ])
         
     | 
| 
       763 
772 
     | 
    
         
             
                        end
         
     | 
| 
       764 
773 
     | 
    
         | 
| 
       765 
774 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -772,15 +781,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       772 
781 
     | 
    
         
             
                        end
         
     | 
| 
       773 
782 
     | 
    
         | 
| 
       774 
783 
     | 
    
         
             
                        it "persists the relation between person and another_preference" do
         
     | 
| 
       775 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 784 
     | 
    
         
            +
                          expect(person.preferences).to eq([ another_preference ])
         
     | 
| 
       776 
785 
     | 
    
         
             
                        end
         
     | 
| 
       777 
786 
     | 
    
         | 
| 
       778 
787 
     | 
    
         
             
                        it "persists the relation between another_prefrence and person" do
         
     | 
| 
       779 
     | 
    
         
            -
                          another_preference.people. 
     | 
| 
      
 788 
     | 
    
         
            +
                          expect(another_preference.people).to eq([ person ])
         
     | 
| 
       780 
789 
     | 
    
         
             
                        end
         
     | 
| 
       781 
790 
     | 
    
         | 
| 
       782 
791 
     | 
    
         
             
                        it "no longer has any relation between preference and person" do
         
     | 
| 
       783 
     | 
    
         
            -
                          preference.people. 
     | 
| 
      
 792 
     | 
    
         
            +
                          expect(preference.people).to be_empty
         
     | 
| 
       784 
793 
     | 
    
         
             
                        end
         
     | 
| 
       785 
794 
     | 
    
         
             
                      end
         
     | 
| 
       786 
795 
     | 
    
         | 
| 
         @@ -793,15 +802,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       793 
802 
     | 
    
         
             
                        end
         
     | 
| 
       794 
803 
     | 
    
         | 
| 
       795 
804 
     | 
    
         
             
                        it "persists the relation between person and another_preference" do
         
     | 
| 
       796 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 805 
     | 
    
         
            +
                          expect(person.preferences).to eq([ another_preference ])
         
     | 
| 
       797 
806 
     | 
    
         
             
                        end
         
     | 
| 
       798 
807 
     | 
    
         | 
| 
       799 
808 
     | 
    
         
             
                        it "persists the relation between another_prefrence and person" do
         
     | 
| 
       800 
     | 
    
         
            -
                          another_preference.people. 
     | 
| 
      
 809 
     | 
    
         
            +
                          expect(another_preference.people).to eq([ person ])
         
     | 
| 
       801 
810 
     | 
    
         
             
                        end
         
     | 
| 
       802 
811 
     | 
    
         | 
| 
       803 
812 
     | 
    
         
             
                        it "no longer has any relation between preference and person" do
         
     | 
| 
       804 
     | 
    
         
            -
                          preference.people. 
     | 
| 
      
 813 
     | 
    
         
            +
                          expect(preference.people).to be_empty
         
     | 
| 
       805 
814 
     | 
    
         
             
                        end
         
     | 
| 
       806 
815 
     | 
    
         
             
                      end
         
     | 
| 
       807 
816 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -831,11 +840,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       831 
840 
     | 
    
         
             
                      end
         
     | 
| 
       832 
841 
     | 
    
         | 
| 
       833 
842 
     | 
    
         
             
                      it "clears the relation" do
         
     | 
| 
       834 
     | 
    
         
            -
                        person.houses. 
     | 
| 
      
 843 
     | 
    
         
            +
                        expect(person.houses).to be_empty
         
     | 
| 
       835 
844 
     | 
    
         
             
                      end
         
     | 
| 
       836 
845 
     | 
    
         | 
| 
       837 
846 
     | 
    
         
             
                      it "clears the foreign keys" do
         
     | 
| 
       838 
     | 
    
         
            -
                        person.house_ids. 
     | 
| 
      
 847 
     | 
    
         
            +
                        expect(person.house_ids).to be_empty
         
     | 
| 
       839 
848 
     | 
    
         
             
                      end
         
     | 
| 
       840 
849 
     | 
    
         
             
                    end
         
     | 
| 
       841 
850 
     | 
    
         | 
| 
         @@ -855,19 +864,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       855 
864 
     | 
    
         
             
                      end
         
     | 
| 
       856 
865 
     | 
    
         | 
| 
       857 
866 
     | 
    
         
             
                      it "sets the relation to an empty array" do
         
     | 
| 
       858 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 867 
     | 
    
         
            +
                        expect(person.preferences).to be_empty
         
     | 
| 
       859 
868 
     | 
    
         
             
                      end
         
     | 
| 
       860 
869 
     | 
    
         | 
| 
       861 
870 
     | 
    
         
             
                      it "removed the inverse relation" do
         
     | 
| 
       862 
     | 
    
         
            -
                        preference.people. 
     | 
| 
      
 871 
     | 
    
         
            +
                        expect(preference.people).to be_empty
         
     | 
| 
       863 
872 
     | 
    
         
             
                      end
         
     | 
| 
       864 
873 
     | 
    
         | 
| 
       865 
874 
     | 
    
         
             
                      it "removes the foreign key values" do
         
     | 
| 
       866 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 875 
     | 
    
         
            +
                        expect(person.preference_ids).to be_empty
         
     | 
| 
       867 
876 
     | 
    
         
             
                      end
         
     | 
| 
       868 
877 
     | 
    
         | 
| 
       869 
878 
     | 
    
         
             
                      it "removes the inverse foreign key values" do
         
     | 
| 
       870 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 879 
     | 
    
         
            +
                        expect(preference.person_ids).to be_empty
         
     | 
| 
       871 
880 
     | 
    
         
             
                      end
         
     | 
| 
       872 
881 
     | 
    
         
             
                    end
         
     | 
| 
       873 
882 
     | 
    
         | 
| 
         @@ -889,23 +898,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       889 
898 
     | 
    
         
             
                        end
         
     | 
| 
       890 
899 
     | 
    
         | 
| 
       891 
900 
     | 
    
         
             
                        it "sets the relation to an empty array" do
         
     | 
| 
       892 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 901 
     | 
    
         
            +
                          expect(person.preferences).to be_empty
         
     | 
| 
       893 
902 
     | 
    
         
             
                        end
         
     | 
| 
       894 
903 
     | 
    
         | 
| 
       895 
904 
     | 
    
         
             
                        it "removed the inverse relation" do
         
     | 
| 
       896 
     | 
    
         
            -
                          preference.people. 
     | 
| 
      
 905 
     | 
    
         
            +
                          expect(preference.people).to be_empty
         
     | 
| 
       897 
906 
     | 
    
         
             
                        end
         
     | 
| 
       898 
907 
     | 
    
         | 
| 
       899 
908 
     | 
    
         
             
                        it "removes the foreign key values" do
         
     | 
| 
       900 
     | 
    
         
            -
                          person.preference_ids. 
     | 
| 
      
 909 
     | 
    
         
            +
                          expect(person.preference_ids).to be_empty
         
     | 
| 
       901 
910 
     | 
    
         
             
                        end
         
     | 
| 
       902 
911 
     | 
    
         | 
| 
       903 
912 
     | 
    
         
             
                        it "removes the inverse foreign key values" do
         
     | 
| 
       904 
     | 
    
         
            -
                          preference.person_ids. 
     | 
| 
      
 913 
     | 
    
         
            +
                          expect(preference.person_ids).to be_empty
         
     | 
| 
       905 
914 
     | 
    
         
             
                        end
         
     | 
| 
       906 
915 
     | 
    
         | 
| 
       907 
916 
     | 
    
         
             
                        it "does not delete the target from the database" do
         
     | 
| 
       908 
     | 
    
         
            -
                          preference. 
     | 
| 
      
 917 
     | 
    
         
            +
                          expect(preference).to_not be_destroyed
         
     | 
| 
       909 
918 
     | 
    
         
             
                        end
         
     | 
| 
       910 
919 
     | 
    
         
             
                      end
         
     | 
| 
       911 
920 
     | 
    
         | 
| 
         @@ -930,11 +939,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       930 
939 
     | 
    
         
             
                        end
         
     | 
| 
       931 
940 
     | 
    
         | 
| 
       932 
941 
     | 
    
         
             
                        it "sets the relation to an empty array" do
         
     | 
| 
       933 
     | 
    
         
            -
                          from_db.preferences. 
     | 
| 
      
 942 
     | 
    
         
            +
                          expect(from_db.preferences).to be_empty
         
     | 
| 
       934 
943 
     | 
    
         
             
                        end
         
     | 
| 
       935 
944 
     | 
    
         | 
| 
       936 
945 
     | 
    
         
             
                        it "removes the foreign key values" do
         
     | 
| 
       937 
     | 
    
         
            -
                          from_db.preference_ids. 
     | 
| 
      
 946 
     | 
    
         
            +
                          expect(from_db.preference_ids).to be_empty
         
     | 
| 
       938 
947 
     | 
    
         
             
                        end
         
     | 
| 
       939 
948 
     | 
    
         
             
                      end
         
     | 
| 
       940 
949 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -946,28 +955,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       946 
955 
     | 
    
         | 
| 
       947 
956 
     | 
    
         
             
                describe "##{method}" do
         
     | 
| 
       948 
957 
     | 
    
         | 
| 
       949 
     | 
    
         
            -
                  context "when providing scoped mass assignment" do
         
     | 
| 
       950 
     | 
    
         
            -
             
     | 
| 
       951 
     | 
    
         
            -
                    let(:person) do
         
     | 
| 
       952 
     | 
    
         
            -
                      Person.new
         
     | 
| 
       953 
     | 
    
         
            -
                    end
         
     | 
| 
       954 
     | 
    
         
            -
             
     | 
| 
       955 
     | 
    
         
            -
                    let(:house) do
         
     | 
| 
       956 
     | 
    
         
            -
                      person.houses.send(
         
     | 
| 
       957 
     | 
    
         
            -
                        method,
         
     | 
| 
       958 
     | 
    
         
            -
                        { name: "Dream", model: "Home" }, as: :admin
         
     | 
| 
       959 
     | 
    
         
            -
                      )
         
     | 
| 
       960 
     | 
    
         
            -
                    end
         
     | 
| 
       961 
     | 
    
         
            -
             
     | 
| 
       962 
     | 
    
         
            -
                    it "sets the attributes for the provided role" do
         
     | 
| 
       963 
     | 
    
         
            -
                      house.name.should eq("Dream")
         
     | 
| 
       964 
     | 
    
         
            -
                    end
         
     | 
| 
       965 
     | 
    
         
            -
             
     | 
| 
       966 
     | 
    
         
            -
                    it "does not set the attributes for other roles" do
         
     | 
| 
       967 
     | 
    
         
            -
                      house.model.should be_nil
         
     | 
| 
       968 
     | 
    
         
            -
                    end
         
     | 
| 
       969 
     | 
    
         
            -
                  end
         
     | 
| 
       970 
     | 
    
         
            -
             
     | 
| 
       971 
958 
     | 
    
         
             
                  context "when the relation is not polymorphic" do
         
     | 
| 
       972 
959 
     | 
    
         | 
| 
       973 
960 
     | 
    
         
             
                    context "when the parent is a new record" do
         
     | 
| 
         @@ -981,27 +968,27 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       981 
968 
     | 
    
         
             
                      end
         
     | 
| 
       982 
969 
     | 
    
         | 
| 
       983 
970 
     | 
    
         
             
                      it "adds the document to the relation" do
         
     | 
| 
       984 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 971 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       985 
972 
     | 
    
         
             
                      end
         
     | 
| 
       986 
973 
     | 
    
         | 
| 
       987 
974 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       988 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 975 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       989 
976 
     | 
    
         
             
                      end
         
     | 
| 
       990 
977 
     | 
    
         | 
| 
       991 
978 
     | 
    
         
             
                      it "sets the inverse foreign key on the relation" do
         
     | 
| 
       992 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 979 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       993 
980 
     | 
    
         
             
                      end
         
     | 
| 
       994 
981 
     | 
    
         | 
| 
       995 
982 
     | 
    
         
             
                      it "sets the attributes" do
         
     | 
| 
       996 
     | 
    
         
            -
                        preference.name. 
     | 
| 
      
 983 
     | 
    
         
            +
                        expect(preference.name).to eq("settings")
         
     | 
| 
       997 
984 
     | 
    
         
             
                      end
         
     | 
| 
       998 
985 
     | 
    
         | 
| 
       999 
986 
     | 
    
         
             
                      it "does not save the target" do
         
     | 
| 
       1000 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 987 
     | 
    
         
            +
                        expect(preference).to be_new_record
         
     | 
| 
       1001 
988 
     | 
    
         
             
                      end
         
     | 
| 
       1002 
989 
     | 
    
         | 
| 
       1003 
990 
     | 
    
         
             
                      it "adds the correct number of documents" do
         
     | 
| 
       1004 
     | 
    
         
            -
                        person.preferences.size. 
     | 
| 
      
 991 
     | 
    
         
            +
                        expect(person.preferences.size).to eq(1)
         
     | 
| 
       1005 
992 
     | 
    
         
             
                      end
         
     | 
| 
       1006 
993 
     | 
    
         
             
                    end
         
     | 
| 
       1007 
994 
     | 
    
         | 
| 
         @@ -1016,31 +1003,31 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1016 
1003 
     | 
    
         
             
                      end
         
     | 
| 
       1017 
1004 
     | 
    
         | 
| 
       1018 
1005 
     | 
    
         
             
                      it "adds the document to the relation" do
         
     | 
| 
       1019 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1006 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1020 
1007 
     | 
    
         
             
                      end
         
     | 
| 
       1021 
1008 
     | 
    
         | 
| 
       1022 
1009 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       1023 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1010 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1024 
1011 
     | 
    
         
             
                      end
         
     | 
| 
       1025 
1012 
     | 
    
         | 
| 
       1026 
1013 
     | 
    
         
             
                      it "sets the inverse foreign key on the relation" do
         
     | 
| 
       1027 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 1014 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       1028 
1015 
     | 
    
         
             
                      end
         
     | 
| 
       1029 
1016 
     | 
    
         | 
| 
       1030 
1017 
     | 
    
         
             
                      it "sets the base on the inverse relation" do
         
     | 
| 
       1031 
     | 
    
         
            -
                        preference.people. 
     | 
| 
      
 1018 
     | 
    
         
            +
                        expect(preference.people).to eq([ person ])
         
     | 
| 
       1032 
1019 
     | 
    
         
             
                      end
         
     | 
| 
       1033 
1020 
     | 
    
         | 
| 
       1034 
1021 
     | 
    
         
             
                      it "sets the attributes" do
         
     | 
| 
       1035 
     | 
    
         
            -
                        preference.name. 
     | 
| 
      
 1022 
     | 
    
         
            +
                        expect(preference.name).to eq("settings")
         
     | 
| 
       1036 
1023 
     | 
    
         
             
                      end
         
     | 
| 
       1037 
1024 
     | 
    
         | 
| 
       1038 
1025 
     | 
    
         
             
                      it "does not save the target" do
         
     | 
| 
       1039 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 1026 
     | 
    
         
            +
                        expect(preference).to be_new_record
         
     | 
| 
       1040 
1027 
     | 
    
         
             
                      end
         
     | 
| 
       1041 
1028 
     | 
    
         | 
| 
       1042 
1029 
     | 
    
         
             
                      it "adds the correct number of documents" do
         
     | 
| 
       1043 
     | 
    
         
            -
                        person.preferences.size. 
     | 
| 
      
 1030 
     | 
    
         
            +
                        expect(person.preferences.size).to eq(1)
         
     | 
| 
       1044 
1031 
     | 
    
         
             
                      end
         
     | 
| 
       1045 
1032 
     | 
    
         | 
| 
       1046 
1033 
     | 
    
         
             
                      context "when saving the target" do
         
     | 
| 
         @@ -1050,7 +1037,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1050 
1037 
     | 
    
         
             
                        end
         
     | 
| 
       1051 
1038 
     | 
    
         | 
| 
       1052 
1039 
     | 
    
         
             
                        it "persists the parent keys" do
         
     | 
| 
       1053 
     | 
    
         
            -
                          person.reload.preference_ids. 
     | 
| 
      
 1040 
     | 
    
         
            +
                          expect(person.reload.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1054 
1041 
     | 
    
         
             
                        end
         
     | 
| 
       1055 
1042 
     | 
    
         
             
                      end
         
     | 
| 
       1056 
1043 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -1065,16 +1052,17 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1065 
1052 
     | 
    
         
             
                end
         
     | 
| 
       1066 
1053 
     | 
    
         | 
| 
       1067 
1054 
     | 
    
         
             
                let(:document) do
         
     | 
| 
       1068 
     | 
    
         
            -
                   
     | 
| 
      
 1055 
     | 
    
         
            +
                  double
         
     | 
| 
       1069 
1056 
     | 
    
         
             
                end
         
     | 
| 
       1070 
1057 
     | 
    
         | 
| 
       1071 
1058 
     | 
    
         
             
                let(:metadata) do
         
     | 
| 
       1072 
     | 
    
         
            -
                   
     | 
| 
      
 1059 
     | 
    
         
            +
                  double(extension?: false)
         
     | 
| 
       1073 
1060 
     | 
    
         
             
                end
         
     | 
| 
       1074 
1061 
     | 
    
         | 
| 
       1075 
1062 
     | 
    
         
             
                it "returns the embedded in builder" do
         
     | 
| 
       1076 
     | 
    
         
            -
                   
     | 
| 
       1077 
     | 
    
         
            -
                     
     | 
| 
      
 1063 
     | 
    
         
            +
                  expect(
         
     | 
| 
      
 1064 
     | 
    
         
            +
                    described_class.builder(nil, metadata, document)
         
     | 
| 
      
 1065 
     | 
    
         
            +
                  ).to be_a_kind_of(builder_klass)
         
     | 
| 
       1078 
1066 
     | 
    
         
             
                end
         
     | 
| 
       1079 
1067 
     | 
    
         
             
              end
         
     | 
| 
       1080 
1068 
     | 
    
         | 
| 
         @@ -1099,31 +1087,31 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1099 
1087 
     | 
    
         
             
                      end
         
     | 
| 
       1100 
1088 
     | 
    
         | 
| 
       1101 
1089 
     | 
    
         
             
                      it "clears out the relation" do
         
     | 
| 
       1102 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1090 
     | 
    
         
            +
                        expect(person.preferences).to be_empty
         
     | 
| 
       1103 
1091 
     | 
    
         
             
                      end
         
     | 
| 
       1104 
1092 
     | 
    
         | 
| 
       1105 
1093 
     | 
    
         
             
                      it "removes the parent from the inverse relation" do
         
     | 
| 
       1106 
     | 
    
         
            -
                        preference.people. 
     | 
| 
      
 1094 
     | 
    
         
            +
                        expect(preference.people).to_not include(person)
         
     | 
| 
       1107 
1095 
     | 
    
         
             
                      end
         
     | 
| 
       1108 
1096 
     | 
    
         | 
| 
       1109 
1097 
     | 
    
         
             
                      it "removes the foreign keys" do
         
     | 
| 
       1110 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1098 
     | 
    
         
            +
                        expect(person.preference_ids).to be_empty
         
     | 
| 
       1111 
1099 
     | 
    
         
             
                      end
         
     | 
| 
       1112 
1100 
     | 
    
         | 
| 
       1113 
1101 
     | 
    
         
             
                      it "removes the parent key from the inverse" do
         
     | 
| 
       1114 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 1102 
     | 
    
         
            +
                        expect(preference.person_ids).to_not include(person.id)
         
     | 
| 
       1115 
1103 
     | 
    
         
             
                      end
         
     | 
| 
       1116 
1104 
     | 
    
         | 
| 
       1117 
1105 
     | 
    
         
             
                      it "does not delete the documents" do
         
     | 
| 
       1118 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 1106 
     | 
    
         
            +
                        expect(preference).to_not be_destroyed
         
     | 
| 
       1119 
1107 
     | 
    
         
             
                      end
         
     | 
| 
       1120 
1108 
     | 
    
         | 
| 
       1121 
1109 
     | 
    
         
             
                      it "persists the nullification" do
         
     | 
| 
       1122 
     | 
    
         
            -
                        person.reload.preferences. 
     | 
| 
      
 1110 
     | 
    
         
            +
                        expect(person.reload.preferences).to be_empty
         
     | 
| 
       1123 
1111 
     | 
    
         
             
                      end
         
     | 
| 
       1124 
1112 
     | 
    
         | 
| 
       1125 
1113 
     | 
    
         
             
                      it "returns the relation" do
         
     | 
| 
       1126 
     | 
    
         
            -
                        relation. 
     | 
| 
      
 1114 
     | 
    
         
            +
                        expect(relation).to be_empty
         
     | 
| 
       1127 
1115 
     | 
    
         
             
                      end
         
     | 
| 
       1128 
1116 
     | 
    
         
             
                    end
         
     | 
| 
       1129 
1117 
     | 
    
         | 
| 
         @@ -1138,7 +1126,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1138 
1126 
     | 
    
         
             
                      end
         
     | 
| 
       1139 
1127 
     | 
    
         | 
| 
       1140 
1128 
     | 
    
         
             
                      it "clears out the relation" do
         
     | 
| 
       1141 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1129 
     | 
    
         
            +
                        expect(person.preferences).to be_empty
         
     | 
| 
       1142 
1130 
     | 
    
         
             
                      end
         
     | 
| 
       1143 
1131 
     | 
    
         
             
                    end
         
     | 
| 
       1144 
1132 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1158,7 +1146,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1158 
1146 
     | 
    
         
             
                    end
         
     | 
| 
       1159 
1147 
     | 
    
         | 
| 
       1160 
1148 
     | 
    
         
             
                    it "clears out the relation" do
         
     | 
| 
       1161 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 1149 
     | 
    
         
            +
                      expect(person.preferences).to be_empty
         
     | 
| 
       1162 
1150 
     | 
    
         
             
                    end
         
     | 
| 
       1163 
1151 
     | 
    
         
             
                  end
         
     | 
| 
       1164 
1152 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1186,25 +1174,25 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1186 
1174 
     | 
    
         
             
                      end
         
     | 
| 
       1187 
1175 
     | 
    
         | 
| 
       1188 
1176 
     | 
    
         
             
                      it "executes the callback" do
         
     | 
| 
       1189 
     | 
    
         
            -
                        post.before_remove_called. 
     | 
| 
      
 1177 
     | 
    
         
            +
                        expect(post.before_remove_called).to be true
         
     | 
| 
       1190 
1178 
     | 
    
         
             
                      end
         
     | 
| 
       1191 
1179 
     | 
    
         | 
| 
       1192 
1180 
     | 
    
         
             
                      it "removes the document from the relation" do
         
     | 
| 
       1193 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 1181 
     | 
    
         
            +
                        expect(post.tags).to be_empty
         
     | 
| 
       1194 
1182 
     | 
    
         
             
                      end
         
     | 
| 
       1195 
1183 
     | 
    
         
             
                    end
         
     | 
| 
       1196 
1184 
     | 
    
         | 
| 
       1197 
1185 
     | 
    
         
             
                    context "when errors are raised" do
         
     | 
| 
       1198 
1186 
     | 
    
         | 
| 
       1199 
1187 
     | 
    
         
             
                      before do
         
     | 
| 
       1200 
     | 
    
         
            -
                        post. 
     | 
| 
      
 1188 
     | 
    
         
            +
                        expect(post).to receive(:before_remove_tag).and_raise
         
     | 
| 
       1201 
1189 
     | 
    
         
             
                      end
         
     | 
| 
       1202 
1190 
     | 
    
         | 
| 
       1203 
1191 
     | 
    
         
             
                      it "does not remove the document from the relation" do
         
     | 
| 
       1204 
1192 
     | 
    
         
             
                        expect {
         
     | 
| 
       1205 
1193 
     | 
    
         
             
                          post.tags.clear
         
     | 
| 
       1206 
1194 
     | 
    
         
             
                        }.to raise_error
         
     | 
| 
       1207 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 1195 
     | 
    
         
            +
                        expect(post.tags).to eq([ tag ])
         
     | 
| 
       1208 
1196 
     | 
    
         
             
                      end
         
     | 
| 
       1209 
1197 
     | 
    
         
             
                    end
         
     | 
| 
       1210 
1198 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1218,25 +1206,25 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1218 
1206 
     | 
    
         
             
                      end
         
     | 
| 
       1219 
1207 
     | 
    
         | 
| 
       1220 
1208 
     | 
    
         
             
                      it "executes the callback" do
         
     | 
| 
       1221 
     | 
    
         
            -
                        post.after_remove_called. 
     | 
| 
      
 1209 
     | 
    
         
            +
                        expect(post.after_remove_called).to be true
         
     | 
| 
       1222 
1210 
     | 
    
         
             
                      end
         
     | 
| 
       1223 
1211 
     | 
    
         | 
| 
       1224 
1212 
     | 
    
         
             
                      it "removes the document from the relation" do
         
     | 
| 
       1225 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 1213 
     | 
    
         
            +
                        expect(post.tags).to be_empty
         
     | 
| 
       1226 
1214 
     | 
    
         
             
                      end
         
     | 
| 
       1227 
1215 
     | 
    
         
             
                    end
         
     | 
| 
       1228 
1216 
     | 
    
         | 
| 
       1229 
1217 
     | 
    
         
             
                    context "when errors are raised" do
         
     | 
| 
       1230 
1218 
     | 
    
         | 
| 
       1231 
1219 
     | 
    
         
             
                      before do
         
     | 
| 
       1232 
     | 
    
         
            -
                        post. 
     | 
| 
      
 1220 
     | 
    
         
            +
                        expect(post).to receive(:after_remove_tag).and_raise
         
     | 
| 
       1233 
1221 
     | 
    
         
             
                      end
         
     | 
| 
       1234 
1222 
     | 
    
         | 
| 
       1235 
1223 
     | 
    
         
             
                      it "removes the document from the relation" do
         
     | 
| 
       1236 
1224 
     | 
    
         
             
                        expect {
         
     | 
| 
       1237 
1225 
     | 
    
         
             
                          post.tags.clear
         
     | 
| 
       1238 
1226 
     | 
    
         
             
                        }.to raise_error
         
     | 
| 
       1239 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 1227 
     | 
    
         
            +
                        expect(post.tags).to be_empty
         
     | 
| 
       1240 
1228 
     | 
    
         
             
                      end
         
     | 
| 
       1241 
1229 
     | 
    
         
             
                    end
         
     | 
| 
       1242 
1230 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1260,7 +1248,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1260 
1248 
     | 
    
         
             
                  end
         
     | 
| 
       1261 
1249 
     | 
    
         | 
| 
       1262 
1250 
     | 
    
         
             
                  it "returns an array of loaded documents" do
         
     | 
| 
       1263 
     | 
    
         
            -
                    result. 
     | 
| 
      
 1251 
     | 
    
         
            +
                    expect(result).to eq([ preference ])
         
     | 
| 
       1264 
1252 
     | 
    
         
             
                  end
         
     | 
| 
       1265 
1253 
     | 
    
         
             
                end
         
     | 
| 
       1266 
1254 
     | 
    
         | 
| 
         @@ -1279,7 +1267,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1279 
1267 
     | 
    
         
             
                  end
         
     | 
| 
       1280 
1268 
     | 
    
         | 
| 
       1281 
1269 
     | 
    
         
             
                  it "returns an array of loaded documents" do
         
     | 
| 
       1282 
     | 
    
         
            -
                    result. 
     | 
| 
      
 1270 
     | 
    
         
            +
                    expect(result).to eq([ preference ])
         
     | 
| 
       1283 
1271 
     | 
    
         
             
                  end
         
     | 
| 
       1284 
1272 
     | 
    
         
             
                end
         
     | 
| 
       1285 
1273 
     | 
    
         | 
| 
         @@ -1300,11 +1288,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1300 
1288 
     | 
    
         
             
                    end
         
     | 
| 
       1301 
1289 
     | 
    
         | 
| 
       1302 
1290 
     | 
    
         
             
                    it "appends the document to the relation" do
         
     | 
| 
       1303 
     | 
    
         
            -
                      person.houses. 
     | 
| 
      
 1291 
     | 
    
         
            +
                      expect(person.houses).to eq([ house ])
         
     | 
| 
       1304 
1292 
     | 
    
         
             
                    end
         
     | 
| 
       1305 
1293 
     | 
    
         | 
| 
       1306 
1294 
     | 
    
         
             
                    it "sets the foreign key on the relation" do
         
     | 
| 
       1307 
     | 
    
         
            -
                      person.house_ids. 
     | 
| 
      
 1295 
     | 
    
         
            +
                      expect(person.house_ids).to eq([ house.id ])
         
     | 
| 
       1308 
1296 
     | 
    
         
             
                    end
         
     | 
| 
       1309 
1297 
     | 
    
         
             
                  end
         
     | 
| 
       1310 
1298 
     | 
    
         | 
| 
         @@ -1321,27 +1309,27 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1321 
1309 
     | 
    
         
             
                    end
         
     | 
| 
       1322 
1310 
     | 
    
         | 
| 
       1323 
1311 
     | 
    
         
             
                    it "adds the documents to the relation" do
         
     | 
| 
       1324 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 1312 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1325 
1313 
     | 
    
         
             
                    end
         
     | 
| 
       1326 
1314 
     | 
    
         | 
| 
       1327 
1315 
     | 
    
         
             
                    it "sets the foreign key on the relation" do
         
     | 
| 
       1328 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 1316 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1329 
1317 
     | 
    
         
             
                    end
         
     | 
| 
       1330 
1318 
     | 
    
         | 
| 
       1331 
1319 
     | 
    
         
             
                    it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1332 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 1320 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       1333 
1321 
     | 
    
         
             
                    end
         
     | 
| 
       1334 
1322 
     | 
    
         | 
| 
       1335 
1323 
     | 
    
         
             
                    it "saves the target" do
         
     | 
| 
       1336 
     | 
    
         
            -
                      preference. 
     | 
| 
      
 1324 
     | 
    
         
            +
                      expect(preference).to be_persisted
         
     | 
| 
       1337 
1325 
     | 
    
         
             
                    end
         
     | 
| 
       1338 
1326 
     | 
    
         | 
| 
       1339 
1327 
     | 
    
         
             
                    it "adds the correct number of documents" do
         
     | 
| 
       1340 
     | 
    
         
            -
                      person.preferences.size. 
     | 
| 
      
 1328 
     | 
    
         
            +
                      expect(person.preferences.size).to eq(1)
         
     | 
| 
       1341 
1329 
     | 
    
         
             
                    end
         
     | 
| 
       1342 
1330 
     | 
    
         | 
| 
       1343 
1331 
     | 
    
         
             
                    it "persists the link" do
         
     | 
| 
       1344 
     | 
    
         
            -
                      person.reload.preferences. 
     | 
| 
      
 1332 
     | 
    
         
            +
                      expect(person.reload.preferences).to eq([ preference ])
         
     | 
| 
       1345 
1333 
     | 
    
         
             
                    end
         
     | 
| 
       1346 
1334 
     | 
    
         
             
                  end
         
     | 
| 
       1347 
1335 
     | 
    
         | 
| 
         @@ -1362,23 +1350,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1362 
1350 
     | 
    
         
             
                      end
         
     | 
| 
       1363 
1351 
     | 
    
         | 
| 
       1364 
1352 
     | 
    
         
             
                      it "adds the documents to the relation" do
         
     | 
| 
       1365 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1353 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1366 
1354 
     | 
    
         
             
                      end
         
     | 
| 
       1367 
1355 
     | 
    
         | 
| 
       1368 
1356 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       1369 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1357 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1370 
1358 
     | 
    
         
             
                      end
         
     | 
| 
       1371 
1359 
     | 
    
         | 
| 
       1372 
1360 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1373 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 1361 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       1374 
1362 
     | 
    
         
             
                      end
         
     | 
| 
       1375 
1363 
     | 
    
         | 
| 
       1376 
1364 
     | 
    
         
             
                      it "does not save the target" do
         
     | 
| 
       1377 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 1365 
     | 
    
         
            +
                        expect(preference).to be_new_record
         
     | 
| 
       1378 
1366 
     | 
    
         
             
                      end
         
     | 
| 
       1379 
1367 
     | 
    
         | 
| 
       1380 
1368 
     | 
    
         
             
                      it "adds the correct number of documents" do
         
     | 
| 
       1381 
     | 
    
         
            -
                        person.preferences.size. 
     | 
| 
      
 1369 
     | 
    
         
            +
                        expect(person.preferences.size).to eq(1)
         
     | 
| 
       1382 
1370 
     | 
    
         
             
                      end
         
     | 
| 
       1383 
1371 
     | 
    
         | 
| 
       1384 
1372 
     | 
    
         
             
                      context "when appending a second time" do
         
     | 
| 
         @@ -1388,11 +1376,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1388 
1376 
     | 
    
         
             
                        end
         
     | 
| 
       1389 
1377 
     | 
    
         | 
| 
       1390 
1378 
     | 
    
         
             
                        it "does not allow the document to be added again" do
         
     | 
| 
       1391 
     | 
    
         
            -
                          person.preferences. 
     | 
| 
      
 1379 
     | 
    
         
            +
                          expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1392 
1380 
     | 
    
         
             
                        end
         
     | 
| 
       1393 
1381 
     | 
    
         | 
| 
       1394 
1382 
     | 
    
         
             
                        it "does not allow duplicate ids" do
         
     | 
| 
       1395 
     | 
    
         
            -
                          person.preference_ids. 
     | 
| 
      
 1383 
     | 
    
         
            +
                          expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1396 
1384 
     | 
    
         
             
                        end
         
     | 
| 
       1397 
1385 
     | 
    
         
             
                      end
         
     | 
| 
       1398 
1386 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -1413,27 +1401,27 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1413 
1401 
     | 
    
         
             
                      end
         
     | 
| 
       1414 
1402 
     | 
    
         | 
| 
       1415 
1403 
     | 
    
         
             
                      it "adds the documents to the relation" do
         
     | 
| 
       1416 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1404 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1417 
1405 
     | 
    
         
             
                      end
         
     | 
| 
       1418 
1406 
     | 
    
         | 
| 
       1419 
1407 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       1420 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1408 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1421 
1409 
     | 
    
         
             
                      end
         
     | 
| 
       1422 
1410 
     | 
    
         | 
| 
       1423 
1411 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1424 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 1412 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       1425 
1413 
     | 
    
         
             
                      end
         
     | 
| 
       1426 
1414 
     | 
    
         | 
| 
       1427 
1415 
     | 
    
         
             
                      it "saves the target" do
         
     | 
| 
       1428 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 1416 
     | 
    
         
            +
                        expect(preference).to be_persisted
         
     | 
| 
       1429 
1417 
     | 
    
         
             
                      end
         
     | 
| 
       1430 
1418 
     | 
    
         | 
| 
       1431 
1419 
     | 
    
         
             
                      it "adds the correct number of documents" do
         
     | 
| 
       1432 
     | 
    
         
            -
                        person.preferences.size. 
     | 
| 
      
 1420 
     | 
    
         
            +
                        expect(person.preferences.size).to eq(1)
         
     | 
| 
       1433 
1421 
     | 
    
         
             
                      end
         
     | 
| 
       1434 
1422 
     | 
    
         | 
| 
       1435 
1423 
     | 
    
         
             
                      it "persists the link" do
         
     | 
| 
       1436 
     | 
    
         
            -
                        person.reload.preferences. 
     | 
| 
      
 1424 
     | 
    
         
            +
                        expect(person.reload.preferences).to eq([ preference ])
         
     | 
| 
       1437 
1425 
     | 
    
         
             
                      end
         
     | 
| 
       1438 
1426 
     | 
    
         
             
                    end
         
     | 
| 
       1439 
1427 
     | 
    
         | 
| 
         @@ -1456,23 +1444,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1456 
1444 
     | 
    
         
             
                      end
         
     | 
| 
       1457 
1445 
     | 
    
         | 
| 
       1458 
1446 
     | 
    
         
             
                      it "adds the documents to the relation" do
         
     | 
| 
       1459 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1447 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1460 
1448 
     | 
    
         
             
                      end
         
     | 
| 
       1461 
1449 
     | 
    
         | 
| 
       1462 
1450 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       1463 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1451 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1464 
1452 
     | 
    
         
             
                      end
         
     | 
| 
       1465 
1453 
     | 
    
         | 
| 
       1466 
1454 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1467 
     | 
    
         
            -
                        preference.reload.person_ids. 
     | 
| 
      
 1455 
     | 
    
         
            +
                        expect(preference.reload.person_ids).to eq([ person.id ])
         
     | 
| 
       1468 
1456 
     | 
    
         
             
                      end
         
     | 
| 
       1469 
1457 
     | 
    
         | 
| 
       1470 
1458 
     | 
    
         
             
                      it "adds the correct number of documents" do
         
     | 
| 
       1471 
     | 
    
         
            -
                        person.preferences.size. 
     | 
| 
      
 1459 
     | 
    
         
            +
                        expect(person.preferences.size).to eq(1)
         
     | 
| 
       1472 
1460 
     | 
    
         
             
                      end
         
     | 
| 
       1473 
1461 
     | 
    
         | 
| 
       1474 
1462 
     | 
    
         
             
                      it "persists the link" do
         
     | 
| 
       1475 
     | 
    
         
            -
                        person.reload.preferences. 
     | 
| 
      
 1463 
     | 
    
         
            +
                        expect(person.reload.preferences).to eq([ preference ])
         
     | 
| 
       1476 
1464 
     | 
    
         
             
                      end
         
     | 
| 
       1477 
1465 
     | 
    
         
             
                    end
         
     | 
| 
       1478 
1466 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1492,31 +1480,31 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1492 
1480 
     | 
    
         
             
                    end
         
     | 
| 
       1493 
1481 
     | 
    
         | 
| 
       1494 
1482 
     | 
    
         
             
                    it "adds the documents to the relation" do
         
     | 
| 
       1495 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 1483 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1496 
1484 
     | 
    
         
             
                    end
         
     | 
| 
       1497 
1485 
     | 
    
         | 
| 
       1498 
1486 
     | 
    
         
             
                    it "sets the foreign key on the relation" do
         
     | 
| 
       1499 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 1487 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1500 
1488 
     | 
    
         
             
                    end
         
     | 
| 
       1501 
1489 
     | 
    
         | 
| 
       1502 
1490 
     | 
    
         
             
                    it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1503 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 1491 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       1504 
1492 
     | 
    
         
             
                    end
         
     | 
| 
       1505 
1493 
     | 
    
         | 
| 
       1506 
1494 
     | 
    
         
             
                    it "sets the base on the inverse relation" do
         
     | 
| 
       1507 
     | 
    
         
            -
                      preference.people. 
     | 
| 
      
 1495 
     | 
    
         
            +
                      expect(preference.people).to eq([ person ])
         
     | 
| 
       1508 
1496 
     | 
    
         
             
                    end
         
     | 
| 
       1509 
1497 
     | 
    
         | 
| 
       1510 
1498 
     | 
    
         
             
                    it "sets the same instance on the inverse relation" do
         
     | 
| 
       1511 
     | 
    
         
            -
                      preference.people.first. 
     | 
| 
      
 1499 
     | 
    
         
            +
                      expect(preference.people.first).to eql(person)
         
     | 
| 
       1512 
1500 
     | 
    
         
             
                    end
         
     | 
| 
       1513 
1501 
     | 
    
         | 
| 
       1514 
1502 
     | 
    
         
             
                    it "saves the target" do
         
     | 
| 
       1515 
     | 
    
         
            -
                      preference. 
     | 
| 
      
 1503 
     | 
    
         
            +
                      expect(preference).to_not be_new_record
         
     | 
| 
       1516 
1504 
     | 
    
         
             
                    end
         
     | 
| 
       1517 
1505 
     | 
    
         | 
| 
       1518 
1506 
     | 
    
         
             
                    it "adds the document to the target" do
         
     | 
| 
       1519 
     | 
    
         
            -
                      person.preferences.count. 
     | 
| 
      
 1507 
     | 
    
         
            +
                      expect(person.preferences.count).to eq(1)
         
     | 
| 
       1520 
1508 
     | 
    
         
             
                    end
         
     | 
| 
       1521 
1509 
     | 
    
         | 
| 
       1522 
1510 
     | 
    
         
             
                    context "when documents already exist on the relation" do
         
     | 
| 
         @@ -1530,31 +1518,31 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1530 
1518 
     | 
    
         
             
                      end
         
     | 
| 
       1531 
1519 
     | 
    
         | 
| 
       1532 
1520 
     | 
    
         
             
                      it "adds the documents to the relation" do
         
     | 
| 
       1533 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1521 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference, preference_two ])
         
     | 
| 
       1534 
1522 
     | 
    
         
             
                      end
         
     | 
| 
       1535 
1523 
     | 
    
         | 
| 
       1536 
1524 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       1537 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1525 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id, preference_two.id ])
         
     | 
| 
       1538 
1526 
     | 
    
         
             
                      end
         
     | 
| 
       1539 
1527 
     | 
    
         | 
| 
       1540 
1528 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1541 
     | 
    
         
            -
                        preference_two.person_ids. 
     | 
| 
      
 1529 
     | 
    
         
            +
                        expect(preference_two.person_ids).to eq([ person.id ])
         
     | 
| 
       1542 
1530 
     | 
    
         
             
                      end
         
     | 
| 
       1543 
1531 
     | 
    
         | 
| 
       1544 
1532 
     | 
    
         
             
                      it "sets the base on the inverse relation" do
         
     | 
| 
       1545 
     | 
    
         
            -
                        preference_two.people. 
     | 
| 
      
 1533 
     | 
    
         
            +
                        expect(preference_two.people).to eq([ person ])
         
     | 
| 
       1546 
1534 
     | 
    
         
             
                      end
         
     | 
| 
       1547 
1535 
     | 
    
         | 
| 
       1548 
1536 
     | 
    
         
             
                      it "sets the same instance on the inverse relation" do
         
     | 
| 
       1549 
     | 
    
         
            -
                        preference_two.people.first. 
     | 
| 
      
 1537 
     | 
    
         
            +
                        expect(preference_two.people.first).to eql(person)
         
     | 
| 
       1550 
1538 
     | 
    
         
             
                      end
         
     | 
| 
       1551 
1539 
     | 
    
         | 
| 
       1552 
1540 
     | 
    
         
             
                      it "saves the target" do
         
     | 
| 
       1553 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 1541 
     | 
    
         
            +
                        expect(preference).to_not be_new_record
         
     | 
| 
       1554 
1542 
     | 
    
         
             
                      end
         
     | 
| 
       1555 
1543 
     | 
    
         | 
| 
       1556 
1544 
     | 
    
         
             
                      it "adds the document to the target" do
         
     | 
| 
       1557 
     | 
    
         
            -
                        person.preferences.count. 
     | 
| 
      
 1545 
     | 
    
         
            +
                        expect(person.preferences.count).to eq(2)
         
     | 
| 
       1558 
1546 
     | 
    
         
             
                      end
         
     | 
| 
       1559 
1547 
     | 
    
         
             
                    end
         
     | 
| 
       1560 
1548 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1574,21 +1562,21 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1574 
1562 
     | 
    
         
             
                    end
         
     | 
| 
       1575 
1563 
     | 
    
         | 
| 
       1576 
1564 
     | 
    
         
             
                    it "sets the front side of the relation" do
         
     | 
| 
       1577 
     | 
    
         
            -
                      person.administrated_events. 
     | 
| 
      
 1565 
     | 
    
         
            +
                      expect(person.administrated_events).to eq([ event ])
         
     | 
| 
       1578 
1566 
     | 
    
         
             
                    end
         
     | 
| 
       1579 
1567 
     | 
    
         | 
| 
       1580 
1568 
     | 
    
         
             
                    it "sets the inverse side of the relation" do
         
     | 
| 
       1581 
     | 
    
         
            -
                      event.administrators(true). 
     | 
| 
      
 1569 
     | 
    
         
            +
                      expect(event.administrators(true)).to eq([ person ])
         
     | 
| 
       1582 
1570 
     | 
    
         
             
                    end
         
     | 
| 
       1583 
1571 
     | 
    
         | 
| 
       1584 
1572 
     | 
    
         
             
                    context "when reloading" do
         
     | 
| 
       1585 
1573 
     | 
    
         | 
| 
       1586 
1574 
     | 
    
         
             
                      it "sets the front side of the relation" do
         
     | 
| 
       1587 
     | 
    
         
            -
                        person.reload.administrated_events. 
     | 
| 
      
 1575 
     | 
    
         
            +
                        expect(person.reload.administrated_events).to eq([ event ])
         
     | 
| 
       1588 
1576 
     | 
    
         
             
                      end
         
     | 
| 
       1589 
1577 
     | 
    
         | 
| 
       1590 
1578 
     | 
    
         
             
                      it "sets the inverse side of the relation" do
         
     | 
| 
       1591 
     | 
    
         
            -
                        event.reload.administrators. 
     | 
| 
      
 1579 
     | 
    
         
            +
                        expect(event.reload.administrators).to eq([ person ])
         
     | 
| 
       1592 
1580 
     | 
    
         
             
                      end
         
     | 
| 
       1593 
1581 
     | 
    
         
             
                    end
         
     | 
| 
       1594 
1582 
     | 
    
         | 
| 
         @@ -1603,11 +1591,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1603 
1591 
     | 
    
         
             
                      end
         
     | 
| 
       1604 
1592 
     | 
    
         | 
| 
       1605 
1593 
     | 
    
         
             
                      it "sets the front side of the relation" do
         
     | 
| 
       1606 
     | 
    
         
            -
                        loaded_person.administrated_events. 
     | 
| 
      
 1594 
     | 
    
         
            +
                        expect(loaded_person.administrated_events).to eq([ event ])
         
     | 
| 
       1607 
1595 
     | 
    
         
             
                      end
         
     | 
| 
       1608 
1596 
     | 
    
         | 
| 
       1609 
1597 
     | 
    
         
             
                      it "sets the inverse side of the relation" do
         
     | 
| 
       1610 
     | 
    
         
            -
                        loaded_event.administrators. 
     | 
| 
      
 1598 
     | 
    
         
            +
                        expect(loaded_event.administrators).to eq([ person ])
         
     | 
| 
       1611 
1599 
     | 
    
         
             
                      end
         
     | 
| 
       1612 
1600 
     | 
    
         
             
                    end
         
     | 
| 
       1613 
1601 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1631,7 +1619,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1631 
1619 
     | 
    
         
             
                    end
         
     | 
| 
       1632 
1620 
     | 
    
         | 
| 
       1633 
1621 
     | 
    
         
             
                    it "creates a single artwork object" do
         
     | 
| 
       1634 
     | 
    
         
            -
                      Artwork.count. 
     | 
| 
      
 1622 
     | 
    
         
            +
                      expect(Artwork.count).to eq(1)
         
     | 
| 
       1635 
1623 
     | 
    
         
             
                    end
         
     | 
| 
       1636 
1624 
     | 
    
         
             
                  end
         
     | 
| 
       1637 
1625 
     | 
    
         | 
| 
         @@ -1650,21 +1638,21 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1650 
1638 
     | 
    
         
             
                    end
         
     | 
| 
       1651 
1639 
     | 
    
         | 
| 
       1652 
1640 
     | 
    
         
             
                    it "sets the front side of the relation" do
         
     | 
| 
       1653 
     | 
    
         
            -
                      tag_one.related. 
     | 
| 
      
 1641 
     | 
    
         
            +
                      expect(tag_one.related).to eq([ tag_two ])
         
     | 
| 
       1654 
1642 
     | 
    
         
             
                    end
         
     | 
| 
       1655 
1643 
     | 
    
         | 
| 
       1656 
1644 
     | 
    
         
             
                    it "sets the inverse side of the relation" do
         
     | 
| 
       1657 
     | 
    
         
            -
                      tag_two.related(true). 
     | 
| 
      
 1645 
     | 
    
         
            +
                      expect(tag_two.related(true)).to eq([ tag_one ])
         
     | 
| 
       1658 
1646 
     | 
    
         
             
                    end
         
     | 
| 
       1659 
1647 
     | 
    
         | 
| 
       1660 
1648 
     | 
    
         
             
                    context "when reloading" do
         
     | 
| 
       1661 
1649 
     | 
    
         | 
| 
       1662 
1650 
     | 
    
         
             
                      it "sets the front side of the relation" do
         
     | 
| 
       1663 
     | 
    
         
            -
                        tag_one.reload.related. 
     | 
| 
      
 1651 
     | 
    
         
            +
                        expect(tag_one.reload.related).to eq([ tag_two ])
         
     | 
| 
       1664 
1652 
     | 
    
         
             
                      end
         
     | 
| 
       1665 
1653 
     | 
    
         | 
| 
       1666 
1654 
     | 
    
         
             
                      it "sets the inverse side of the relation" do
         
     | 
| 
       1667 
     | 
    
         
            -
                        tag_two.reload.related. 
     | 
| 
      
 1655 
     | 
    
         
            +
                        expect(tag_two.reload.related).to eq([ tag_one ])
         
     | 
| 
       1668 
1656 
     | 
    
         
             
                      end
         
     | 
| 
       1669 
1657 
     | 
    
         
             
                    end
         
     | 
| 
       1670 
1658 
     | 
    
         | 
| 
         @@ -1679,11 +1667,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1679 
1667 
     | 
    
         
             
                      end
         
     | 
| 
       1680 
1668 
     | 
    
         | 
| 
       1681 
1669 
     | 
    
         
             
                      it "sets the front side of the relation" do
         
     | 
| 
       1682 
     | 
    
         
            -
                        loaded_tag_one.related. 
     | 
| 
      
 1670 
     | 
    
         
            +
                        expect(loaded_tag_one.related).to eq([ tag_two ])
         
     | 
| 
       1683 
1671 
     | 
    
         
             
                      end
         
     | 
| 
       1684 
1672 
     | 
    
         | 
| 
       1685 
1673 
     | 
    
         
             
                      it "sets the inverse side of the relation" do
         
     | 
| 
       1686 
     | 
    
         
            -
                        loaded_tag_two.related. 
     | 
| 
      
 1674 
     | 
    
         
            +
                        expect(loaded_tag_two.related).to eq([ tag_one ])
         
     | 
| 
       1687 
1675 
     | 
    
         
             
                      end
         
     | 
| 
       1688 
1676 
     | 
    
         
             
                    end
         
     | 
| 
       1689 
1677 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1710,7 +1698,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1710 
1698 
     | 
    
         | 
| 
       1711 
1699 
     | 
    
         
             
                    it "returns zero" do
         
     | 
| 
       1712 
1700 
     | 
    
         
             
                      sandwich.destroy
         
     | 
| 
       1713 
     | 
    
         
            -
                      sandwich.meats.count. 
     | 
| 
      
 1701 
     | 
    
         
            +
                      expect(sandwich.meats.count).to eq(0)
         
     | 
| 
       1714 
1702 
     | 
    
         
             
                    end
         
     | 
| 
       1715 
1703 
     | 
    
         
             
                  end
         
     | 
| 
       1716 
1704 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1722,7 +1710,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1722 
1710 
     | 
    
         
             
                  end
         
     | 
| 
       1723 
1711 
     | 
    
         | 
| 
       1724 
1712 
     | 
    
         
             
                  it "returns the number of persisted documents" do
         
     | 
| 
       1725 
     | 
    
         
            -
                    person.preferences.count. 
     | 
| 
      
 1713 
     | 
    
         
            +
                    expect(person.preferences.count).to eq(1)
         
     | 
| 
       1726 
1714 
     | 
    
         
             
                  end
         
     | 
| 
       1727 
1715 
     | 
    
         
             
                end
         
     | 
| 
       1728 
1716 
     | 
    
         | 
| 
         @@ -1738,7 +1726,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1738 
1726 
     | 
    
         
             
                  end
         
     | 
| 
       1739 
1727 
     | 
    
         | 
| 
       1740 
1728 
     | 
    
         
             
                  it "returns the number of persisted documents" do
         
     | 
| 
       1741 
     | 
    
         
            -
                    person.preferences.count. 
     | 
| 
      
 1729 
     | 
    
         
            +
                    expect(person.preferences.count).to eq(2)
         
     | 
| 
       1742 
1730 
     | 
    
         
             
                  end
         
     | 
| 
       1743 
1731 
     | 
    
         
             
                end
         
     | 
| 
       1744 
1732 
     | 
    
         | 
| 
         @@ -1749,7 +1737,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1749 
1737 
     | 
    
         
             
                  end
         
     | 
| 
       1750 
1738 
     | 
    
         | 
| 
       1751 
1739 
     | 
    
         
             
                  it "returns 0" do
         
     | 
| 
       1752 
     | 
    
         
            -
                    person.preferences.count. 
     | 
| 
      
 1740 
     | 
    
         
            +
                    expect(person.preferences.count).to eq(0)
         
     | 
| 
       1753 
1741 
     | 
    
         
             
                  end
         
     | 
| 
       1754 
1742 
     | 
    
         
             
                end
         
     | 
| 
       1755 
1743 
     | 
    
         | 
| 
         @@ -1762,7 +1750,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1762 
1750 
     | 
    
         
             
                    end
         
     | 
| 
       1763 
1751 
     | 
    
         | 
| 
       1764 
1752 
     | 
    
         
             
                    it "returns the count from the db" do
         
     | 
| 
       1765 
     | 
    
         
            -
                      person.reload.preferences.count. 
     | 
| 
      
 1753 
     | 
    
         
            +
                      expect(person.reload.preferences.count).to eq(1)
         
     | 
| 
       1766 
1754 
     | 
    
         
             
                    end
         
     | 
| 
       1767 
1755 
     | 
    
         
             
                  end
         
     | 
| 
       1768 
1756 
     | 
    
         | 
| 
         @@ -1773,7 +1761,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1773 
1761 
     | 
    
         
             
                    end
         
     | 
| 
       1774 
1762 
     | 
    
         | 
| 
       1775 
1763 
     | 
    
         
             
                    it "returns the count from the db" do
         
     | 
| 
       1776 
     | 
    
         
            -
                      person.preferences.count. 
     | 
| 
      
 1764 
     | 
    
         
            +
                      expect(person.preferences.count).to eq(0)
         
     | 
| 
       1777 
1765 
     | 
    
         
             
                    end
         
     | 
| 
       1778 
1766 
     | 
    
         
             
                  end
         
     | 
| 
       1779 
1767 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1787,7 +1775,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1787 
1775 
     | 
    
         
             
                    end
         
     | 
| 
       1788 
1776 
     | 
    
         | 
| 
       1789 
1777 
     | 
    
         
             
                    it "returns the number of persisted documents" do
         
     | 
| 
       1790 
     | 
    
         
            -
                      person.houses.count. 
     | 
| 
      
 1778 
     | 
    
         
            +
                      expect(person.houses.count).to eq(1)
         
     | 
| 
       1791 
1779 
     | 
    
         
             
                    end
         
     | 
| 
       1792 
1780 
     | 
    
         
             
                  end
         
     | 
| 
       1793 
1781 
     | 
    
         | 
| 
         @@ -1798,7 +1786,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1798 
1786 
     | 
    
         
             
                    end
         
     | 
| 
       1799 
1787 
     | 
    
         | 
| 
       1800 
1788 
     | 
    
         
             
                    it "returns 0" do
         
     | 
| 
       1801 
     | 
    
         
            -
                      person.preferences.count. 
     | 
| 
      
 1789 
     | 
    
         
            +
                      expect(person.preferences.count).to eq(0)
         
     | 
| 
       1802 
1790 
     | 
    
         
             
                    end
         
     | 
| 
       1803 
1791 
     | 
    
         
             
                  end
         
     | 
| 
       1804 
1792 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1808,28 +1796,6 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1808 
1796 
     | 
    
         | 
| 
       1809 
1797 
     | 
    
         
             
                describe "##{method}" do
         
     | 
| 
       1810 
1798 
     | 
    
         | 
| 
       1811 
     | 
    
         
            -
                  context "when providing scoped mass assignment" do
         
     | 
| 
       1812 
     | 
    
         
            -
             
     | 
| 
       1813 
     | 
    
         
            -
                    let(:person) do
         
     | 
| 
       1814 
     | 
    
         
            -
                      Person.create
         
     | 
| 
       1815 
     | 
    
         
            -
                    end
         
     | 
| 
       1816 
     | 
    
         
            -
             
     | 
| 
       1817 
     | 
    
         
            -
                    let(:house) do
         
     | 
| 
       1818 
     | 
    
         
            -
                      person.houses.send(
         
     | 
| 
       1819 
     | 
    
         
            -
                        method,
         
     | 
| 
       1820 
     | 
    
         
            -
                        { name: "Dream", model: "Home" }, as: :admin
         
     | 
| 
       1821 
     | 
    
         
            -
                      )
         
     | 
| 
       1822 
     | 
    
         
            -
                    end
         
     | 
| 
       1823 
     | 
    
         
            -
             
     | 
| 
       1824 
     | 
    
         
            -
                    it "sets the attributes for the provided role" do
         
     | 
| 
       1825 
     | 
    
         
            -
                      house.name.should eq("Dream")
         
     | 
| 
       1826 
     | 
    
         
            -
                    end
         
     | 
| 
       1827 
     | 
    
         
            -
             
     | 
| 
       1828 
     | 
    
         
            -
                    it "does not set the attributes for other roles" do
         
     | 
| 
       1829 
     | 
    
         
            -
                      house.model.should be_nil
         
     | 
| 
       1830 
     | 
    
         
            -
                    end
         
     | 
| 
       1831 
     | 
    
         
            -
                  end
         
     | 
| 
       1832 
     | 
    
         
            -
             
     | 
| 
       1833 
1799 
     | 
    
         
             
                  context "when the relation is not polymorphic" do
         
     | 
| 
       1834 
1800 
     | 
    
         | 
| 
       1835 
1801 
     | 
    
         
             
                    context "when using string keys" do
         
     | 
| 
         @@ -1843,7 +1809,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1843 
1809 
     | 
    
         
             
                      end
         
     | 
| 
       1844 
1810 
     | 
    
         | 
| 
       1845 
1811 
     | 
    
         
             
                      it "does not convert the string key to an object id" do
         
     | 
| 
       1846 
     | 
    
         
            -
                        agent.account_ids. 
     | 
| 
      
 1812 
     | 
    
         
            +
                        expect(agent.account_ids).to eq([ "testing-again" ])
         
     | 
| 
       1847 
1813 
     | 
    
         
             
                      end
         
     | 
| 
       1848 
1814 
     | 
    
         
             
                    end
         
     | 
| 
       1849 
1815 
     | 
    
         | 
| 
         @@ -1871,39 +1837,39 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1871 
1837 
     | 
    
         
             
                      end
         
     | 
| 
       1872 
1838 
     | 
    
         | 
| 
       1873 
1839 
     | 
    
         
             
                      it "sets the foreign key on the relation" do
         
     | 
| 
       1874 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 1840 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       1875 
1841 
     | 
    
         
             
                      end
         
     | 
| 
       1876 
1842 
     | 
    
         | 
| 
       1877 
1843 
     | 
    
         
             
                      it "sets the foreign key on the inverse relation" do
         
     | 
| 
       1878 
     | 
    
         
            -
                        preference.person_ids. 
     | 
| 
      
 1844 
     | 
    
         
            +
                        expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       1879 
1845 
     | 
    
         
             
                      end
         
     | 
| 
       1880 
1846 
     | 
    
         | 
| 
       1881 
1847 
     | 
    
         
             
                      it "adds the document" do
         
     | 
| 
       1882 
     | 
    
         
            -
                        person.preferences. 
     | 
| 
      
 1848 
     | 
    
         
            +
                        expect(person.preferences).to eq([ preference ])
         
     | 
| 
       1883 
1849 
     | 
    
         
             
                      end
         
     | 
| 
       1884 
1850 
     | 
    
         | 
| 
       1885 
1851 
     | 
    
         
             
                      it "sets the base on the inverse relation" do
         
     | 
| 
       1886 
     | 
    
         
            -
                        preference.people. 
     | 
| 
      
 1852 
     | 
    
         
            +
                        expect(preference.people).to eq([ person ])
         
     | 
| 
       1887 
1853 
     | 
    
         
             
                      end
         
     | 
| 
       1888 
1854 
     | 
    
         | 
| 
       1889 
1855 
     | 
    
         
             
                      it "sets the attributes" do
         
     | 
| 
       1890 
     | 
    
         
            -
                        preference.name. 
     | 
| 
      
 1856 
     | 
    
         
            +
                        expect(preference.name).to eq("Testing")
         
     | 
| 
       1891 
1857 
     | 
    
         
             
                      end
         
     | 
| 
       1892 
1858 
     | 
    
         | 
| 
       1893 
1859 
     | 
    
         
             
                      it "saves the target" do
         
     | 
| 
       1894 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 1860 
     | 
    
         
            +
                        expect(preference).to be_persisted
         
     | 
| 
       1895 
1861 
     | 
    
         
             
                      end
         
     | 
| 
       1896 
1862 
     | 
    
         | 
| 
       1897 
1863 
     | 
    
         
             
                      it "adds the document to the target" do
         
     | 
| 
       1898 
     | 
    
         
            -
                        person.preferences.count. 
     | 
| 
      
 1864 
     | 
    
         
            +
                        expect(person.preferences.count).to eq(1)
         
     | 
| 
       1899 
1865 
     | 
    
         
             
                      end
         
     | 
| 
       1900 
1866 
     | 
    
         | 
| 
       1901 
1867 
     | 
    
         
             
                      it "does not duplicate documents" do
         
     | 
| 
       1902 
     | 
    
         
            -
                        person.reload.preferences.count. 
     | 
| 
      
 1868 
     | 
    
         
            +
                        expect(person.reload.preferences.count).to eq(1)
         
     | 
| 
       1903 
1869 
     | 
    
         
             
                      end
         
     | 
| 
       1904 
1870 
     | 
    
         | 
| 
       1905 
1871 
     | 
    
         
             
                      it "does not duplicate ids" do
         
     | 
| 
       1906 
     | 
    
         
            -
                        person.reload.preference_ids.count. 
     | 
| 
      
 1872 
     | 
    
         
            +
                        expect(person.reload.preference_ids.count).to eq(1)
         
     | 
| 
       1907 
1873 
     | 
    
         
             
                      end
         
     | 
| 
       1908 
1874 
     | 
    
         
             
                    end
         
     | 
| 
       1909 
1875 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1954,23 +1920,23 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1954 
1920 
     | 
    
         
             
                  end
         
     | 
| 
       1955 
1921 
     | 
    
         | 
| 
       1956 
1922 
     | 
    
         
             
                  it "removes the document from the relation" do
         
     | 
| 
       1957 
     | 
    
         
            -
                    person.preferences. 
     | 
| 
      
 1923 
     | 
    
         
            +
                    expect(person.preferences).to eq([ preference_two ])
         
     | 
| 
       1958 
1924 
     | 
    
         
             
                  end
         
     | 
| 
       1959 
1925 
     | 
    
         | 
| 
       1960 
1926 
     | 
    
         
             
                  it "returns the document" do
         
     | 
| 
       1961 
     | 
    
         
            -
                    deleted. 
     | 
| 
      
 1927 
     | 
    
         
            +
                    expect(deleted).to eq(preference_one)
         
     | 
| 
       1962 
1928 
     | 
    
         
             
                  end
         
     | 
| 
       1963 
1929 
     | 
    
         | 
| 
       1964 
1930 
     | 
    
         
             
                  it "removes the document key from the foreign key" do
         
     | 
| 
       1965 
     | 
    
         
            -
                    person.preference_ids. 
     | 
| 
      
 1931 
     | 
    
         
            +
                    expect(person.preference_ids).to eq([ preference_two.id ])
         
     | 
| 
       1966 
1932 
     | 
    
         
             
                  end
         
     | 
| 
       1967 
1933 
     | 
    
         | 
| 
       1968 
1934 
     | 
    
         
             
                  it "removes the inverse reference" do
         
     | 
| 
       1969 
     | 
    
         
            -
                    deleted.reload.people. 
     | 
| 
      
 1935 
     | 
    
         
            +
                    expect(deleted.reload.people).to be_empty
         
     | 
| 
       1970 
1936 
     | 
    
         
             
                  end
         
     | 
| 
       1971 
1937 
     | 
    
         | 
| 
       1972 
1938 
     | 
    
         
             
                  it "removes the base id from the inverse keys" do
         
     | 
| 
       1973 
     | 
    
         
            -
                    deleted.reload.person_ids. 
     | 
| 
      
 1939 
     | 
    
         
            +
                    expect(deleted.reload.person_ids).to be_empty
         
     | 
| 
       1974 
1940 
     | 
    
         
             
                  end
         
     | 
| 
       1975 
1941 
     | 
    
         | 
| 
       1976 
1942 
     | 
    
         
             
                  context "and person and preferences are reloaded" do
         
     | 
| 
         @@ -1982,11 +1948,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1982 
1948 
     | 
    
         
             
                    end
         
     | 
| 
       1983 
1949 
     | 
    
         | 
| 
       1984 
1950 
     | 
    
         
             
                    it "nullifies the deleted preference" do
         
     | 
| 
       1985 
     | 
    
         
            -
                      person.preferences. 
     | 
| 
      
 1951 
     | 
    
         
            +
                      expect(person.preferences).to eq([ preference_two ])
         
     | 
| 
       1986 
1952 
     | 
    
         
             
                    end
         
     | 
| 
       1987 
1953 
     | 
    
         | 
| 
       1988 
1954 
     | 
    
         
             
                    it "retains the ids for one preference" do
         
     | 
| 
       1989 
     | 
    
         
            -
                      person.preference_ids. 
     | 
| 
      
 1955 
     | 
    
         
            +
                      expect(person.preference_ids).to eq([ preference_two.id ])
         
     | 
| 
       1990 
1956 
     | 
    
         
             
                    end
         
     | 
| 
       1991 
1957 
     | 
    
         
             
                  end
         
     | 
| 
       1992 
1958 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1998,15 +1964,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       1998 
1964 
     | 
    
         
             
                  end
         
     | 
| 
       1999 
1965 
     | 
    
         | 
| 
       2000 
1966 
     | 
    
         
             
                  it "returns nil" do
         
     | 
| 
       2001 
     | 
    
         
            -
                    deleted. 
     | 
| 
      
 1967 
     | 
    
         
            +
                    expect(deleted).to be_nil
         
     | 
| 
       2002 
1968 
     | 
    
         
             
                  end
         
     | 
| 
       2003 
1969 
     | 
    
         | 
| 
       2004 
1970 
     | 
    
         
             
                  it "does not modify the relation" do
         
     | 
| 
       2005 
     | 
    
         
            -
                    person.preferences. 
     | 
| 
      
 1971 
     | 
    
         
            +
                    expect(person.preferences).to eq([ preference_one, preference_two ])
         
     | 
| 
       2006 
1972 
     | 
    
         
             
                  end
         
     | 
| 
       2007 
1973 
     | 
    
         | 
| 
       2008 
1974 
     | 
    
         
             
                  it "does not modify the keys" do
         
     | 
| 
       2009 
     | 
    
         
            -
                    person.preference_ids. 
     | 
| 
      
 1975 
     | 
    
         
            +
                    expect(person.preference_ids).to eq([ preference_one.id, preference_two.id ])
         
     | 
| 
       2010 
1976 
     | 
    
         
             
                  end
         
     | 
| 
       2011 
1977 
     | 
    
         
             
                end
         
     | 
| 
       2012 
1978 
     | 
    
         | 
| 
         @@ -2023,7 +1989,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2023 
1989 
     | 
    
         
             
                    end
         
     | 
| 
       2024 
1990 
     | 
    
         | 
| 
       2025 
1991 
     | 
    
         
             
                    it "deletes the document" do
         
     | 
| 
       2026 
     | 
    
         
            -
                      event.delete. 
     | 
| 
      
 1992 
     | 
    
         
            +
                      expect(event.delete).to be true
         
     | 
| 
       2027 
1993 
     | 
    
         
             
                    end
         
     | 
| 
       2028 
1994 
     | 
    
         
             
                  end
         
     | 
| 
       2029 
1995 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2049,19 +2015,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2049 
2015 
     | 
    
         
             
                    end
         
     | 
| 
       2050 
2016 
     | 
    
         | 
| 
       2051 
2017 
     | 
    
         
             
                    it "deletes the document from the relation" do
         
     | 
| 
       2052 
     | 
    
         
            -
                      tag_one.related. 
     | 
| 
      
 2018 
     | 
    
         
            +
                      expect(tag_one.related).to be_empty
         
     | 
| 
       2053 
2019 
     | 
    
         
             
                    end
         
     | 
| 
       2054 
2020 
     | 
    
         | 
| 
       2055 
2021 
     | 
    
         
             
                    it "deletes the foreign key from the relation" do
         
     | 
| 
       2056 
     | 
    
         
            -
                      tag_one.related_ids. 
     | 
| 
      
 2022 
     | 
    
         
            +
                      expect(tag_one.related_ids).to be_empty
         
     | 
| 
       2057 
2023 
     | 
    
         
             
                    end
         
     | 
| 
       2058 
2024 
     | 
    
         | 
| 
       2059 
2025 
     | 
    
         
             
                    it "removes the reference from the inverse" do
         
     | 
| 
       2060 
     | 
    
         
            -
                      deleted.related. 
     | 
| 
      
 2026 
     | 
    
         
            +
                      expect(deleted.related).to be_empty
         
     | 
| 
       2061 
2027 
     | 
    
         
             
                    end
         
     | 
| 
       2062 
2028 
     | 
    
         | 
| 
       2063 
2029 
     | 
    
         
             
                    it "removes the foreign keys from the inverse" do
         
     | 
| 
       2064 
     | 
    
         
            -
                      deleted.related_ids. 
     | 
| 
      
 2030 
     | 
    
         
            +
                      expect(deleted.related_ids).to be_empty
         
     | 
| 
       2065 
2031 
     | 
    
         
             
                    end
         
     | 
| 
       2066 
2032 
     | 
    
         
             
                  end
         
     | 
| 
       2067 
2033 
     | 
    
         | 
| 
         @@ -2078,19 +2044,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2078 
2044 
     | 
    
         
             
                      end
         
     | 
| 
       2079 
2045 
     | 
    
         | 
| 
       2080 
2046 
     | 
    
         
             
                      it "deletes the document from the relation" do
         
     | 
| 
       2081 
     | 
    
         
            -
                        reloaded.related. 
     | 
| 
      
 2047 
     | 
    
         
            +
                        expect(reloaded.related).to be_empty
         
     | 
| 
       2082 
2048 
     | 
    
         
             
                      end
         
     | 
| 
       2083 
2049 
     | 
    
         | 
| 
       2084 
2050 
     | 
    
         
             
                      it "deletes the foreign key from the relation" do
         
     | 
| 
       2085 
     | 
    
         
            -
                        reloaded.related_ids. 
     | 
| 
      
 2051 
     | 
    
         
            +
                        expect(reloaded.related_ids).to be_empty
         
     | 
| 
       2086 
2052 
     | 
    
         
             
                      end
         
     | 
| 
       2087 
2053 
     | 
    
         | 
| 
       2088 
2054 
     | 
    
         
             
                      it "removes the reference from the inverse" do
         
     | 
| 
       2089 
     | 
    
         
            -
                        deleted.related. 
     | 
| 
      
 2055 
     | 
    
         
            +
                        expect(deleted.related).to be_empty
         
     | 
| 
       2090 
2056 
     | 
    
         
             
                      end
         
     | 
| 
       2091 
2057 
     | 
    
         | 
| 
       2092 
2058 
     | 
    
         
             
                      it "removes the foreign keys from the inverse" do
         
     | 
| 
       2093 
     | 
    
         
            -
                        deleted.related_ids. 
     | 
| 
      
 2059 
     | 
    
         
            +
                        expect(deleted.related_ids).to be_empty
         
     | 
| 
       2094 
2060 
     | 
    
         
             
                      end
         
     | 
| 
       2095 
2061 
     | 
    
         
             
                    end
         
     | 
| 
       2096 
2062 
     | 
    
         | 
| 
         @@ -2105,15 +2071,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2105 
2071 
     | 
    
         
             
                      end
         
     | 
| 
       2106 
2072 
     | 
    
         | 
| 
       2107 
2073 
     | 
    
         
             
                      it "deletes the document from the relation" do
         
     | 
| 
       2108 
     | 
    
         
            -
                        reloaded.related. 
     | 
| 
      
 2074 
     | 
    
         
            +
                        expect(reloaded.related).to be_empty
         
     | 
| 
       2109 
2075 
     | 
    
         
             
                      end
         
     | 
| 
       2110 
2076 
     | 
    
         | 
| 
       2111 
2077 
     | 
    
         
             
                      it "deletes the foreign key from the relation" do
         
     | 
| 
       2112 
     | 
    
         
            -
                        reloaded.related_ids. 
     | 
| 
      
 2078 
     | 
    
         
            +
                        expect(reloaded.related_ids).to be_empty
         
     | 
| 
       2113 
2079 
     | 
    
         
             
                      end
         
     | 
| 
       2114 
2080 
     | 
    
         | 
| 
       2115 
2081 
     | 
    
         
             
                      it "removes the foreign keys from the inverse" do
         
     | 
| 
       2116 
     | 
    
         
            -
                        deleted.related_ids. 
     | 
| 
      
 2082 
     | 
    
         
            +
                        expect(deleted.related_ids).to be_empty
         
     | 
| 
       2117 
2083 
     | 
    
         
             
                      end
         
     | 
| 
       2118 
2084 
     | 
    
         
             
                    end
         
     | 
| 
       2119 
2085 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -2142,25 +2108,25 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2142 
2108 
     | 
    
         
             
                      end
         
     | 
| 
       2143 
2109 
     | 
    
         | 
| 
       2144 
2110 
     | 
    
         
             
                      it "executes the callback" do
         
     | 
| 
       2145 
     | 
    
         
            -
                        post.before_remove_called. 
     | 
| 
      
 2111 
     | 
    
         
            +
                        expect(post.before_remove_called).to be true
         
     | 
| 
       2146 
2112 
     | 
    
         
             
                      end
         
     | 
| 
       2147 
2113 
     | 
    
         | 
| 
       2148 
2114 
     | 
    
         
             
                      it "removes the document from the relation" do
         
     | 
| 
       2149 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 2115 
     | 
    
         
            +
                        expect(post.tags).to be_empty
         
     | 
| 
       2150 
2116 
     | 
    
         
             
                      end
         
     | 
| 
       2151 
2117 
     | 
    
         
             
                    end
         
     | 
| 
       2152 
2118 
     | 
    
         | 
| 
       2153 
2119 
     | 
    
         
             
                    context "when errors are raised" do
         
     | 
| 
       2154 
2120 
     | 
    
         | 
| 
       2155 
2121 
     | 
    
         
             
                      before do
         
     | 
| 
       2156 
     | 
    
         
            -
                        post. 
     | 
| 
      
 2122 
     | 
    
         
            +
                        expect(post).to receive(:before_remove_tag).and_raise
         
     | 
| 
       2157 
2123 
     | 
    
         
             
                      end
         
     | 
| 
       2158 
2124 
     | 
    
         | 
| 
       2159 
2125 
     | 
    
         
             
                      it "does not remove the document from the relation" do
         
     | 
| 
       2160 
2126 
     | 
    
         
             
                        expect {
         
     | 
| 
       2161 
2127 
     | 
    
         
             
                          post.tags.delete tag
         
     | 
| 
       2162 
2128 
     | 
    
         
             
                        }.to raise_error
         
     | 
| 
       2163 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 2129 
     | 
    
         
            +
                        expect(post.tags).to eq([ tag ])
         
     | 
| 
       2164 
2130 
     | 
    
         
             
                      end
         
     | 
| 
       2165 
2131 
     | 
    
         
             
                    end
         
     | 
| 
       2166 
2132 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -2174,25 +2140,25 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2174 
2140 
     | 
    
         
             
                      end
         
     | 
| 
       2175 
2141 
     | 
    
         | 
| 
       2176 
2142 
     | 
    
         
             
                      it "executes the callback" do
         
     | 
| 
       2177 
     | 
    
         
            -
                        post.after_remove_called. 
     | 
| 
      
 2143 
     | 
    
         
            +
                        expect(post.after_remove_called).to be true
         
     | 
| 
       2178 
2144 
     | 
    
         
             
                      end
         
     | 
| 
       2179 
2145 
     | 
    
         | 
| 
       2180 
2146 
     | 
    
         
             
                      it "removes the document from the relation" do
         
     | 
| 
       2181 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 2147 
     | 
    
         
            +
                        expect(post.tags).to be_empty
         
     | 
| 
       2182 
2148 
     | 
    
         
             
                      end
         
     | 
| 
       2183 
2149 
     | 
    
         
             
                    end
         
     | 
| 
       2184 
2150 
     | 
    
         | 
| 
       2185 
2151 
     | 
    
         
             
                    context "when errors are raised" do
         
     | 
| 
       2186 
2152 
     | 
    
         | 
| 
       2187 
2153 
     | 
    
         
             
                      before do
         
     | 
| 
       2188 
     | 
    
         
            -
                        post. 
     | 
| 
      
 2154 
     | 
    
         
            +
                        expect(post).to receive(:after_remove_tag).and_raise
         
     | 
| 
       2189 
2155 
     | 
    
         
             
                      end
         
     | 
| 
       2190 
2156 
     | 
    
         | 
| 
       2191 
2157 
     | 
    
         
             
                      it "removes the document from the relation" do
         
     | 
| 
       2192 
2158 
     | 
    
         
             
                        expect {
         
     | 
| 
       2193 
2159 
     | 
    
         
             
                          post.tags.delete(tag)
         
     | 
| 
       2194 
2160 
     | 
    
         
             
                        }.to raise_error
         
     | 
| 
       2195 
     | 
    
         
            -
                        post.tags. 
     | 
| 
      
 2161 
     | 
    
         
            +
                        expect(post.tags).to be_empty
         
     | 
| 
       2196 
2162 
     | 
    
         
             
                      end
         
     | 
| 
       2197 
2163 
     | 
    
         
             
                    end
         
     | 
| 
       2198 
2164 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -2227,19 +2193,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2227 
2193 
     | 
    
         
             
                      end
         
     | 
| 
       2228 
2194 
     | 
    
         | 
| 
       2229 
2195 
     | 
    
         
             
                      it "removes the correct preferences" do
         
     | 
| 
       2230 
     | 
    
         
            -
                        person.preferences.count. 
     | 
| 
      
 2196 
     | 
    
         
            +
                        expect(person.preferences.count).to eq(1)
         
     | 
| 
       2231 
2197 
     | 
    
         
             
                      end
         
     | 
| 
       2232 
2198 
     | 
    
         | 
| 
       2233 
2199 
     | 
    
         
             
                      it "deletes the documents from the database" do
         
     | 
| 
       2234 
     | 
    
         
            -
                        Preference.where(name: "Testing").count. 
     | 
| 
      
 2200 
     | 
    
         
            +
                        expect(Preference.where(name: "Testing").count).to eq(0)
         
     | 
| 
       2235 
2201 
     | 
    
         
             
                      end
         
     | 
| 
       2236 
2202 
     | 
    
         | 
| 
       2237 
2203 
     | 
    
         
             
                      it "returns the number of documents deleted" do
         
     | 
| 
       2238 
     | 
    
         
            -
                        deleted. 
     | 
| 
      
 2204 
     | 
    
         
            +
                        expect(deleted).to eq(1)
         
     | 
| 
       2239 
2205 
     | 
    
         
             
                      end
         
     | 
| 
       2240 
2206 
     | 
    
         | 
| 
       2241 
2207 
     | 
    
         
             
                      it "removes the ids from the foreign key" do
         
     | 
| 
       2242 
     | 
    
         
            -
                        person.preference_ids. 
     | 
| 
      
 2208 
     | 
    
         
            +
                        expect(person.preference_ids).to eq([ preference_two.id ])
         
     | 
| 
       2243 
2209 
     | 
    
         
             
                      end
         
     | 
| 
       2244 
2210 
     | 
    
         
             
                    end
         
     | 
| 
       2245 
2211 
     | 
    
         | 
| 
         @@ -2257,67 +2223,25 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2257 
2223 
     | 
    
         
             
                      end
         
     | 
| 
       2258 
2224 
     | 
    
         | 
| 
       2259 
2225 
     | 
    
         
             
                      it "removes the correct preferences" do
         
     | 
| 
       2260 
     | 
    
         
            -
                        person.preferences.count. 
     | 
| 
      
 2226 
     | 
    
         
            +
                        expect(person.preferences.count).to eq(0)
         
     | 
| 
       2261 
2227 
     | 
    
         
             
                      end
         
     | 
| 
       2262 
2228 
     | 
    
         | 
| 
       2263 
2229 
     | 
    
         
             
                      it "deletes the documents from the database" do
         
     | 
| 
       2264 
     | 
    
         
            -
                        Preference.count. 
     | 
| 
      
 2230 
     | 
    
         
            +
                        expect(Preference.count).to eq(0)
         
     | 
| 
       2265 
2231 
     | 
    
         
             
                      end
         
     | 
| 
       2266 
2232 
     | 
    
         | 
| 
       2267 
2233 
     | 
    
         
             
                      it "returns the number of documents deleted" do
         
     | 
| 
       2268 
     | 
    
         
            -
                        deleted. 
     | 
| 
      
 2234 
     | 
    
         
            +
                        expect(deleted).to eq(2)
         
     | 
| 
       2269 
2235 
     | 
    
         
             
                      end
         
     | 
| 
       2270 
2236 
     | 
    
         
             
                    end
         
     | 
| 
       2271 
2237 
     | 
    
         
             
                  end
         
     | 
| 
       2272 
2238 
     | 
    
         
             
                end
         
     | 
| 
       2273 
2239 
     | 
    
         
             
              end
         
     | 
| 
       2274 
2240 
     | 
    
         | 
| 
       2275 
     | 
    
         
            -
              describe ".eager_load" do
         
     | 
| 
       2276 
     | 
    
         
            -
             
     | 
| 
       2277 
     | 
    
         
            -
                before do
         
     | 
| 
       2278 
     | 
    
         
            -
                  Mongoid.identity_map_enabled = true
         
     | 
| 
       2279 
     | 
    
         
            -
                end
         
     | 
| 
       2280 
     | 
    
         
            -
             
     | 
| 
       2281 
     | 
    
         
            -
                after do
         
     | 
| 
       2282 
     | 
    
         
            -
                  Mongoid.identity_map_enabled = false
         
     | 
| 
       2283 
     | 
    
         
            -
                end
         
     | 
| 
       2284 
     | 
    
         
            -
             
     | 
| 
       2285 
     | 
    
         
            -
                context "when the relation is not polymorphic" do
         
     | 
| 
       2286 
     | 
    
         
            -
             
     | 
| 
       2287 
     | 
    
         
            -
                  let!(:person) do
         
     | 
| 
       2288 
     | 
    
         
            -
                    Person.create
         
     | 
| 
       2289 
     | 
    
         
            -
                  end
         
     | 
| 
       2290 
     | 
    
         
            -
             
     | 
| 
       2291 
     | 
    
         
            -
                  let!(:preference) do
         
     | 
| 
       2292 
     | 
    
         
            -
                    person.preferences.create(name: "testing")
         
     | 
| 
       2293 
     | 
    
         
            -
                  end
         
     | 
| 
       2294 
     | 
    
         
            -
             
     | 
| 
       2295 
     | 
    
         
            -
                  let(:metadata) do
         
     | 
| 
       2296 
     | 
    
         
            -
                    Person.relations["preferences"]
         
     | 
| 
       2297 
     | 
    
         
            -
                  end
         
     | 
| 
       2298 
     | 
    
         
            -
             
     | 
| 
       2299 
     | 
    
         
            -
                  let(:ids) do
         
     | 
| 
       2300 
     | 
    
         
            -
                    [ preference.id ]
         
     | 
| 
       2301 
     | 
    
         
            -
                  end
         
     | 
| 
       2302 
     | 
    
         
            -
             
     | 
| 
       2303 
     | 
    
         
            -
                  let!(:eager) do
         
     | 
| 
       2304 
     | 
    
         
            -
                    described_class.eager_load(metadata, ids)
         
     | 
| 
       2305 
     | 
    
         
            -
                  end
         
     | 
| 
       2306 
     | 
    
         
            -
             
     | 
| 
       2307 
     | 
    
         
            -
                  let(:map) do
         
     | 
| 
       2308 
     | 
    
         
            -
                    Mongoid::IdentityMap.get(Preference, ids)
         
     | 
| 
       2309 
     | 
    
         
            -
                  end
         
     | 
| 
       2310 
     | 
    
         
            -
             
     | 
| 
       2311 
     | 
    
         
            -
                  it "puts the documents in the identity map" do
         
     | 
| 
       2312 
     | 
    
         
            -
                    map.should eq([ preference ])
         
     | 
| 
       2313 
     | 
    
         
            -
                  end
         
     | 
| 
       2314 
     | 
    
         
            -
                end
         
     | 
| 
       2315 
     | 
    
         
            -
              end
         
     | 
| 
       2316 
     | 
    
         
            -
             
     | 
| 
       2317 
2241 
     | 
    
         
             
              describe ".embedded?" do
         
     | 
| 
       2318 
2242 
     | 
    
         | 
| 
       2319 
2243 
     | 
    
         
             
                it "returns false" do
         
     | 
| 
       2320 
     | 
    
         
            -
                  described_class. 
     | 
| 
      
 2244 
     | 
    
         
            +
                  expect(described_class).to_not be_embedded
         
     | 
| 
       2321 
2245 
     | 
    
         
             
                end
         
     | 
| 
       2322 
2246 
     | 
    
         
             
              end
         
     | 
| 
       2323 
2247 
     | 
    
         | 
| 
         @@ -2334,7 +2258,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2334 
2258 
     | 
    
         
             
                  end
         
     | 
| 
       2335 
2259 
     | 
    
         | 
| 
       2336 
2260 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       2337 
     | 
    
         
            -
                    person.preferences.exists 
     | 
| 
      
 2261 
     | 
    
         
            +
                    expect(person.preferences.exists?).to be true
         
     | 
| 
       2338 
2262 
     | 
    
         
             
                  end
         
     | 
| 
       2339 
2263 
     | 
    
         
             
                end
         
     | 
| 
       2340 
2264 
     | 
    
         | 
| 
         @@ -2345,7 +2269,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2345 
2269 
     | 
    
         
             
                  end
         
     | 
| 
       2346 
2270 
     | 
    
         | 
| 
       2347 
2271 
     | 
    
         
             
                  it "returns false" do
         
     | 
| 
       2348 
     | 
    
         
            -
                    person.preferences.exists 
     | 
| 
      
 2272 
     | 
    
         
            +
                    expect(person.preferences.exists?).to be false
         
     | 
| 
       2349 
2273 
     | 
    
         
             
                  end
         
     | 
| 
       2350 
2274 
     | 
    
         
             
                end
         
     | 
| 
       2351 
2275 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2383,7 +2307,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2383 
2307 
     | 
    
         
             
                      end
         
     | 
| 
       2384 
2308 
     | 
    
         | 
| 
       2385 
2309 
     | 
    
         
             
                      it "returns the matching document" do
         
     | 
| 
       2386 
     | 
    
         
            -
                        preference. 
     | 
| 
      
 2310 
     | 
    
         
            +
                        expect(preference).to eq(preference_one)
         
     | 
| 
       2387 
2311 
     | 
    
         
             
                      end
         
     | 
| 
       2388 
2312 
     | 
    
         
             
                    end
         
     | 
| 
       2389 
2313 
     | 
    
         | 
| 
         @@ -2410,7 +2334,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2410 
2334 
     | 
    
         | 
| 
       2411 
2335 
     | 
    
         
             
                        it "raises an error" do
         
     | 
| 
       2412 
2336 
     | 
    
         
             
                          expect {
         
     | 
| 
       2413 
     | 
    
         
            -
                            person.preferences.find( 
     | 
| 
      
 2337 
     | 
    
         
            +
                            person.preferences.find(BSON::ObjectId.new)
         
     | 
| 
       2414 
2338 
     | 
    
         
             
                          }.to raise_error(Mongoid::Errors::DocumentNotFound)
         
     | 
| 
       2415 
2339 
     | 
    
         
             
                        end
         
     | 
| 
       2416 
2340 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -2418,7 +2342,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2418 
2342 
     | 
    
         
             
                      context "when config set not to raise error" do
         
     | 
| 
       2419 
2343 
     | 
    
         | 
| 
       2420 
2344 
     | 
    
         
             
                        let(:preference) do
         
     | 
| 
       2421 
     | 
    
         
            -
                          person.preferences.find( 
     | 
| 
      
 2345 
     | 
    
         
            +
                          person.preferences.find(BSON::ObjectId.new)
         
     | 
| 
       2422 
2346 
     | 
    
         
             
                        end
         
     | 
| 
       2423 
2347 
     | 
    
         | 
| 
       2424 
2348 
     | 
    
         
             
                        before do
         
     | 
| 
         @@ -2430,7 +2354,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2430 
2354 
     | 
    
         
             
                        end
         
     | 
| 
       2431 
2355 
     | 
    
         | 
| 
       2432 
2356 
     | 
    
         
             
                        it "returns nil" do
         
     | 
| 
       2433 
     | 
    
         
            -
                          preference. 
     | 
| 
      
 2357 
     | 
    
         
            +
                          expect(preference).to be_nil
         
     | 
| 
       2434 
2358 
     | 
    
         
             
                        end
         
     | 
| 
       2435 
2359 
     | 
    
         
             
                      end
         
     | 
| 
       2436 
2360 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -2445,7 +2369,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2445 
2369 
     | 
    
         
             
                      end
         
     | 
| 
       2446 
2370 
     | 
    
         | 
| 
       2447 
2371 
     | 
    
         
             
                      it "returns the matching documents" do
         
     | 
| 
       2448 
     | 
    
         
            -
                        preferences. 
     | 
| 
      
 2372 
     | 
    
         
            +
                        expect(preferences).to eq([ preference_one, preference_two ])
         
     | 
| 
       2449 
2373 
     | 
    
         
             
                      end
         
     | 
| 
       2450 
2374 
     | 
    
         
             
                    end
         
     | 
| 
       2451 
2375 
     | 
    
         | 
| 
         @@ -2474,7 +2398,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2474 
2398 
     | 
    
         | 
| 
       2475 
2399 
     | 
    
         
             
                        it "raises an error" do
         
     | 
| 
       2476 
2400 
     | 
    
         
             
                          expect {
         
     | 
| 
       2477 
     | 
    
         
            -
                            person.preferences.find([  
     | 
| 
      
 2401 
     | 
    
         
            +
                            person.preferences.find([ BSON::ObjectId.new ])
         
     | 
| 
       2478 
2402 
     | 
    
         
             
                          }.to raise_error(Mongoid::Errors::DocumentNotFound)
         
     | 
| 
       2479 
2403 
     | 
    
         
             
                        end
         
     | 
| 
       2480 
2404 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -2482,7 +2406,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2482 
2406 
     | 
    
         
             
                      context "when config set not to raise error" do
         
     | 
| 
       2483 
2407 
     | 
    
         | 
| 
       2484 
2408 
     | 
    
         
             
                        let(:preferences) do
         
     | 
| 
       2485 
     | 
    
         
            -
                          person.preferences.find([  
     | 
| 
      
 2409 
     | 
    
         
            +
                          person.preferences.find([ BSON::ObjectId.new ])
         
     | 
| 
       2486 
2410 
     | 
    
         
             
                        end
         
     | 
| 
       2487 
2411 
     | 
    
         | 
| 
       2488 
2412 
     | 
    
         
             
                        before do
         
     | 
| 
         @@ -2494,7 +2418,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2494 
2418 
     | 
    
         
             
                        end
         
     | 
| 
       2495 
2419 
     | 
    
         | 
| 
       2496 
2420 
     | 
    
         
             
                        it "returns an empty array" do
         
     | 
| 
       2497 
     | 
    
         
            -
                          preferences. 
     | 
| 
      
 2421 
     | 
    
         
            +
                          expect(preferences).to be_empty
         
     | 
| 
       2498 
2422 
     | 
    
         
             
                        end
         
     | 
| 
       2499 
2423 
     | 
    
         
             
                      end
         
     | 
| 
       2500 
2424 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -2521,7 +2445,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2521 
2445 
     | 
    
         
             
                    end
         
     | 
| 
       2522 
2446 
     | 
    
         | 
| 
       2523 
2447 
     | 
    
         
             
                    it "returns the document" do
         
     | 
| 
       2524 
     | 
    
         
            -
                      found. 
     | 
| 
      
 2448 
     | 
    
         
            +
                      expect(found).to eq(preference)
         
     | 
| 
       2525 
2449 
     | 
    
         
             
                    end
         
     | 
| 
       2526 
2450 
     | 
    
         
             
                  end
         
     | 
| 
       2527 
2451 
     | 
    
         | 
| 
         @@ -2532,11 +2456,60 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2532 
2456 
     | 
    
         
             
                    end
         
     | 
| 
       2533 
2457 
     | 
    
         | 
| 
       2534 
2458 
     | 
    
         
             
                    it "sets the new document attributes" do
         
     | 
| 
       2535 
     | 
    
         
            -
                      found.name. 
     | 
| 
      
 2459 
     | 
    
         
            +
                      expect(found.name).to eq("Test")
         
     | 
| 
      
 2460 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2461 
     | 
    
         
            +
             
     | 
| 
      
 2462 
     | 
    
         
            +
                    it "returns a newly persisted document" do
         
     | 
| 
      
 2463 
     | 
    
         
            +
                      expect(found).to be_persisted
         
     | 
| 
      
 2464 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2465 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2466 
     | 
    
         
            +
                end
         
     | 
| 
      
 2467 
     | 
    
         
            +
              end
         
     | 
| 
      
 2468 
     | 
    
         
            +
             
     | 
| 
      
 2469 
     | 
    
         
            +
              describe "#find_or_create_by!" do
         
     | 
| 
      
 2470 
     | 
    
         
            +
             
     | 
| 
      
 2471 
     | 
    
         
            +
                context "when the relation is not polymorphic" do
         
     | 
| 
      
 2472 
     | 
    
         
            +
             
     | 
| 
      
 2473 
     | 
    
         
            +
                  let(:person) do
         
     | 
| 
      
 2474 
     | 
    
         
            +
                    Person.create
         
     | 
| 
      
 2475 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2476 
     | 
    
         
            +
             
     | 
| 
      
 2477 
     | 
    
         
            +
                  let!(:preference) do
         
     | 
| 
      
 2478 
     | 
    
         
            +
                    person.preferences.create(name: "Testing")
         
     | 
| 
      
 2479 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2480 
     | 
    
         
            +
             
     | 
| 
      
 2481 
     | 
    
         
            +
                  context "when the document exists" do
         
     | 
| 
      
 2482 
     | 
    
         
            +
             
     | 
| 
      
 2483 
     | 
    
         
            +
                    let(:found) do
         
     | 
| 
      
 2484 
     | 
    
         
            +
                      person.preferences.find_or_create_by!(name: "Testing")
         
     | 
| 
      
 2485 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2486 
     | 
    
         
            +
             
     | 
| 
      
 2487 
     | 
    
         
            +
                    it "returns the document" do
         
     | 
| 
      
 2488 
     | 
    
         
            +
                      expect(found).to eq(preference)
         
     | 
| 
      
 2489 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2490 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2491 
     | 
    
         
            +
             
     | 
| 
      
 2492 
     | 
    
         
            +
                  context "when the document does not exist" do
         
     | 
| 
      
 2493 
     | 
    
         
            +
             
     | 
| 
      
 2494 
     | 
    
         
            +
                    let(:found) do
         
     | 
| 
      
 2495 
     | 
    
         
            +
                      person.preferences.find_or_create_by!(name: "Test")
         
     | 
| 
      
 2496 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2497 
     | 
    
         
            +
             
     | 
| 
      
 2498 
     | 
    
         
            +
                    it "sets the new document attributes" do
         
     | 
| 
      
 2499 
     | 
    
         
            +
                      expect(found.name).to eq("Test")
         
     | 
| 
       2536 
2500 
     | 
    
         
             
                    end
         
     | 
| 
       2537 
2501 
     | 
    
         | 
| 
       2538 
2502 
     | 
    
         
             
                    it "returns a newly persisted document" do
         
     | 
| 
       2539 
     | 
    
         
            -
                      found. 
     | 
| 
      
 2503 
     | 
    
         
            +
                      expect(found).to be_persisted
         
     | 
| 
      
 2504 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2505 
     | 
    
         
            +
             
     | 
| 
      
 2506 
     | 
    
         
            +
                    context "when validation fails" do
         
     | 
| 
      
 2507 
     | 
    
         
            +
             
     | 
| 
      
 2508 
     | 
    
         
            +
                      it "raises an error" do
         
     | 
| 
      
 2509 
     | 
    
         
            +
                        expect {
         
     | 
| 
      
 2510 
     | 
    
         
            +
                          person.preferences.find_or_create_by!(name: "A")
         
     | 
| 
      
 2511 
     | 
    
         
            +
                        }.to raise_error(Mongoid::Errors::Validations)
         
     | 
| 
      
 2512 
     | 
    
         
            +
                      end
         
     | 
| 
       2540 
2513 
     | 
    
         
             
                    end
         
     | 
| 
       2541 
2514 
     | 
    
         
             
                  end
         
     | 
| 
       2542 
2515 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2561,7 +2534,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2561 
2534 
     | 
    
         
             
                    end
         
     | 
| 
       2562 
2535 
     | 
    
         | 
| 
       2563 
2536 
     | 
    
         
             
                    it "returns the document" do
         
     | 
| 
       2564 
     | 
    
         
            -
                      found. 
     | 
| 
      
 2537 
     | 
    
         
            +
                      expect(found).to eq(preference)
         
     | 
| 
       2565 
2538 
     | 
    
         
             
                    end
         
     | 
| 
       2566 
2539 
     | 
    
         
             
                  end
         
     | 
| 
       2567 
2540 
     | 
    
         | 
| 
         @@ -2572,11 +2545,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2572 
2545 
     | 
    
         
             
                    end
         
     | 
| 
       2573 
2546 
     | 
    
         | 
| 
       2574 
2547 
     | 
    
         
             
                    it "sets the new document attributes" do
         
     | 
| 
       2575 
     | 
    
         
            -
                      found.name. 
     | 
| 
      
 2548 
     | 
    
         
            +
                      expect(found.name).to eq("Test")
         
     | 
| 
       2576 
2549 
     | 
    
         
             
                    end
         
     | 
| 
       2577 
2550 
     | 
    
         | 
| 
       2578 
2551 
     | 
    
         
             
                    it "returns a non persisted document" do
         
     | 
| 
       2579 
     | 
    
         
            -
                      found. 
     | 
| 
      
 2552 
     | 
    
         
            +
                      expect(found).to_not be_persisted
         
     | 
| 
       2580 
2553 
     | 
    
         
             
                    end
         
     | 
| 
       2581 
2554 
     | 
    
         
             
                  end
         
     | 
| 
       2582 
2555 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2585,14 +2558,14 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2585 
2558 
     | 
    
         
             
              describe ".foreign_key_suffix" do
         
     | 
| 
       2586 
2559 
     | 
    
         | 
| 
       2587 
2560 
     | 
    
         
             
                it "returns _ids" do
         
     | 
| 
       2588 
     | 
    
         
            -
                  described_class.foreign_key_suffix. 
     | 
| 
      
 2561 
     | 
    
         
            +
                  expect(described_class.foreign_key_suffix).to eq("_ids")
         
     | 
| 
       2589 
2562 
     | 
    
         
             
                end
         
     | 
| 
       2590 
2563 
     | 
    
         
             
              end
         
     | 
| 
       2591 
2564 
     | 
    
         | 
| 
       2592 
2565 
     | 
    
         
             
              describe ".macro" do
         
     | 
| 
       2593 
2566 
     | 
    
         | 
| 
       2594 
2567 
     | 
    
         
             
                it "returns has_and_belongs_to_many" do
         
     | 
| 
       2595 
     | 
    
         
            -
                  described_class.macro. 
     | 
| 
      
 2568 
     | 
    
         
            +
                  expect(described_class.macro).to eq(:has_and_belongs_to_many)
         
     | 
| 
       2596 
2569 
     | 
    
         
             
                end
         
     | 
| 
       2597 
2570 
     | 
    
         
             
              end
         
     | 
| 
       2598 
2571 
     | 
    
         | 
| 
         @@ -2621,7 +2594,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2621 
2594 
     | 
    
         
             
                end
         
     | 
| 
       2622 
2595 
     | 
    
         | 
| 
       2623 
2596 
     | 
    
         
             
                it "returns the document with the max value of the supplied field" do
         
     | 
| 
       2624 
     | 
    
         
            -
                  max. 
     | 
| 
      
 2597 
     | 
    
         
            +
                  expect(max).to eq(preference_two)
         
     | 
| 
       2625 
2598 
     | 
    
         
             
                end
         
     | 
| 
       2626 
2599 
     | 
    
         
             
              end
         
     | 
| 
       2627 
2600 
     | 
    
         | 
| 
         @@ -2648,7 +2621,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2648 
2621 
     | 
    
         
             
                end
         
     | 
| 
       2649 
2622 
     | 
    
         | 
| 
       2650 
2623 
     | 
    
         
             
                it "returns the document with the max value of the supplied field" do
         
     | 
| 
       2651 
     | 
    
         
            -
                  max. 
     | 
| 
      
 2624 
     | 
    
         
            +
                  expect(max).to eq(preference_two)
         
     | 
| 
       2652 
2625 
     | 
    
         
             
                end
         
     | 
| 
       2653 
2626 
     | 
    
         
             
              end
         
     | 
| 
       2654 
2627 
     | 
    
         | 
| 
         @@ -2677,7 +2650,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2677 
2650 
     | 
    
         
             
                  end
         
     | 
| 
       2678 
2651 
     | 
    
         | 
| 
       2679 
2652 
     | 
    
         
             
                  it "applies the criteria to the documents" do
         
     | 
| 
       2680 
     | 
    
         
            -
                    preferences. 
     | 
| 
      
 2653 
     | 
    
         
            +
                    expect(preferences).to eq([ preference_one ])
         
     | 
| 
       2681 
2654 
     | 
    
         
             
                  end
         
     | 
| 
       2682 
2655 
     | 
    
         
             
                end
         
     | 
| 
       2683 
2656 
     | 
    
         | 
| 
         @@ -2688,7 +2661,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2688 
2661 
     | 
    
         
             
                  end
         
     | 
| 
       2689 
2662 
     | 
    
         | 
| 
       2690 
2663 
     | 
    
         
             
                  it "does not return unrelated documents" do
         
     | 
| 
       2691 
     | 
    
         
            -
                    preferences. 
     | 
| 
      
 2664 
     | 
    
         
            +
                    expect(preferences).to be_empty
         
     | 
| 
       2692 
2665 
     | 
    
         
             
                  end
         
     | 
| 
       2693 
2666 
     | 
    
         
             
                end
         
     | 
| 
       2694 
2667 
     | 
    
         | 
| 
         @@ -2699,7 +2672,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2699 
2672 
     | 
    
         
             
                  end
         
     | 
| 
       2700 
2673 
     | 
    
         | 
| 
       2701 
2674 
     | 
    
         
             
                  it "applies the criteria to the documents" do
         
     | 
| 
       2702 
     | 
    
         
            -
                    preferences. 
     | 
| 
      
 2675 
     | 
    
         
            +
                    expect(preferences).to eq([ preference_one ])
         
     | 
| 
       2703 
2676 
     | 
    
         
             
                  end
         
     | 
| 
       2704 
2677 
     | 
    
         
             
                end
         
     | 
| 
       2705 
2678 
     | 
    
         | 
| 
         @@ -2710,7 +2683,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2710 
2683 
     | 
    
         
             
                  end
         
     | 
| 
       2711 
2684 
     | 
    
         | 
| 
       2712 
2685 
     | 
    
         
             
                  it "applies the criteria to the documents" do
         
     | 
| 
       2713 
     | 
    
         
            -
                    preferences. 
     | 
| 
      
 2686 
     | 
    
         
            +
                    expect(preferences).to eq([ preference_one ])
         
     | 
| 
       2714 
2687 
     | 
    
         
             
                  end
         
     | 
| 
       2715 
2688 
     | 
    
         
             
                end
         
     | 
| 
       2716 
2689 
     | 
    
         | 
| 
         @@ -2718,9 +2691,13 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2718 
2691 
     | 
    
         | 
| 
       2719 
2692 
     | 
    
         
             
                  describe "#distinct" do
         
     | 
| 
       2720 
2693 
     | 
    
         | 
| 
      
 2694 
     | 
    
         
            +
                    let(:values) do
         
     | 
| 
      
 2695 
     | 
    
         
            +
                      person.preferences.distinct(:name)
         
     | 
| 
      
 2696 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2697 
     | 
    
         
            +
             
     | 
| 
       2721 
2698 
     | 
    
         
             
                    it "returns the distinct values for the fields" do
         
     | 
| 
       2722 
     | 
    
         
            -
                       
     | 
| 
       2723 
     | 
    
         
            -
             
     | 
| 
      
 2699 
     | 
    
         
            +
                      expect(values).to include("First")
         
     | 
| 
      
 2700 
     | 
    
         
            +
                      expect(values).to include("Second")
         
     | 
| 
       2724 
2701 
     | 
    
         
             
                    end
         
     | 
| 
       2725 
2702 
     | 
    
         | 
| 
       2726 
2703 
     | 
    
         
             
                    context "when the inverse relation is not defined" do
         
     | 
| 
         @@ -2730,7 +2707,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2730 
2707 
     | 
    
         
             
                      end
         
     | 
| 
       2731 
2708 
     | 
    
         | 
| 
       2732 
2709 
     | 
    
         
             
                      it "returns the distinct values for the fields" do
         
     | 
| 
       2733 
     | 
    
         
            -
                        person.houses.distinct(:name). 
     | 
| 
      
 2710 
     | 
    
         
            +
                        expect(person.houses.distinct(:name)).to eq([ house.name ])
         
     | 
| 
       2734 
2711 
     | 
    
         
             
                      end
         
     | 
| 
       2735 
2712 
     | 
    
         
             
                    end
         
     | 
| 
       2736 
2713 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -2762,7 +2739,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2762 
2739 
     | 
    
         
             
                end
         
     | 
| 
       2763 
2740 
     | 
    
         | 
| 
       2764 
2741 
     | 
    
         
             
                it "returns the min value of the supplied field" do
         
     | 
| 
       2765 
     | 
    
         
            -
                  min. 
     | 
| 
      
 2742 
     | 
    
         
            +
                  expect(min).to eq(preference_one)
         
     | 
| 
       2766 
2743 
     | 
    
         
             
                end
         
     | 
| 
       2767 
2744 
     | 
    
         
             
              end
         
     | 
| 
       2768 
2745 
     | 
    
         | 
| 
         @@ -2789,14 +2766,14 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2789 
2766 
     | 
    
         
             
                end
         
     | 
| 
       2790 
2767 
     | 
    
         | 
| 
       2791 
2768 
     | 
    
         
             
                it "returns the min value of the supplied field" do
         
     | 
| 
       2792 
     | 
    
         
            -
                  min. 
     | 
| 
      
 2769 
     | 
    
         
            +
                  expect(min).to eq(preference_one)
         
     | 
| 
       2793 
2770 
     | 
    
         
             
                end
         
     | 
| 
       2794 
2771 
     | 
    
         
             
              end
         
     | 
| 
       2795 
2772 
     | 
    
         | 
| 
       2796 
2773 
     | 
    
         
             
              describe "#nil?" do
         
     | 
| 
       2797 
2774 
     | 
    
         | 
| 
       2798 
2775 
     | 
    
         
             
                it "returns false" do
         
     | 
| 
       2799 
     | 
    
         
            -
                  Person.new.preferences. 
     | 
| 
      
 2776 
     | 
    
         
            +
                  expect(Person.new.preferences).to_not be_nil
         
     | 
| 
       2800 
2777 
     | 
    
         
             
                end
         
     | 
| 
       2801 
2778 
     | 
    
         
             
              end
         
     | 
| 
       2802 
2779 
     | 
    
         | 
| 
         @@ -2820,30 +2797,30 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2820 
2797 
     | 
    
         | 
| 
       2821 
2798 
     | 
    
         
             
                it "removes the foreign key from the base document" do
         
     | 
| 
       2822 
2799 
     | 
    
         
             
                  [ preference_one, preference_two ].each do |preference|
         
     | 
| 
       2823 
     | 
    
         
            -
                    person.preference_ids. 
     | 
| 
      
 2800 
     | 
    
         
            +
                    expect(person.preference_ids).to_not include(preference.id)
         
     | 
| 
       2824 
2801 
     | 
    
         
             
                  end
         
     | 
| 
       2825 
2802 
     | 
    
         
             
                end
         
     | 
| 
       2826 
2803 
     | 
    
         | 
| 
       2827 
2804 
     | 
    
         
             
                it "removes the foreign key from the target documents" do
         
     | 
| 
       2828 
2805 
     | 
    
         
             
                  [ preference_one, preference_two ].each do |preference|
         
     | 
| 
       2829 
     | 
    
         
            -
                    preference.person_ids. 
     | 
| 
      
 2806 
     | 
    
         
            +
                    expect(preference.person_ids).to_not include(person.id)
         
     | 
| 
       2830 
2807 
     | 
    
         
             
                  end
         
     | 
| 
       2831 
2808 
     | 
    
         
             
                end
         
     | 
| 
       2832 
2809 
     | 
    
         | 
| 
       2833 
2810 
     | 
    
         
             
                it "removes the reference from the base document" do
         
     | 
| 
       2834 
2811 
     | 
    
         
             
                  [ preference_one, preference_two ].each do |preference|
         
     | 
| 
       2835 
     | 
    
         
            -
                    person.preferences. 
     | 
| 
      
 2812 
     | 
    
         
            +
                    expect(person.preferences).to_not include(preference)
         
     | 
| 
       2836 
2813 
     | 
    
         
             
                  end
         
     | 
| 
       2837 
2814 
     | 
    
         
             
                end
         
     | 
| 
       2838 
2815 
     | 
    
         | 
| 
       2839 
2816 
     | 
    
         
             
                it "removes the reference from the target documents" do
         
     | 
| 
       2840 
2817 
     | 
    
         
             
                  [ preference_one, preference_two ].each do |preference|
         
     | 
| 
       2841 
     | 
    
         
            -
                    preference.people. 
     | 
| 
      
 2818 
     | 
    
         
            +
                    expect(preference.people).to_not include(person)
         
     | 
| 
       2842 
2819 
     | 
    
         
             
                  end
         
     | 
| 
       2843 
2820 
     | 
    
         
             
                end
         
     | 
| 
       2844 
2821 
     | 
    
         | 
| 
       2845 
2822 
     | 
    
         
             
                it "saves the documents" do
         
     | 
| 
       2846 
     | 
    
         
            -
                  preference_one.reload.people. 
     | 
| 
      
 2823 
     | 
    
         
            +
                  expect(preference_one.reload.people).to_not include(person)
         
     | 
| 
       2847 
2824 
     | 
    
         
             
                end
         
     | 
| 
       2848 
2825 
     | 
    
         
             
              end
         
     | 
| 
       2849 
2826 
     | 
    
         | 
| 
         @@ -2862,7 +2839,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2862 
2839 
     | 
    
         
             
                  context "when checking #{method}" do
         
     | 
| 
       2863 
2840 
     | 
    
         | 
| 
       2864 
2841 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       2865 
     | 
    
         
            -
                      preferences.respond_to?(method). 
     | 
| 
      
 2842 
     | 
    
         
            +
                      expect(preferences.respond_to?(method)).to be true
         
     | 
| 
       2866 
2843 
     | 
    
         
             
                    end
         
     | 
| 
       2867 
2844 
     | 
    
         
             
                  end
         
     | 
| 
       2868 
2845 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2872,7 +2849,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2872 
2849 
     | 
    
         
             
                  context "when checking #{method}" do
         
     | 
| 
       2873 
2850 
     | 
    
         | 
| 
       2874 
2851 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       2875 
     | 
    
         
            -
                      preferences.respond_to?(method). 
     | 
| 
      
 2852 
     | 
    
         
            +
                      expect(preferences.respond_to?(method)).to be true
         
     | 
| 
       2876 
2853 
     | 
    
         
             
                    end
         
     | 
| 
       2877 
2854 
     | 
    
         
             
                  end
         
     | 
| 
       2878 
2855 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2882,7 +2859,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2882 
2859 
     | 
    
         
             
                  context "when checking #{method}" do
         
     | 
| 
       2883 
2860 
     | 
    
         | 
| 
       2884 
2861 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       2885 
     | 
    
         
            -
                      preferences.respond_to?(method). 
     | 
| 
      
 2862 
     | 
    
         
            +
                      expect(preferences.respond_to?(method)).to be true
         
     | 
| 
       2886 
2863 
     | 
    
         
             
                    end
         
     | 
| 
       2887 
2864 
     | 
    
         
             
                  end
         
     | 
| 
       2888 
2865 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2891,7 +2868,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2891 
2868 
     | 
    
         
             
              describe ".stores_foreign_key?" do
         
     | 
| 
       2892 
2869 
     | 
    
         | 
| 
       2893 
2870 
     | 
    
         
             
                it "returns true" do
         
     | 
| 
       2894 
     | 
    
         
            -
                  described_class.stores_foreign_key 
     | 
| 
      
 2871 
     | 
    
         
            +
                  expect(described_class.stores_foreign_key?).to be true
         
     | 
| 
       2895 
2872 
     | 
    
         
             
                end
         
     | 
| 
       2896 
2873 
     | 
    
         
             
              end
         
     | 
| 
       2897 
2874 
     | 
    
         | 
| 
         @@ -2906,11 +2883,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2906 
2883 
     | 
    
         
             
                end
         
     | 
| 
       2907 
2884 
     | 
    
         | 
| 
       2908 
2885 
     | 
    
         
             
                it "returns the relation criteria" do
         
     | 
| 
       2909 
     | 
    
         
            -
                  scoped. 
     | 
| 
      
 2886 
     | 
    
         
            +
                  expect(scoped).to be_a(Mongoid::Criteria)
         
     | 
| 
       2910 
2887 
     | 
    
         
             
                end
         
     | 
| 
       2911 
2888 
     | 
    
         | 
| 
       2912 
2889 
     | 
    
         
             
                it "returns with an empty selector" do
         
     | 
| 
       2913 
     | 
    
         
            -
                  scoped.selector. 
     | 
| 
      
 2890 
     | 
    
         
            +
                  expect(scoped.selector).to eq({ "$and" => [{ "_id" => { "$in" => [] }}]})
         
     | 
| 
       2914 
2891 
     | 
    
         
             
                end
         
     | 
| 
       2915 
2892 
     | 
    
         
             
              end
         
     | 
| 
       2916 
2893 
     | 
    
         | 
| 
         @@ -2929,7 +2906,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2929 
2906 
     | 
    
         
             
                    end
         
     | 
| 
       2930 
2907 
     | 
    
         | 
| 
       2931 
2908 
     | 
    
         
             
                    it "returns the number of documents" do
         
     | 
| 
       2932 
     | 
    
         
            -
                      person.preferences.send(method). 
     | 
| 
      
 2909 
     | 
    
         
            +
                      expect(person.preferences.send(method)).to eq(1)
         
     | 
| 
       2933 
2910 
     | 
    
         
             
                    end
         
     | 
| 
       2934 
2911 
     | 
    
         
             
                  end
         
     | 
| 
       2935 
2912 
     | 
    
         | 
| 
         @@ -2941,7 +2918,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2941 
2918 
     | 
    
         
             
                    end
         
     | 
| 
       2942 
2919 
     | 
    
         | 
| 
       2943 
2920 
     | 
    
         
             
                    it "returns the total number of documents" do
         
     | 
| 
       2944 
     | 
    
         
            -
                      person.preferences.send(method). 
     | 
| 
      
 2921 
     | 
    
         
            +
                      expect(person.preferences.send(method)).to eq(2)
         
     | 
| 
       2945 
2922 
     | 
    
         
             
                    end
         
     | 
| 
       2946 
2923 
     | 
    
         
             
                  end
         
     | 
| 
       2947 
2924 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2968,7 +2945,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2968 
2945 
     | 
    
         
             
                  end
         
     | 
| 
       2969 
2946 
     | 
    
         | 
| 
       2970 
2947 
     | 
    
         
             
                  it "returns only the associated documents" do
         
     | 
| 
       2971 
     | 
    
         
            -
                    unscoped. 
     | 
| 
      
 2948 
     | 
    
         
            +
                    expect(unscoped).to eq([ preference_one ])
         
     | 
| 
       2972 
2949 
     | 
    
         
             
                  end
         
     | 
| 
       2973 
2950 
     | 
    
         
             
                end
         
     | 
| 
       2974 
2951 
     | 
    
         | 
| 
         @@ -2991,11 +2968,11 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       2991 
2968 
     | 
    
         
             
                  end
         
     | 
| 
       2992 
2969 
     | 
    
         | 
| 
       2993 
2970 
     | 
    
         
             
                  it "only returns associated documents" do
         
     | 
| 
       2994 
     | 
    
         
            -
                    unscoped. 
     | 
| 
      
 2971 
     | 
    
         
            +
                    expect(unscoped).to eq([ house_one ])
         
     | 
| 
       2995 
2972 
     | 
    
         
             
                  end
         
     | 
| 
       2996 
2973 
     | 
    
         | 
| 
       2997 
2974 
     | 
    
         
             
                  it "removes the default scoping options" do
         
     | 
| 
       2998 
     | 
    
         
            -
                    unscoped.options. 
     | 
| 
      
 2975 
     | 
    
         
            +
                    expect(unscoped.options).to eq({})
         
     | 
| 
       2999 
2976 
     | 
    
         
             
                  end
         
     | 
| 
       3000 
2977 
     | 
    
         
             
                end
         
     | 
| 
       3001 
2978 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3003,7 +2980,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3003 
2980 
     | 
    
         
             
              describe ".valid_options" do
         
     | 
| 
       3004 
2981 
     | 
    
         | 
| 
       3005 
2982 
     | 
    
         
             
                it "returns the valid options" do
         
     | 
| 
       3006 
     | 
    
         
            -
                  described_class.valid_options. 
     | 
| 
      
 2983 
     | 
    
         
            +
                  expect(described_class.valid_options).to eq(
         
     | 
| 
       3007 
2984 
     | 
    
         
             
                    [
         
     | 
| 
       3008 
2985 
     | 
    
         
             
                      :after_add,
         
     | 
| 
       3009 
2986 
     | 
    
         
             
                      :after_remove,
         
     | 
| 
         @@ -3023,7 +3000,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3023 
3000 
     | 
    
         
             
              describe ".validation_default" do
         
     | 
| 
       3024 
3001 
     | 
    
         | 
| 
       3025 
3002 
     | 
    
         
             
                it "returns true" do
         
     | 
| 
       3026 
     | 
    
         
            -
                  described_class.validation_default. 
     | 
| 
      
 3003 
     | 
    
         
            +
                  expect(described_class.validation_default).to be true
         
     | 
| 
       3027 
3004 
     | 
    
         
             
                end
         
     | 
| 
       3028 
3005 
     | 
    
         
             
              end
         
     | 
| 
       3029 
3006 
     | 
    
         | 
| 
         @@ -3055,7 +3032,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3055 
3032 
     | 
    
         
             
                context "when reloading" do
         
     | 
| 
       3056 
3033 
     | 
    
         | 
| 
       3057 
3034 
     | 
    
         
             
                  it "properly sets the references" do
         
     | 
| 
       3058 
     | 
    
         
            -
                    person.houses(true). 
     | 
| 
      
 3035 
     | 
    
         
            +
                    expect(person.houses(true)).to eq([ girlfriend_house ])
         
     | 
| 
       3059 
3036 
     | 
    
         
             
                  end
         
     | 
| 
       3060 
3037 
     | 
    
         
             
                end
         
     | 
| 
       3061 
3038 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3077,15 +3054,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3077 
3054 
     | 
    
         
             
                  end
         
     | 
| 
       3078 
3055 
     | 
    
         | 
| 
       3079 
3056 
     | 
    
         
             
                  it "sets the businesses" do
         
     | 
| 
       3080 
     | 
    
         
            -
                    user.businesses. 
     | 
| 
      
 3057 
     | 
    
         
            +
                    expect(user.businesses).to eq([ business ])
         
     | 
| 
       3081 
3058 
     | 
    
         
             
                  end
         
     | 
| 
       3082 
3059 
     | 
    
         | 
| 
       3083 
3060 
     | 
    
         
             
                  it "sets the inverse users" do
         
     | 
| 
       3084 
     | 
    
         
            -
                    user.businesses.first.owners.first. 
     | 
| 
      
 3061 
     | 
    
         
            +
                    expect(user.businesses.first.owners.first).to eq(user)
         
     | 
| 
       3085 
3062 
     | 
    
         
             
                  end
         
     | 
| 
       3086 
3063 
     | 
    
         | 
| 
       3087 
3064 
     | 
    
         
             
                  it "sets the inverse businesses" do
         
     | 
| 
       3088 
     | 
    
         
            -
                    business.owners. 
     | 
| 
      
 3065 
     | 
    
         
            +
                    expect(business.owners).to eq([ user ])
         
     | 
| 
       3089 
3066 
     | 
    
         
             
                  end
         
     | 
| 
       3090 
3067 
     | 
    
         
             
                end
         
     | 
| 
       3091 
3068 
     | 
    
         | 
| 
         @@ -3104,15 +3081,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3104 
3081 
     | 
    
         
             
                  end
         
     | 
| 
       3105 
3082 
     | 
    
         | 
| 
       3106 
3083 
     | 
    
         
             
                  it "sets the businesses" do
         
     | 
| 
       3107 
     | 
    
         
            -
                    user.businesses. 
     | 
| 
      
 3084 
     | 
    
         
            +
                    expect(user.businesses).to eq([ business ])
         
     | 
| 
       3108 
3085 
     | 
    
         
             
                  end
         
     | 
| 
       3109 
3086 
     | 
    
         | 
| 
       3110 
3087 
     | 
    
         
             
                  it "sets the inverse users" do
         
     | 
| 
       3111 
     | 
    
         
            -
                    user.businesses.first.owners.first. 
     | 
| 
      
 3088 
     | 
    
         
            +
                    expect(user.businesses.first.owners.first).to eq(user)
         
     | 
| 
       3112 
3089 
     | 
    
         
             
                  end
         
     | 
| 
       3113 
3090 
     | 
    
         | 
| 
       3114 
3091 
     | 
    
         
             
                  it "sets the inverse businesses" do
         
     | 
| 
       3115 
     | 
    
         
            -
                    business.owners. 
     | 
| 
      
 3092 
     | 
    
         
            +
                    expect(business.owners).to eq([ user ])
         
     | 
| 
       3116 
3093 
     | 
    
         
             
                  end
         
     | 
| 
       3117 
3094 
     | 
    
         | 
| 
       3118 
3095 
     | 
    
         
             
                  context "when reloading" do
         
     | 
| 
         @@ -3123,15 +3100,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3123 
3100 
     | 
    
         
             
                    end
         
     | 
| 
       3124 
3101 
     | 
    
         | 
| 
       3125 
3102 
     | 
    
         
             
                    it "persists the businesses" do
         
     | 
| 
       3126 
     | 
    
         
            -
                      user.businesses. 
     | 
| 
      
 3103 
     | 
    
         
            +
                      expect(user.businesses).to eq([ business ])
         
     | 
| 
       3127 
3104 
     | 
    
         
             
                    end
         
     | 
| 
       3128 
3105 
     | 
    
         | 
| 
       3129 
3106 
     | 
    
         
             
                    it "persists the inverse users" do
         
     | 
| 
       3130 
     | 
    
         
            -
                      user.businesses.first.owners.first. 
     | 
| 
      
 3107 
     | 
    
         
            +
                      expect(user.businesses.first.owners.first).to eq(user)
         
     | 
| 
       3131 
3108 
     | 
    
         
             
                    end
         
     | 
| 
       3132 
3109 
     | 
    
         | 
| 
       3133 
3110 
     | 
    
         
             
                    it "persists the inverse businesses" do
         
     | 
| 
       3134 
     | 
    
         
            -
                      business.owners. 
     | 
| 
      
 3111 
     | 
    
         
            +
                      expect(business.owners).to eq([ user ])
         
     | 
| 
       3135 
3112 
     | 
    
         
             
                    end
         
     | 
| 
       3136 
3113 
     | 
    
         
             
                  end
         
     | 
| 
       3137 
3114 
     | 
    
         
             
                end
         
     | 
| 
         @@ -3151,15 +3128,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3151 
3128 
     | 
    
         
             
                  end
         
     | 
| 
       3152 
3129 
     | 
    
         | 
| 
       3153 
3130 
     | 
    
         
             
                  it "sets the businesses" do
         
     | 
| 
       3154 
     | 
    
         
            -
                    user.businesses. 
     | 
| 
      
 3131 
     | 
    
         
            +
                    expect(user.businesses).to eq([ business ])
         
     | 
| 
       3155 
3132 
     | 
    
         
             
                  end
         
     | 
| 
       3156 
3133 
     | 
    
         | 
| 
       3157 
3134 
     | 
    
         
             
                  it "sets the inverse users" do
         
     | 
| 
       3158 
     | 
    
         
            -
                    user.businesses.first.owners.first. 
     | 
| 
      
 3135 
     | 
    
         
            +
                    expect(user.businesses.first.owners.first).to eq(user)
         
     | 
| 
       3159 
3136 
     | 
    
         
             
                  end
         
     | 
| 
       3160 
3137 
     | 
    
         | 
| 
       3161 
3138 
     | 
    
         
             
                  it "sets the inverse businesses" do
         
     | 
| 
       3162 
     | 
    
         
            -
                    business.owners. 
     | 
| 
      
 3139 
     | 
    
         
            +
                    expect(business.owners).to eq([ user ])
         
     | 
| 
       3163 
3140 
     | 
    
         
             
                  end
         
     | 
| 
       3164 
3141 
     | 
    
         | 
| 
       3165 
3142 
     | 
    
         
             
                  context "when reloading" do
         
     | 
| 
         @@ -3170,15 +3147,15 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3170 
3147 
     | 
    
         
             
                    end
         
     | 
| 
       3171 
3148 
     | 
    
         | 
| 
       3172 
3149 
     | 
    
         
             
                    it "persists the businesses" do
         
     | 
| 
       3173 
     | 
    
         
            -
                      user.businesses. 
     | 
| 
      
 3150 
     | 
    
         
            +
                      expect(user.businesses).to eq([ business ])
         
     | 
| 
       3174 
3151 
     | 
    
         
             
                    end
         
     | 
| 
       3175 
3152 
     | 
    
         | 
| 
       3176 
3153 
     | 
    
         
             
                    it "persists the inverse users" do
         
     | 
| 
       3177 
     | 
    
         
            -
                      user.businesses.first.owners.first. 
     | 
| 
      
 3154 
     | 
    
         
            +
                      expect(user.businesses.first.owners.first).to eq(user)
         
     | 
| 
       3178 
3155 
     | 
    
         
             
                    end
         
     | 
| 
       3179 
3156 
     | 
    
         | 
| 
       3180 
3157 
     | 
    
         
             
                    it "persists the inverse businesses" do
         
     | 
| 
       3181 
     | 
    
         
            -
                      business.owners. 
     | 
| 
      
 3158 
     | 
    
         
            +
                      expect(business.owners).to eq([ user ])
         
     | 
| 
       3182 
3159 
     | 
    
         
             
                    end
         
     | 
| 
       3183 
3160 
     | 
    
         
             
                  end
         
     | 
| 
       3184 
3161 
     | 
    
         
             
                end
         
     | 
| 
         @@ -3197,13 +3174,13 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3197 
3174 
     | 
    
         
             
                before do
         
     | 
| 
       3198 
3175 
     | 
    
         
             
                  2.times do
         
     | 
| 
       3199 
3176 
     | 
    
         
             
                    person.preferences.each do |preference|
         
     | 
| 
       3200 
     | 
    
         
            -
                      preference.person_ids. 
     | 
| 
      
 3177 
     | 
    
         
            +
                      expect(preference.person_ids).to eq([ person.id ])
         
     | 
| 
       3201 
3178 
     | 
    
         
             
                    end
         
     | 
| 
       3202 
3179 
     | 
    
         
             
                  end
         
     | 
| 
       3203 
3180 
     | 
    
         
             
                end
         
     | 
| 
       3204 
3181 
     | 
    
         | 
| 
       3205 
3182 
     | 
    
         
             
                it "does not duplicate foreign keys" do
         
     | 
| 
       3206 
     | 
    
         
            -
                  person.preference_ids. 
     | 
| 
      
 3183 
     | 
    
         
            +
                  expect(person.preference_ids).to eq([ preference.id ])
         
     | 
| 
       3207 
3184 
     | 
    
         
             
                end
         
     | 
| 
       3208 
3185 
     | 
    
         
             
              end
         
     | 
| 
       3209 
3186 
     | 
    
         | 
| 
         @@ -3231,13 +3208,13 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3231 
3208 
     | 
    
         
             
                end
         
     | 
| 
       3232 
3209 
     | 
    
         | 
| 
       3233 
3210 
     | 
    
         
             
                it "orders the documents" do
         
     | 
| 
       3234 
     | 
    
         
            -
                  person.ordered_preferences(true). 
     | 
| 
      
 3211 
     | 
    
         
            +
                  expect(person.ordered_preferences(true)).to eq(
         
     | 
| 
       3235 
3212 
     | 
    
         
             
                    [preference_two, preference_three, preference_one]
         
     | 
| 
       3236 
3213 
     | 
    
         
             
                  )
         
     | 
| 
       3237 
3214 
     | 
    
         
             
                end
         
     | 
| 
       3238 
3215 
     | 
    
         | 
| 
       3239 
3216 
     | 
    
         
             
                it "chains default criteria with additional" do
         
     | 
| 
       3240 
     | 
    
         
            -
                  person.ordered_preferences.order_by(:name.desc).to_a. 
     | 
| 
      
 3217 
     | 
    
         
            +
                  expect(person.ordered_preferences.order_by(:name.desc).to_a).to eq(
         
     | 
| 
       3241 
3218 
     | 
    
         
             
                    [preference_three, preference_two, preference_one]
         
     | 
| 
       3242 
3219 
     | 
    
         
             
                  )
         
     | 
| 
       3243 
3220 
     | 
    
         
             
                end
         
     | 
| 
         @@ -3261,17 +3238,17 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3261 
3238 
     | 
    
         
             
                end
         
     | 
| 
       3262 
3239 
     | 
    
         | 
| 
       3263 
3240 
     | 
    
         
             
                it "sets the relation to an empty array" do
         
     | 
| 
       3264 
     | 
    
         
            -
                  person.preferences. 
     | 
| 
      
 3241 
     | 
    
         
            +
                  expect(person.preferences).to be_empty
         
     | 
| 
       3265 
3242 
     | 
    
         
             
                end
         
     | 
| 
       3266 
3243 
     | 
    
         | 
| 
       3267 
3244 
     | 
    
         
             
                it "removes the foreign key values" do
         
     | 
| 
       3268 
     | 
    
         
            -
                  person.preference_ids. 
     | 
| 
      
 3245 
     | 
    
         
            +
                  expect(person.preference_ids).to be_empty
         
     | 
| 
       3269 
3246 
     | 
    
         
             
                end
         
     | 
| 
       3270 
3247 
     | 
    
         | 
| 
       3271 
3248 
     | 
    
         
             
                it "does not delete the target from the database" do
         
     | 
| 
       3272 
3249 
     | 
    
         
             
                  expect {
         
     | 
| 
       3273 
3250 
     | 
    
         
             
                    preference.reload
         
     | 
| 
       3274 
     | 
    
         
            -
                  }.not_to raise_error 
     | 
| 
      
 3251 
     | 
    
         
            +
                  }.not_to raise_error
         
     | 
| 
       3275 
3252 
     | 
    
         
             
                end
         
     | 
| 
       3276 
3253 
     | 
    
         
             
              end
         
     | 
| 
       3277 
3254 
     | 
    
         | 
| 
         @@ -3305,7 +3282,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3305 
3282 
     | 
    
         
             
                  end
         
     | 
| 
       3306 
3283 
     | 
    
         | 
| 
       3307 
3284 
     | 
    
         
             
                  it "reloads the document from the database" do
         
     | 
| 
       3308 
     | 
    
         
            -
                    reloaded.first.name. 
     | 
| 
      
 3285 
     | 
    
         
            +
                    expect(reloaded.first.name).to eq("reloaded")
         
     | 
| 
       3309 
3286 
     | 
    
         
             
                  end
         
     | 
| 
       3310 
3287 
     | 
    
         
             
                end
         
     | 
| 
       3311 
3288 
     | 
    
         | 
| 
         @@ -3320,7 +3297,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3320 
3297 
     | 
    
         
             
                  end
         
     | 
| 
       3321 
3298 
     | 
    
         | 
| 
       3322 
3299 
     | 
    
         
             
                  it "reloads the new document from the database" do
         
     | 
| 
       3323 
     | 
    
         
            -
                    reloaded. 
     | 
| 
      
 3300 
     | 
    
         
            +
                    expect(reloaded).to eq([ preference_one, preference_two ])
         
     | 
| 
       3324 
3301 
     | 
    
         
             
                  end
         
     | 
| 
       3325 
3302 
     | 
    
         
             
                end
         
     | 
| 
       3326 
3303 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3342,19 +3319,19 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3342 
3319 
     | 
    
         
             
                  end
         
     | 
| 
       3343 
3320 
     | 
    
         | 
| 
       3344 
3321 
     | 
    
         
             
                  it "persists the first preference" do
         
     | 
| 
       3345 
     | 
    
         
            -
                    preference_one. 
     | 
| 
      
 3322 
     | 
    
         
            +
                    expect(preference_one).to_not be_nil
         
     | 
| 
       3346 
3323 
     | 
    
         
             
                  end
         
     | 
| 
       3347 
3324 
     | 
    
         | 
| 
       3348 
3325 
     | 
    
         
             
                  it "sets the first inverse" do
         
     | 
| 
       3349 
     | 
    
         
            -
                    preference_one.people. 
     | 
| 
      
 3326 
     | 
    
         
            +
                    expect(preference_one.people).to eq([ person ])
         
     | 
| 
       3350 
3327 
     | 
    
         
             
                  end
         
     | 
| 
       3351 
3328 
     | 
    
         | 
| 
       3352 
3329 
     | 
    
         
             
                  it "persists the second preference" do
         
     | 
| 
       3353 
     | 
    
         
            -
                    preference_two. 
     | 
| 
      
 3330 
     | 
    
         
            +
                    expect(preference_two).to_not be_nil
         
     | 
| 
       3354 
3331 
     | 
    
         
             
                  end
         
     | 
| 
       3355 
3332 
     | 
    
         | 
| 
       3356 
3333 
     | 
    
         
             
                  it "sets the second inverse keys" do
         
     | 
| 
       3357 
     | 
    
         
            -
                    preference_two.people. 
     | 
| 
      
 3334 
     | 
    
         
            +
                    expect(preference_two.people).to eq([ person ])
         
     | 
| 
       3358 
3335 
     | 
    
         
             
                  end
         
     | 
| 
       3359 
3336 
     | 
    
         
             
                end
         
     | 
| 
       3360 
3337 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3390,7 +3367,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3390 
3367 
     | 
    
         
             
                  end
         
     | 
| 
       3391 
3368 
     | 
    
         | 
| 
       3392 
3369 
     | 
    
         
             
                  it "persists the change in id order" do
         
     | 
| 
       3393 
     | 
    
         
            -
                    reloaded.preference_ids. 
     | 
| 
      
 3370 
     | 
    
         
            +
                    expect(reloaded.preference_ids).to eq(
         
     | 
| 
       3394 
3371 
     | 
    
         
             
                      [ preference_two.id, preference_one.id ]
         
     | 
| 
       3395 
3372 
     | 
    
         
             
                    )
         
     | 
| 
       3396 
3373 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -3413,7 +3390,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3413 
3390 
     | 
    
         
             
                  end
         
     | 
| 
       3414 
3391 
     | 
    
         | 
| 
       3415 
3392 
     | 
    
         
             
                  it "also persists the change in id order" do
         
     | 
| 
       3416 
     | 
    
         
            -
                    reloaded.preference_ids. 
     | 
| 
      
 3393 
     | 
    
         
            +
                    expect(reloaded.preference_ids).to eq(
         
     | 
| 
       3417 
3394 
     | 
    
         
             
                      [ preference_two.id, preference_one.id, preference_three.id ]
         
     | 
| 
       3418 
3395 
     | 
    
         
             
                    )
         
     | 
| 
       3419 
3396 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -3439,7 +3416,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3439 
3416 
     | 
    
         
             
                  end
         
     | 
| 
       3440 
3417 
     | 
    
         | 
| 
       3441 
3418 
     | 
    
         
             
                  it "also persists the change in id order" do
         
     | 
| 
       3442 
     | 
    
         
            -
                    reloaded.preference_ids. 
     | 
| 
      
 3419 
     | 
    
         
            +
                    expect(reloaded.preference_ids).to eq(
         
     | 
| 
       3443 
3420 
     | 
    
         
             
                      [ preference_three.id, preference_two.id ]
         
     | 
| 
       3444 
3421 
     | 
    
         
             
                    )
         
     | 
| 
       3445 
3422 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -3471,7 +3448,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3471 
3448 
     | 
    
         
             
                  end
         
     | 
| 
       3472 
3449 
     | 
    
         | 
| 
       3473 
3450 
     | 
    
         
             
                  it "adds both documents" do
         
     | 
| 
       3474 
     | 
    
         
            -
                    result. 
     | 
| 
      
 3451 
     | 
    
         
            +
                    expect(result).to eq([ preference_one, preference_two ])
         
     | 
| 
       3475 
3452 
     | 
    
         
             
                  end
         
     | 
| 
       3476 
3453 
     | 
    
         
             
                end
         
     | 
| 
       3477 
3454 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3497,7 +3474,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do 
     | 
|
| 
       3497 
3474 
     | 
    
         
             
                  end
         
     | 
| 
       3498 
3475 
     | 
    
         | 
| 
       3499 
3476 
     | 
    
         
             
                  it "sets the new documents on the relation" do
         
     | 
| 
       3500 
     | 
    
         
            -
                    person.preferences. 
     | 
| 
      
 3477 
     | 
    
         
            +
                    expect(person.preferences).to eq([ pref_two ])
         
     | 
| 
       3501 
3478 
     | 
    
         
             
                  end
         
     | 
| 
       3502 
3479 
     | 
    
         
             
                end
         
     | 
| 
       3503 
3480 
     | 
    
         
             
              end
         
     |