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
@@ -25,19 +25,15 @@ describe Mongoid::Relations::Polymorphic do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "sets polymorphic to true" do
|
28
|
-
klass.
|
28
|
+
expect(klass).to be_polymorphic
|
29
29
|
end
|
30
30
|
|
31
31
|
it "adds the foreign key type field" do
|
32
|
-
klass.fields["ratable_type"].
|
33
|
-
end
|
34
|
-
|
35
|
-
it "adds the foreign key inverse field field" do
|
36
|
-
klass.fields["ratable_field"].should_not be_nil
|
32
|
+
expect(klass.fields["ratable_type"]).to_not be_nil
|
37
33
|
end
|
38
34
|
|
39
35
|
it "returns self" do
|
40
|
-
polymorphed.
|
36
|
+
expect(polymorphed).to eq(klass)
|
41
37
|
end
|
42
38
|
end
|
43
39
|
|
@@ -56,15 +52,15 @@ describe Mongoid::Relations::Polymorphic do
|
|
56
52
|
end
|
57
53
|
|
58
54
|
it "sets polymorphic to true" do
|
59
|
-
klass.
|
55
|
+
expect(klass).to be_polymorphic
|
60
56
|
end
|
61
57
|
|
62
58
|
it "does not add the foreign key type field" do
|
63
|
-
klass.fields["ratable_type"].
|
59
|
+
expect(klass.fields["ratable_type"]).to be_nil
|
64
60
|
end
|
65
61
|
|
66
62
|
it "does not add the foreign key inverse field field" do
|
67
|
-
klass.fields["ratable_field"].
|
63
|
+
expect(klass.fields["ratable_field"]).to be_nil
|
68
64
|
end
|
69
65
|
end
|
70
66
|
end
|
@@ -83,15 +79,15 @@ describe Mongoid::Relations::Polymorphic do
|
|
83
79
|
end
|
84
80
|
|
85
81
|
it "sets polymorphic to false" do
|
86
|
-
klass.
|
82
|
+
expect(klass).to_not be_polymorphic
|
87
83
|
end
|
88
84
|
|
89
85
|
it "does not add the foreign key type field" do
|
90
|
-
klass.fields["ratable_type"].
|
86
|
+
expect(klass.fields["ratable_type"]).to be_nil
|
91
87
|
end
|
92
88
|
|
93
89
|
it "does not add the foreign key inverse field field" do
|
94
|
-
klass.fields["ratable_field"].
|
90
|
+
expect(klass.fields["ratable_field"]).to be_nil
|
95
91
|
end
|
96
92
|
end
|
97
93
|
end
|
@@ -101,14 +97,14 @@ describe Mongoid::Relations::Polymorphic do
|
|
101
97
|
context "when the document is in a polymorphic relation" do
|
102
98
|
|
103
99
|
it "returns true" do
|
104
|
-
Movie.
|
100
|
+
expect(Movie).to be_polymorphic
|
105
101
|
end
|
106
102
|
end
|
107
103
|
|
108
104
|
context "when the document is not in a polymorphic relation" do
|
109
105
|
|
110
106
|
it "returns false" do
|
111
|
-
Survey.
|
107
|
+
expect(Survey).to_not be_polymorphic
|
112
108
|
end
|
113
109
|
end
|
114
110
|
end
|
@@ -118,14 +114,14 @@ describe Mongoid::Relations::Polymorphic do
|
|
118
114
|
context "when the document is in a polymorphic relation" do
|
119
115
|
|
120
116
|
it "returns true" do
|
121
|
-
Movie.new.
|
117
|
+
expect(Movie.new).to be_polymorphic
|
122
118
|
end
|
123
119
|
end
|
124
120
|
|
125
121
|
context "when the document is not in a polymorphic relation" do
|
126
122
|
|
127
123
|
it "returns false" do
|
128
|
-
Survey.new.
|
124
|
+
expect(Survey.new).to_not be_polymorphic
|
129
125
|
end
|
130
126
|
end
|
131
127
|
end
|
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Proxy do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "extends the proxied object" do
|
30
|
-
person.
|
30
|
+
expect(person).to be_a(Testable)
|
31
31
|
end
|
32
32
|
|
33
33
|
context "when extending from the relation definition" do
|
@@ -41,7 +41,7 @@ describe Mongoid::Relations::Proxy do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it "extends the proxy" do
|
44
|
-
found.
|
44
|
+
expect(found).to eq(address)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -27,7 +27,7 @@ describe Mongoid::Relations::Referenced::In do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "sets the target relation" do
|
30
|
-
service.target.
|
30
|
+
expect(service.target).to eq(target)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -48,11 +48,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
it "sets the relation" do
|
51
|
-
agent.game.
|
51
|
+
expect(agent.game).to eq(game)
|
52
52
|
end
|
53
53
|
|
54
54
|
it "sets the foreign_key" do
|
55
|
-
agent.game_id.
|
55
|
+
expect(agent.game_id).to eq(game.id)
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -75,15 +75,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "sets the relation" do
|
78
|
-
address.account.
|
78
|
+
expect(address.account).to eq(account)
|
79
79
|
end
|
80
80
|
|
81
81
|
it "does not erase the metadata" do
|
82
|
-
address.
|
82
|
+
expect(address.__metadata).to_not be_nil
|
83
83
|
end
|
84
84
|
|
85
85
|
it "allows saving of the embedded document" do
|
86
|
-
address.save.
|
86
|
+
expect(address.save).to be true
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
@@ -106,23 +106,23 @@ describe Mongoid::Relations::Referenced::In do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it "sets the target of the relation" do
|
109
|
-
game.person.target.
|
109
|
+
expect(game.person.target).to eq(person)
|
110
110
|
end
|
111
111
|
|
112
112
|
it "sets the foreign key on the relation" do
|
113
|
-
game.person_id.
|
113
|
+
expect(game.person_id).to eq(person.id)
|
114
114
|
end
|
115
115
|
|
116
116
|
it "sets the base on the inverse relation" do
|
117
|
-
person.game.
|
117
|
+
expect(person.game).to eq(game)
|
118
118
|
end
|
119
119
|
|
120
120
|
it "sets the same instance on the inverse relation" do
|
121
|
-
person.game.
|
121
|
+
expect(person.game).to eql(game)
|
122
122
|
end
|
123
123
|
|
124
124
|
it "does not save the target" do
|
125
|
-
person.
|
125
|
+
expect(person).to_not be_persisted
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
@@ -141,23 +141,23 @@ describe Mongoid::Relations::Referenced::In do
|
|
141
141
|
end
|
142
142
|
|
143
143
|
it "sets the target of the relation" do
|
144
|
-
game.person.target.
|
144
|
+
expect(game.person.target).to eq(person)
|
145
145
|
end
|
146
146
|
|
147
147
|
it "sets the foreign key of the relation" do
|
148
|
-
game.person_id.
|
148
|
+
expect(game.person_id).to eq(person.id)
|
149
149
|
end
|
150
150
|
|
151
151
|
it "sets the base on the inverse relation" do
|
152
|
-
person.game.
|
152
|
+
expect(person.game).to eq(game)
|
153
153
|
end
|
154
154
|
|
155
155
|
it "sets the same instance on the inverse relation" do
|
156
|
-
person.game.
|
156
|
+
expect(person.game).to eql(game)
|
157
157
|
end
|
158
158
|
|
159
159
|
it "does not saves the target" do
|
160
|
-
person.
|
160
|
+
expect(person).to_not be_persisted
|
161
161
|
end
|
162
162
|
end
|
163
163
|
end
|
@@ -180,11 +180,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
180
180
|
end
|
181
181
|
|
182
182
|
it "sets the correct value in the type field" do
|
183
|
-
comment.commentable_type.
|
183
|
+
expect(comment.commentable_type).to eq("Canvas::Test")
|
184
184
|
end
|
185
185
|
|
186
186
|
it "can retrieve the document from the database" do
|
187
|
-
comment.reload.commentable.
|
187
|
+
expect(comment.reload.commentable).to eq(canvas)
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
@@ -203,27 +203,23 @@ describe Mongoid::Relations::Referenced::In do
|
|
203
203
|
end
|
204
204
|
|
205
205
|
it "sets the target of the relation" do
|
206
|
-
rating.ratable.target.
|
206
|
+
expect(rating.ratable.target).to eq(bar)
|
207
207
|
end
|
208
208
|
|
209
209
|
it "sets the foreign key on the relation" do
|
210
|
-
rating.ratable_id.
|
211
|
-
end
|
212
|
-
|
213
|
-
it "does not set the inverse of field on the relation" do
|
214
|
-
rating.ratable_field.should be_nil
|
210
|
+
expect(rating.ratable_id).to eq(bar.id)
|
215
211
|
end
|
216
212
|
|
217
213
|
it "sets the base on the inverse relation" do
|
218
|
-
bar.rating.
|
214
|
+
expect(bar.rating).to eq(rating)
|
219
215
|
end
|
220
216
|
|
221
217
|
it "sets the same instance on the inverse relation" do
|
222
|
-
bar.rating.
|
218
|
+
expect(bar.rating).to eql(rating)
|
223
219
|
end
|
224
220
|
|
225
221
|
it "does not save the target" do
|
226
|
-
bar.
|
222
|
+
expect(bar).to_not be_persisted
|
227
223
|
end
|
228
224
|
end
|
229
225
|
|
@@ -242,27 +238,23 @@ describe Mongoid::Relations::Referenced::In do
|
|
242
238
|
end
|
243
239
|
|
244
240
|
it "sets the target of the relation" do
|
245
|
-
rating.ratable.target.
|
241
|
+
expect(rating.ratable.target).to eq(bar)
|
246
242
|
end
|
247
243
|
|
248
244
|
it "sets the foreign key of the relation" do
|
249
|
-
rating.ratable_id.
|
250
|
-
end
|
251
|
-
|
252
|
-
it "does not set the inverse of field on the relation" do
|
253
|
-
rating.ratable_field.should be_nil
|
245
|
+
expect(rating.ratable_id).to eq(bar.id)
|
254
246
|
end
|
255
247
|
|
256
248
|
it "sets the base on the inverse relation" do
|
257
|
-
bar.rating.
|
249
|
+
expect(bar.rating).to eq(rating)
|
258
250
|
end
|
259
251
|
|
260
252
|
it "sets the same instance on the inverse relation" do
|
261
|
-
bar.rating.
|
253
|
+
expect(bar.rating).to eql(rating)
|
262
254
|
end
|
263
255
|
|
264
256
|
it "does not saves the target" do
|
265
|
-
bar.
|
257
|
+
expect(bar).to_not be_persisted
|
266
258
|
end
|
267
259
|
end
|
268
260
|
end
|
@@ -287,15 +279,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
287
279
|
end
|
288
280
|
|
289
281
|
it "sets the target of the relation" do
|
290
|
-
post.person.target.
|
282
|
+
expect(post.person.target).to eq(person)
|
291
283
|
end
|
292
284
|
|
293
285
|
it "sets the foreign key on the relation" do
|
294
|
-
post.person_id.
|
286
|
+
expect(post.person_id).to eq(person.id)
|
295
287
|
end
|
296
288
|
|
297
289
|
it "does not save the target" do
|
298
|
-
person.
|
290
|
+
expect(person).to_not be_persisted
|
299
291
|
end
|
300
292
|
end
|
301
293
|
|
@@ -314,15 +306,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
314
306
|
end
|
315
307
|
|
316
308
|
it "sets the target of the relation" do
|
317
|
-
post.person.target.
|
309
|
+
expect(post.person.target).to eq(person)
|
318
310
|
end
|
319
311
|
|
320
312
|
it "sets the foreign key of the relation" do
|
321
|
-
post.person_id.
|
313
|
+
expect(post.person_id).to eq(person.id)
|
322
314
|
end
|
323
315
|
|
324
316
|
it "does not saves the target" do
|
325
|
-
person.
|
317
|
+
expect(person).to_not be_persisted
|
326
318
|
end
|
327
319
|
end
|
328
320
|
end
|
@@ -358,7 +350,7 @@ describe Mongoid::Relations::Referenced::In do
|
|
358
350
|
|
359
351
|
it "should assign as expected" do
|
360
352
|
eye.suspended_in = eye_bowl
|
361
|
-
eye.suspended_in.target.
|
353
|
+
expect(eye.suspended_in.target).to eq(eye_bowl)
|
362
354
|
end
|
363
355
|
end
|
364
356
|
|
@@ -379,15 +371,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
379
371
|
end
|
380
372
|
|
381
373
|
it "sets the target of the relation" do
|
382
|
-
rating.ratable.target.
|
374
|
+
expect(rating.ratable.target).to eq(movie)
|
383
375
|
end
|
384
376
|
|
385
377
|
it "sets the foreign key on the relation" do
|
386
|
-
rating.ratable_id.
|
378
|
+
expect(rating.ratable_id).to eq(movie.id)
|
387
379
|
end
|
388
380
|
|
389
381
|
it "does not save the target" do
|
390
|
-
movie.
|
382
|
+
expect(movie).to_not be_persisted
|
391
383
|
end
|
392
384
|
end
|
393
385
|
|
@@ -406,15 +398,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
406
398
|
end
|
407
399
|
|
408
400
|
it "sets the target of the relation" do
|
409
|
-
rating.ratable.target.
|
401
|
+
expect(rating.ratable.target).to eq(movie)
|
410
402
|
end
|
411
403
|
|
412
404
|
it "sets the foreign key of the relation" do
|
413
|
-
rating.ratable_id.
|
405
|
+
expect(rating.ratable_id).to eq(movie.id)
|
414
406
|
end
|
415
407
|
|
416
408
|
it "does not saves the target" do
|
417
|
-
movie.
|
409
|
+
expect(movie).to_not be_persisted
|
418
410
|
end
|
419
411
|
end
|
420
412
|
end
|
@@ -427,15 +419,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
427
419
|
context "when dependent is destroy" do
|
428
420
|
|
429
421
|
let(:account) do
|
430
|
-
Account.create
|
422
|
+
Account.create!(name: 'checkings')
|
431
423
|
end
|
432
424
|
|
433
425
|
let(:drug) do
|
434
|
-
Drug.create
|
426
|
+
Drug.create!
|
435
427
|
end
|
436
428
|
|
437
429
|
let(:person) do
|
438
|
-
Person.create
|
430
|
+
Person.create!
|
439
431
|
end
|
440
432
|
|
441
433
|
context "when relation is has_one" do
|
@@ -454,6 +446,17 @@ describe Mongoid::Relations::Referenced::In do
|
|
454
446
|
|
455
447
|
context "when parent exists" do
|
456
448
|
|
449
|
+
context "when child touch the parent" do
|
450
|
+
|
451
|
+
let!(:account_from_db) { account.reload }
|
452
|
+
|
453
|
+
it "queries only the parent" do
|
454
|
+
expect_query(1) do
|
455
|
+
expect(account_from_db.person.id).to eq(person.id)
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
457
460
|
context "when child is destroyed" do
|
458
461
|
|
459
462
|
before do
|
@@ -461,11 +464,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
461
464
|
end
|
462
465
|
|
463
466
|
it "deletes child" do
|
464
|
-
account.
|
467
|
+
expect(account).to be_destroyed
|
465
468
|
end
|
466
469
|
|
467
470
|
it "deletes parent" do
|
468
|
-
person.
|
471
|
+
expect(person).to be_destroyed
|
469
472
|
end
|
470
473
|
end
|
471
474
|
end
|
@@ -494,11 +497,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
494
497
|
end
|
495
498
|
|
496
499
|
it "deletes child" do
|
497
|
-
drug.
|
500
|
+
expect(drug).to be_destroyed
|
498
501
|
end
|
499
502
|
|
500
503
|
it "deletes parent" do
|
501
|
-
person.
|
504
|
+
expect(person).to be_destroyed
|
502
505
|
end
|
503
506
|
end
|
504
507
|
end
|
@@ -542,11 +545,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
542
545
|
end
|
543
546
|
|
544
547
|
it "deletes child" do
|
545
|
-
account.
|
548
|
+
expect(account).to be_destroyed
|
546
549
|
end
|
547
550
|
|
548
551
|
it "deletes parent" do
|
549
|
-
person.
|
552
|
+
expect(person).to be_destroyed
|
550
553
|
end
|
551
554
|
end
|
552
555
|
end
|
@@ -575,11 +578,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
575
578
|
end
|
576
579
|
|
577
580
|
it "deletes child" do
|
578
|
-
drug.
|
581
|
+
expect(drug).to be_destroyed
|
579
582
|
end
|
580
583
|
|
581
584
|
it "deletes parent" do
|
582
|
-
person.
|
585
|
+
expect(person).to be_destroyed
|
583
586
|
end
|
584
587
|
end
|
585
588
|
end
|
@@ -618,15 +621,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
618
621
|
end
|
619
622
|
|
620
623
|
it "deletes child" do
|
621
|
-
account.
|
624
|
+
expect(account).to be_destroyed
|
622
625
|
end
|
623
626
|
|
624
627
|
it "doesn't delete parent" do
|
625
|
-
person.
|
628
|
+
expect(person).to_not be_destroyed
|
626
629
|
end
|
627
630
|
|
628
631
|
it "removes the link" do
|
629
|
-
person.account.
|
632
|
+
expect(person.account).to be_nil
|
630
633
|
end
|
631
634
|
end
|
632
635
|
end
|
@@ -650,15 +653,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
650
653
|
end
|
651
654
|
|
652
655
|
it "deletes child" do
|
653
|
-
drug.
|
656
|
+
expect(drug).to be_destroyed
|
654
657
|
end
|
655
658
|
|
656
659
|
it "doesn't deletes parent" do
|
657
|
-
person.
|
660
|
+
expect(person).to_not be_destroyed
|
658
661
|
end
|
659
662
|
|
660
663
|
it "removes the link" do
|
661
|
-
person.drugs.
|
664
|
+
expect(person.drugs).to eq([])
|
662
665
|
end
|
663
666
|
end
|
664
667
|
end
|
@@ -681,11 +684,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
681
684
|
end
|
682
685
|
|
683
686
|
it "removes the relation" do
|
684
|
-
agent.game.
|
687
|
+
expect(agent.game).to be_nil
|
685
688
|
end
|
686
689
|
|
687
690
|
it "removes the foreign_key" do
|
688
|
-
agent.game_id.
|
691
|
+
expect(agent.game_id).to be_nil
|
689
692
|
end
|
690
693
|
end
|
691
694
|
|
@@ -709,15 +712,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
709
712
|
end
|
710
713
|
|
711
714
|
it "sets the relation to nil" do
|
712
|
-
game.person.
|
715
|
+
expect(game.person).to be_nil
|
713
716
|
end
|
714
717
|
|
715
718
|
it "removed the inverse relation" do
|
716
|
-
person.game.
|
719
|
+
expect(person.game).to be_nil
|
717
720
|
end
|
718
721
|
|
719
722
|
it "removes the foreign key value" do
|
720
|
-
game.person_id.
|
723
|
+
expect(game.person_id).to be_nil
|
721
724
|
end
|
722
725
|
end
|
723
726
|
|
@@ -737,84 +740,25 @@ describe Mongoid::Relations::Referenced::In do
|
|
737
740
|
end
|
738
741
|
|
739
742
|
it "sets the relation to nil" do
|
740
|
-
game.person.
|
743
|
+
expect(game.person).to be_nil
|
741
744
|
end
|
742
745
|
|
743
746
|
it "removed the inverse relation" do
|
744
|
-
person.game.
|
747
|
+
expect(person.game).to be_nil
|
745
748
|
end
|
746
749
|
|
747
750
|
it "removes the foreign key value" do
|
748
|
-
game.person_id.
|
751
|
+
expect(game.person_id).to be_nil
|
749
752
|
end
|
750
753
|
|
751
754
|
it "does not delete the child" do
|
752
|
-
game.
|
755
|
+
expect(game).to_not be_destroyed
|
753
756
|
end
|
754
757
|
end
|
755
758
|
end
|
756
759
|
|
757
760
|
context "when the relation is polymorphic" do
|
758
761
|
|
759
|
-
context "when multiple relations against the same class exist" do
|
760
|
-
|
761
|
-
context "when the parent is a new record" do
|
762
|
-
|
763
|
-
let(:face) do
|
764
|
-
Face.new
|
765
|
-
end
|
766
|
-
|
767
|
-
let(:eye) do
|
768
|
-
Eye.new
|
769
|
-
end
|
770
|
-
|
771
|
-
before do
|
772
|
-
face.left_eye = eye
|
773
|
-
eye.eyeable = nil
|
774
|
-
end
|
775
|
-
|
776
|
-
it "sets the relation to nil" do
|
777
|
-
eye.eyeable.should be_nil
|
778
|
-
end
|
779
|
-
|
780
|
-
it "removed the inverse relation" do
|
781
|
-
face.left_eye.should be_nil
|
782
|
-
end
|
783
|
-
|
784
|
-
it "removes the foreign key value" do
|
785
|
-
eye.eyeable_id.should be_nil
|
786
|
-
end
|
787
|
-
end
|
788
|
-
|
789
|
-
context "when the parent is not a new record" do
|
790
|
-
|
791
|
-
let(:face) do
|
792
|
-
Face.new
|
793
|
-
end
|
794
|
-
|
795
|
-
let(:eye) do
|
796
|
-
Eye.create
|
797
|
-
end
|
798
|
-
|
799
|
-
before do
|
800
|
-
face.left_eye = eye
|
801
|
-
eye.eyeable = nil
|
802
|
-
end
|
803
|
-
|
804
|
-
it "sets the relation to nil" do
|
805
|
-
eye.eyeable.should be_nil
|
806
|
-
end
|
807
|
-
|
808
|
-
it "removed the inverse relation" do
|
809
|
-
face.left_eye.should be_nil
|
810
|
-
end
|
811
|
-
|
812
|
-
it "removes the foreign key value" do
|
813
|
-
eye.eyeable_id.should be_nil
|
814
|
-
end
|
815
|
-
end
|
816
|
-
end
|
817
|
-
|
818
762
|
context "when one relation against the same class exists" do
|
819
763
|
|
820
764
|
context "when the parent is a new record" do
|
@@ -833,15 +777,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
833
777
|
end
|
834
778
|
|
835
779
|
it "sets the relation to nil" do
|
836
|
-
rating.ratable.
|
780
|
+
expect(rating.ratable).to be_nil
|
837
781
|
end
|
838
782
|
|
839
783
|
it "removed the inverse relation" do
|
840
|
-
bar.rating.
|
784
|
+
expect(bar.rating).to be_nil
|
841
785
|
end
|
842
786
|
|
843
787
|
it "removes the foreign key value" do
|
844
|
-
rating.ratable_id.
|
788
|
+
expect(rating.ratable_id).to be_nil
|
845
789
|
end
|
846
790
|
end
|
847
791
|
|
@@ -861,15 +805,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
861
805
|
end
|
862
806
|
|
863
807
|
it "sets the relation to nil" do
|
864
|
-
rating.ratable.
|
808
|
+
expect(rating.ratable).to be_nil
|
865
809
|
end
|
866
810
|
|
867
811
|
it "removed the inverse relation" do
|
868
|
-
bar.rating.
|
812
|
+
expect(bar.rating).to be_nil
|
869
813
|
end
|
870
814
|
|
871
815
|
it "removes the foreign key value" do
|
872
|
-
rating.ratable_id.
|
816
|
+
expect(rating.ratable_id).to be_nil
|
873
817
|
end
|
874
818
|
end
|
875
819
|
end
|
@@ -896,15 +840,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
896
840
|
end
|
897
841
|
|
898
842
|
it "sets the relation to nil" do
|
899
|
-
post.person.
|
843
|
+
expect(post.person).to be_nil
|
900
844
|
end
|
901
845
|
|
902
846
|
it "removed the inverse relation" do
|
903
|
-
person.posts.
|
847
|
+
expect(person.posts).to be_empty
|
904
848
|
end
|
905
849
|
|
906
850
|
it "removes the foreign key value" do
|
907
|
-
post.person_id.
|
851
|
+
expect(post.person_id).to be_nil
|
908
852
|
end
|
909
853
|
end
|
910
854
|
|
@@ -924,15 +868,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
924
868
|
end
|
925
869
|
|
926
870
|
it "sets the relation to nil" do
|
927
|
-
post.person.
|
871
|
+
expect(post.person).to be_nil
|
928
872
|
end
|
929
873
|
|
930
874
|
it "removed the inverse relation" do
|
931
|
-
person.posts.
|
875
|
+
expect(person.posts).to be_empty
|
932
876
|
end
|
933
877
|
|
934
878
|
it "removes the foreign key value" do
|
935
|
-
post.person_id.
|
879
|
+
expect(post.person_id).to be_nil
|
936
880
|
end
|
937
881
|
end
|
938
882
|
end
|
@@ -955,15 +899,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
955
899
|
end
|
956
900
|
|
957
901
|
it "sets the relation to nil" do
|
958
|
-
rating.ratable.
|
902
|
+
expect(rating.ratable).to be_nil
|
959
903
|
end
|
960
904
|
|
961
905
|
it "removed the inverse relation" do
|
962
|
-
movie.ratings.
|
906
|
+
expect(movie.ratings).to be_empty
|
963
907
|
end
|
964
908
|
|
965
909
|
it "removes the foreign key value" do
|
966
|
-
rating.ratable_id.
|
910
|
+
expect(rating.ratable_id).to be_nil
|
967
911
|
end
|
968
912
|
end
|
969
913
|
|
@@ -983,15 +927,15 @@ describe Mongoid::Relations::Referenced::In do
|
|
983
927
|
end
|
984
928
|
|
985
929
|
it "sets the relation to nil" do
|
986
|
-
rating.ratable.
|
930
|
+
expect(rating.ratable).to be_nil
|
987
931
|
end
|
988
932
|
|
989
933
|
it "removed the inverse relation" do
|
990
|
-
movie.ratings.
|
934
|
+
expect(movie.ratings).to be_empty
|
991
935
|
end
|
992
936
|
|
993
937
|
it "removes the foreign key value" do
|
994
|
-
rating.ratable_id.
|
938
|
+
expect(rating.ratable_id).to be_nil
|
995
939
|
end
|
996
940
|
end
|
997
941
|
end
|
@@ -1005,112 +949,38 @@ describe Mongoid::Relations::Referenced::In do
|
|
1005
949
|
end
|
1006
950
|
|
1007
951
|
let(:document) do
|
1008
|
-
|
952
|
+
double
|
1009
953
|
end
|
1010
954
|
|
1011
955
|
let(:metadata) do
|
1012
|
-
|
956
|
+
double(extension?: false)
|
1013
957
|
end
|
1014
958
|
|
1015
959
|
it "returns the embedded in builder" do
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1019
|
-
end
|
1020
|
-
|
1021
|
-
describe ".eager_load" do
|
1022
|
-
|
1023
|
-
before do
|
1024
|
-
Mongoid.identity_map_enabled = true
|
1025
|
-
end
|
1026
|
-
|
1027
|
-
after do
|
1028
|
-
Mongoid.identity_map_enabled = false
|
1029
|
-
end
|
1030
|
-
|
1031
|
-
context "when the relation is not polymorphic" do
|
1032
|
-
|
1033
|
-
let!(:person) do
|
1034
|
-
Person.create
|
1035
|
-
end
|
1036
|
-
|
1037
|
-
let!(:post) do
|
1038
|
-
person.posts.create(title: "testing")
|
1039
|
-
end
|
1040
|
-
|
1041
|
-
let(:metadata) do
|
1042
|
-
Post.relations["person"]
|
1043
|
-
end
|
1044
|
-
|
1045
|
-
let(:eager) do
|
1046
|
-
described_class.eager_load(metadata, Post.all)
|
1047
|
-
end
|
1048
|
-
|
1049
|
-
let!(:map) do
|
1050
|
-
Mongoid::IdentityMap.get(Person, person.id)
|
1051
|
-
end
|
1052
|
-
|
1053
|
-
it "puts the document in the identity map" do
|
1054
|
-
map.should eq(person)
|
1055
|
-
end
|
1056
|
-
end
|
1057
|
-
|
1058
|
-
context "when the relation is polymorphic" do
|
1059
|
-
|
1060
|
-
let(:metadata) do
|
1061
|
-
Rating.relations["ratable"]
|
1062
|
-
end
|
1063
|
-
|
1064
|
-
it "raises an error" do
|
1065
|
-
expect {
|
1066
|
-
described_class.eager_load(metadata, Rating.all)
|
1067
|
-
}.to raise_error(Mongoid::Errors::EagerLoad)
|
1068
|
-
end
|
1069
|
-
end
|
1070
|
-
|
1071
|
-
context "when the ids has been duplicated" do
|
1072
|
-
|
1073
|
-
let!(:person) do
|
1074
|
-
Person.create
|
1075
|
-
end
|
1076
|
-
|
1077
|
-
let!(:posts) do
|
1078
|
-
2.times {|i| person.posts.create(title: "testing#{i}") }
|
1079
|
-
person.posts
|
1080
|
-
end
|
1081
|
-
|
1082
|
-
let(:metadata) do
|
1083
|
-
Post.relations["person"]
|
1084
|
-
end
|
1085
|
-
|
1086
|
-
let(:eager) do
|
1087
|
-
described_class.eager_load(metadata, posts.map(&:person_id))
|
1088
|
-
end
|
1089
|
-
|
1090
|
-
it "duplication should be removed" do
|
1091
|
-
eager.count.should eq(1)
|
1092
|
-
end
|
960
|
+
expect(
|
961
|
+
described_class.builder(nil, metadata, document)
|
962
|
+
).to be_a_kind_of(builder_klass)
|
1093
963
|
end
|
1094
964
|
end
|
1095
965
|
|
1096
966
|
describe ".embedded?" do
|
1097
967
|
|
1098
968
|
it "returns false" do
|
1099
|
-
described_class.
|
969
|
+
expect(described_class).to_not be_embedded
|
1100
970
|
end
|
1101
971
|
end
|
1102
972
|
|
1103
973
|
describe ".foreign_key_suffix" do
|
1104
974
|
|
1105
975
|
it "returns _id" do
|
1106
|
-
described_class.foreign_key_suffix.
|
976
|
+
expect(described_class.foreign_key_suffix).to eq("_id")
|
1107
977
|
end
|
1108
978
|
end
|
1109
979
|
|
1110
980
|
describe ".macro" do
|
1111
981
|
|
1112
982
|
it "returns belongs_to" do
|
1113
|
-
described_class.macro.
|
983
|
+
expect(described_class.macro).to eq(:belongs_to)
|
1114
984
|
end
|
1115
985
|
end
|
1116
986
|
|
@@ -1133,7 +1003,7 @@ describe Mongoid::Relations::Referenced::In do
|
|
1133
1003
|
context "when checking #{method}" do
|
1134
1004
|
|
1135
1005
|
it "returns true" do
|
1136
|
-
document.respond_to?(method).
|
1006
|
+
expect(document.respond_to?(method)).to be true
|
1137
1007
|
end
|
1138
1008
|
end
|
1139
1009
|
end
|
@@ -1142,14 +1012,14 @@ describe Mongoid::Relations::Referenced::In do
|
|
1142
1012
|
describe ".stores_foreign_key?" do
|
1143
1013
|
|
1144
1014
|
it "returns true" do
|
1145
|
-
described_class.stores_foreign_key
|
1015
|
+
expect(described_class.stores_foreign_key?).to be true
|
1146
1016
|
end
|
1147
1017
|
end
|
1148
1018
|
|
1149
1019
|
describe ".valid_options" do
|
1150
1020
|
|
1151
1021
|
it "returns the valid options" do
|
1152
|
-
described_class.valid_options.
|
1022
|
+
expect(described_class.valid_options).to eq(
|
1153
1023
|
[
|
1154
1024
|
:autobuild,
|
1155
1025
|
:autosave,
|
@@ -1167,7 +1037,7 @@ describe Mongoid::Relations::Referenced::In do
|
|
1167
1037
|
describe ".validation_default" do
|
1168
1038
|
|
1169
1039
|
it "returns false" do
|
1170
|
-
described_class.validation_default.
|
1040
|
+
expect(described_class.validation_default).to be false
|
1171
1041
|
end
|
1172
1042
|
end
|
1173
1043
|
|
@@ -1188,11 +1058,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
1188
1058
|
end
|
1189
1059
|
|
1190
1060
|
it "sets the parent" do
|
1191
|
-
game_one.parent.
|
1061
|
+
expect(game_one.parent).to eq(game_two)
|
1192
1062
|
end
|
1193
1063
|
|
1194
1064
|
it "does not set the parent recursively" do
|
1195
|
-
game_two.parent.
|
1065
|
+
expect(game_two.parent).to be_nil
|
1196
1066
|
end
|
1197
1067
|
end
|
1198
1068
|
end
|
@@ -1254,7 +1124,7 @@ describe Mongoid::Relations::Referenced::In do
|
|
1254
1124
|
end
|
1255
1125
|
|
1256
1126
|
it "allows the reset of the has one" do
|
1257
|
-
b.c.
|
1127
|
+
expect(b.c).to eq(c)
|
1258
1128
|
end
|
1259
1129
|
end
|
1260
1130
|
end
|
@@ -1281,19 +1151,19 @@ describe Mongoid::Relations::Referenced::In do
|
|
1281
1151
|
end
|
1282
1152
|
|
1283
1153
|
it "clones the relation" do
|
1284
|
-
post.person.
|
1154
|
+
expect(post.person).to eq(person)
|
1285
1155
|
end
|
1286
1156
|
|
1287
1157
|
it "sets the foreign key" do
|
1288
|
-
post.person_id.
|
1158
|
+
expect(post.person_id).to eq(person.id)
|
1289
1159
|
end
|
1290
1160
|
|
1291
1161
|
it "does not remove the previous relation" do
|
1292
|
-
game.person.
|
1162
|
+
expect(game.person).to eq(person)
|
1293
1163
|
end
|
1294
1164
|
|
1295
1165
|
it "does not remove the previous foreign key" do
|
1296
|
-
game.person_id.
|
1166
|
+
expect(game.person_id).to eq(person.id)
|
1297
1167
|
end
|
1298
1168
|
|
1299
1169
|
context "when reloading" do
|
@@ -1304,19 +1174,19 @@ describe Mongoid::Relations::Referenced::In do
|
|
1304
1174
|
end
|
1305
1175
|
|
1306
1176
|
it "persists the relation" do
|
1307
|
-
post.reload.person.
|
1177
|
+
expect(post.reload.person).to eq(person)
|
1308
1178
|
end
|
1309
1179
|
|
1310
1180
|
it "persists the foreign key" do
|
1311
|
-
post.reload.person_id.
|
1181
|
+
expect(post.reload.person_id).to eq(game.person_id)
|
1312
1182
|
end
|
1313
1183
|
|
1314
1184
|
it "does not remove the previous relation" do
|
1315
|
-
game.person.
|
1185
|
+
expect(game.person).to eq(person)
|
1316
1186
|
end
|
1317
1187
|
|
1318
1188
|
it "does not remove the previous foreign key" do
|
1319
|
-
game.person_id.
|
1189
|
+
expect(game.person_id).to eq(person.id)
|
1320
1190
|
end
|
1321
1191
|
end
|
1322
1192
|
end
|
@@ -1338,11 +1208,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
1338
1208
|
end
|
1339
1209
|
|
1340
1210
|
it "sets the correct has one" do
|
1341
|
-
comment.account.
|
1211
|
+
expect(comment.account).to eq(account)
|
1342
1212
|
end
|
1343
1213
|
|
1344
1214
|
it "sets the correct has many" do
|
1345
|
-
comment.movie.
|
1215
|
+
expect(comment.movie).to eq(movie)
|
1346
1216
|
end
|
1347
1217
|
end
|
1348
1218
|
end
|
@@ -1378,11 +1248,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
1378
1248
|
end
|
1379
1249
|
|
1380
1250
|
it "reloads the document from the database" do
|
1381
|
-
reloaded.title.
|
1251
|
+
expect(reloaded.title).to eq("Madam")
|
1382
1252
|
end
|
1383
1253
|
|
1384
1254
|
it "sets a new document instance" do
|
1385
|
-
reloaded.
|
1255
|
+
expect(reloaded).to_not equal(person_one)
|
1386
1256
|
end
|
1387
1257
|
end
|
1388
1258
|
|
@@ -1398,56 +1268,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
1398
1268
|
end
|
1399
1269
|
|
1400
1270
|
it "reloads the new document from the database" do
|
1401
|
-
reloaded.title.
|
1271
|
+
expect(reloaded.title).to eq("Sir")
|
1402
1272
|
end
|
1403
1273
|
|
1404
1274
|
it "sets a new document instance" do
|
1405
|
-
reloaded.
|
1406
|
-
end
|
1407
|
-
end
|
1408
|
-
end
|
1409
|
-
|
1410
|
-
context "when the parent and child are persisted" do
|
1411
|
-
|
1412
|
-
context "when the identity map is enabled" do
|
1413
|
-
|
1414
|
-
before do
|
1415
|
-
Mongoid.identity_map_enabled = true
|
1416
|
-
end
|
1417
|
-
|
1418
|
-
after do
|
1419
|
-
Mongoid.identity_map_enabled = false
|
1420
|
-
end
|
1421
|
-
|
1422
|
-
let(:series) do
|
1423
|
-
Series.create
|
1424
|
-
end
|
1425
|
-
|
1426
|
-
let!(:book_one) do
|
1427
|
-
series.books.create
|
1428
|
-
end
|
1429
|
-
|
1430
|
-
let!(:book_two) do
|
1431
|
-
series.books.create
|
1432
|
-
end
|
1433
|
-
|
1434
|
-
let(:id) do
|
1435
|
-
Book.first.id
|
1436
|
-
end
|
1437
|
-
|
1438
|
-
context "when asking for the inverse multiple times" do
|
1439
|
-
|
1440
|
-
before do
|
1441
|
-
Book.find(id).series.books.to_a
|
1442
|
-
end
|
1443
|
-
|
1444
|
-
it "does not append and save duplicate docs" do
|
1445
|
-
Book.find(id).series.books.to_a.length.should eq(2)
|
1446
|
-
end
|
1447
|
-
|
1448
|
-
it "returns the same documents from the map" do
|
1449
|
-
Book.find(id).should equal(Book.find(id))
|
1450
|
-
end
|
1275
|
+
expect(reloaded).to_not equal(person_one)
|
1451
1276
|
end
|
1452
1277
|
end
|
1453
1278
|
end
|
@@ -1465,11 +1290,11 @@ describe Mongoid::Relations::Referenced::In do
|
|
1465
1290
|
end
|
1466
1291
|
|
1467
1292
|
it "allows strings to be passed as the id" do
|
1468
|
-
cookie.jar.
|
1293
|
+
expect(cookie.jar).to eq(jar)
|
1469
1294
|
end
|
1470
1295
|
|
1471
1296
|
it "persists the relation" do
|
1472
|
-
cookie.reload.jar.
|
1297
|
+
expect(cookie.reload.jar).to eq(jar)
|
1473
1298
|
end
|
1474
1299
|
end
|
1475
1300
|
|
@@ -1494,7 +1319,7 @@ describe Mongoid::Relations::Referenced::In do
|
|
1494
1319
|
end
|
1495
1320
|
|
1496
1321
|
it "sets the new document on the relation" do
|
1497
|
-
game.person.
|
1322
|
+
expect(game.person).to eq(person_two)
|
1498
1323
|
end
|
1499
1324
|
end
|
1500
1325
|
end
|