mongoid 3.1.7 → 4.0.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +0 -2
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +9 -9
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +15 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/criterion/findable.rb +0 -179
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/draft.rb +0 -9
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/#atomic_spec.rb# +0 -365
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::
|
3
|
+
describe Mongoid::Attributes::Nested do
|
4
4
|
|
5
5
|
describe ".accepts_nested_attributes_for" do
|
6
6
|
|
@@ -65,7 +65,7 @@ describe Mongoid::NestedAttributes do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
it "sets the nested attributes" do
|
68
|
-
person.name.first_name.
|
68
|
+
expect(person.name.first_name).to eq("Johnny")
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -81,7 +81,7 @@ describe Mongoid::NestedAttributes do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
it "sets the nested attributes" do
|
84
|
-
person.addresses.first.street.
|
84
|
+
expect(person.addresses.first.street).to eq("Alexanderstr")
|
85
85
|
end
|
86
86
|
|
87
87
|
context "when there are 10 or more child records" do
|
@@ -97,7 +97,7 @@ describe Mongoid::NestedAttributes do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it "preserves the order of the children" do
|
100
|
-
person.addresses.map(&:number).
|
100
|
+
expect(person.addresses.map(&:number)).to eq((0..10).to_a)
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
@@ -113,7 +113,7 @@ describe Mongoid::NestedAttributes do
|
|
113
113
|
end
|
114
114
|
|
115
115
|
it "sets the nested attributes" do
|
116
|
-
video.person.title.
|
116
|
+
expect(video.person.title).to eq("Sir")
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
@@ -129,7 +129,7 @@ describe Mongoid::NestedAttributes do
|
|
129
129
|
end
|
130
130
|
|
131
131
|
it "sets the nested attributes" do
|
132
|
-
person.game.name.
|
132
|
+
expect(person.game.name).to eq("Tron")
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
@@ -145,7 +145,7 @@ describe Mongoid::NestedAttributes do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
it "sets the nested attributes" do
|
148
|
-
person.posts.first.title.
|
148
|
+
expect(person.posts.first.title).to eq("First")
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
@@ -161,7 +161,7 @@ describe Mongoid::NestedAttributes do
|
|
161
161
|
end
|
162
162
|
|
163
163
|
it "sets the nested attributes" do
|
164
|
-
person.preferences.first.name.
|
164
|
+
expect(person.preferences.first.name).to eq("First")
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
@@ -176,7 +176,7 @@ describe Mongoid::NestedAttributes do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
it "sets the nested attributes" do
|
179
|
-
post.person.title.
|
179
|
+
expect(post.person.title).to eq("Sir")
|
180
180
|
end
|
181
181
|
end
|
182
182
|
end
|
@@ -210,11 +210,11 @@ describe Mongoid::NestedAttributes do
|
|
210
210
|
end
|
211
211
|
|
212
212
|
it "sets the child document" do
|
213
|
-
person.name.last_name.
|
213
|
+
expect(person.name.last_name).to eq("Fischer")
|
214
214
|
end
|
215
215
|
|
216
216
|
it "does not persist the child document" do
|
217
|
-
person.name.
|
217
|
+
expect(person.name).to_not be_persisted
|
218
218
|
end
|
219
219
|
|
220
220
|
context "when saving the parent" do
|
@@ -225,7 +225,7 @@ describe Mongoid::NestedAttributes do
|
|
225
225
|
end
|
226
226
|
|
227
227
|
it "persists the child document" do
|
228
|
-
person.name.
|
228
|
+
expect(person.name).to be_persisted
|
229
229
|
end
|
230
230
|
end
|
231
231
|
end
|
@@ -255,7 +255,7 @@ describe Mongoid::NestedAttributes do
|
|
255
255
|
end
|
256
256
|
|
257
257
|
it "does not add the document" do
|
258
|
-
person.name.
|
258
|
+
expect(person.name).to be_nil
|
259
259
|
end
|
260
260
|
end
|
261
261
|
|
@@ -266,7 +266,7 @@ describe Mongoid::NestedAttributes do
|
|
266
266
|
end
|
267
267
|
|
268
268
|
it "adds the document" do
|
269
|
-
person.name.first_name.
|
269
|
+
expect(person.name.first_name).to eq("Lang")
|
270
270
|
end
|
271
271
|
end
|
272
272
|
end
|
@@ -293,7 +293,7 @@ describe Mongoid::NestedAttributes do
|
|
293
293
|
end
|
294
294
|
|
295
295
|
it "does not add the document" do
|
296
|
-
person.name.
|
296
|
+
expect(person.name).to be_nil
|
297
297
|
end
|
298
298
|
end
|
299
299
|
|
@@ -304,7 +304,7 @@ describe Mongoid::NestedAttributes do
|
|
304
304
|
end
|
305
305
|
|
306
306
|
it "adds the document" do
|
307
|
-
person.name.first_name.
|
307
|
+
expect(person.name.first_name).to eq("Lang")
|
308
308
|
end
|
309
309
|
end
|
310
310
|
end
|
@@ -326,7 +326,7 @@ describe Mongoid::NestedAttributes do
|
|
326
326
|
end
|
327
327
|
|
328
328
|
it "does not add the document" do
|
329
|
-
product.seo.
|
329
|
+
expect(product.seo).to_not be_persisted
|
330
330
|
end
|
331
331
|
end
|
332
332
|
end
|
@@ -341,7 +341,7 @@ describe Mongoid::NestedAttributes do
|
|
341
341
|
end
|
342
342
|
|
343
343
|
it "builds a new document" do
|
344
|
-
person.name.first_name.
|
344
|
+
expect(person.name.first_name).to eq("Leo")
|
345
345
|
end
|
346
346
|
end
|
347
347
|
|
@@ -366,7 +366,7 @@ describe Mongoid::NestedAttributes do
|
|
366
366
|
end
|
367
367
|
|
368
368
|
it "does not build the document" do
|
369
|
-
person.name.
|
369
|
+
expect(person.name).to be_nil
|
370
370
|
end
|
371
371
|
end
|
372
372
|
|
@@ -377,7 +377,7 @@ describe Mongoid::NestedAttributes do
|
|
377
377
|
end
|
378
378
|
|
379
379
|
it "does not build the document" do
|
380
|
-
person.name.
|
380
|
+
expect(person.name).to be_nil
|
381
381
|
end
|
382
382
|
end
|
383
383
|
end
|
@@ -399,7 +399,7 @@ describe Mongoid::NestedAttributes do
|
|
399
399
|
end
|
400
400
|
|
401
401
|
it "builds the document" do
|
402
|
-
person.name.first_name.
|
402
|
+
expect(person.name.first_name).to eq("Leo")
|
403
403
|
end
|
404
404
|
end
|
405
405
|
end
|
@@ -411,7 +411,7 @@ describe Mongoid::NestedAttributes do
|
|
411
411
|
end
|
412
412
|
|
413
413
|
it "does not build the document" do
|
414
|
-
person.name.
|
414
|
+
expect(person.name).to be_nil
|
415
415
|
end
|
416
416
|
end
|
417
417
|
|
@@ -425,7 +425,7 @@ describe Mongoid::NestedAttributes do
|
|
425
425
|
end
|
426
426
|
|
427
427
|
it "replaces the document" do
|
428
|
-
person.name.first_name.
|
428
|
+
expect(person.name.first_name).to eq("Jack")
|
429
429
|
end
|
430
430
|
end
|
431
431
|
|
@@ -449,7 +449,7 @@ describe Mongoid::NestedAttributes do
|
|
449
449
|
end
|
450
450
|
|
451
451
|
it "does not replace the document" do
|
452
|
-
person.name.first_name.
|
452
|
+
expect(person.name.first_name).to eq("Michael")
|
453
453
|
end
|
454
454
|
end
|
455
455
|
|
@@ -471,7 +471,7 @@ describe Mongoid::NestedAttributes do
|
|
471
471
|
end
|
472
472
|
|
473
473
|
it "replaces the document" do
|
474
|
-
person.name.first_name.
|
474
|
+
expect(person.name.first_name).to eq("Jack")
|
475
475
|
end
|
476
476
|
end
|
477
477
|
end
|
@@ -500,7 +500,7 @@ describe Mongoid::NestedAttributes do
|
|
500
500
|
end
|
501
501
|
|
502
502
|
it "updates the existing document" do
|
503
|
-
person.name.first_name.
|
503
|
+
expect(person.name.first_name).to eq("Bob")
|
504
504
|
end
|
505
505
|
end
|
506
506
|
|
@@ -512,7 +512,7 @@ describe Mongoid::NestedAttributes do
|
|
512
512
|
end
|
513
513
|
|
514
514
|
it "updates the existing document" do
|
515
|
-
person.name.first_name.
|
515
|
+
expect(person.name.first_name).to eq("Bob")
|
516
516
|
end
|
517
517
|
end
|
518
518
|
|
@@ -540,7 +540,7 @@ describe Mongoid::NestedAttributes do
|
|
540
540
|
end
|
541
541
|
|
542
542
|
it "destroys the existing document" do
|
543
|
-
person.name.
|
543
|
+
expect(person.name).to be_nil
|
544
544
|
end
|
545
545
|
end
|
546
546
|
|
@@ -568,11 +568,11 @@ describe Mongoid::NestedAttributes do
|
|
568
568
|
end
|
569
569
|
|
570
570
|
it "destroys the existing document" do
|
571
|
-
owner.pet.
|
571
|
+
expect(owner.pet).to be_nil
|
572
572
|
end
|
573
573
|
|
574
574
|
it "runs the destroy callbacks" do
|
575
|
-
pet.destroy_flag.
|
575
|
+
expect(pet.destroy_flag).to be true
|
576
576
|
end
|
577
577
|
end
|
578
578
|
end
|
@@ -588,7 +588,7 @@ describe Mongoid::NestedAttributes do
|
|
588
588
|
end
|
589
589
|
|
590
590
|
it "does not destroy the existing document" do
|
591
|
-
person.name.
|
591
|
+
expect(person.name).to eq(name)
|
592
592
|
end
|
593
593
|
end
|
594
594
|
end
|
@@ -614,7 +614,7 @@ describe Mongoid::NestedAttributes do
|
|
614
614
|
end
|
615
615
|
|
616
616
|
it "does not destroy the document" do
|
617
|
-
person.name.
|
617
|
+
expect(person.name).to eq(name)
|
618
618
|
end
|
619
619
|
end
|
620
620
|
end
|
@@ -642,7 +642,7 @@ describe Mongoid::NestedAttributes do
|
|
642
642
|
end
|
643
643
|
|
644
644
|
it "updates the existing document" do
|
645
|
-
person.name.first_name.
|
645
|
+
expect(person.name.first_name).to eq("Ro")
|
646
646
|
end
|
647
647
|
end
|
648
648
|
|
@@ -650,11 +650,11 @@ describe Mongoid::NestedAttributes do
|
|
650
650
|
|
651
651
|
before do
|
652
652
|
person.name_attributes =
|
653
|
-
{ id:
|
653
|
+
{ id: BSON::ObjectId.new.to_s, first_name: "Durran" }
|
654
654
|
end
|
655
655
|
|
656
656
|
it "updates the existing document" do
|
657
|
-
person.name.first_name.
|
657
|
+
expect(person.name.first_name).to eq("Durran")
|
658
658
|
end
|
659
659
|
end
|
660
660
|
|
@@ -666,7 +666,7 @@ describe Mongoid::NestedAttributes do
|
|
666
666
|
end
|
667
667
|
|
668
668
|
it "destroys the existing document" do
|
669
|
-
person.name.
|
669
|
+
expect(person.name).to be_nil
|
670
670
|
end
|
671
671
|
end
|
672
672
|
end
|
@@ -684,7 +684,7 @@ describe Mongoid::NestedAttributes do
|
|
684
684
|
end
|
685
685
|
|
686
686
|
it "updates the existing document" do
|
687
|
-
person.quiz.topic.
|
687
|
+
expect(person.quiz.topic).to eq("English")
|
688
688
|
end
|
689
689
|
end
|
690
690
|
end
|
@@ -706,8 +706,8 @@ describe Mongoid::NestedAttributes do
|
|
706
706
|
end
|
707
707
|
|
708
708
|
it "propagates invalidity to parent" do
|
709
|
-
person.pet.
|
710
|
-
person.
|
709
|
+
expect(person.pet).to_not be_valid
|
710
|
+
expect(person).to_not be_valid
|
711
711
|
end
|
712
712
|
end
|
713
713
|
|
@@ -724,7 +724,7 @@ describe Mongoid::NestedAttributes do
|
|
724
724
|
end
|
725
725
|
|
726
726
|
it "instantiates an object of the given type" do
|
727
|
-
canvas.writer.class.
|
727
|
+
expect(canvas.writer.class).to eq(HtmlWriter)
|
728
728
|
end
|
729
729
|
end
|
730
730
|
end
|
@@ -746,7 +746,7 @@ describe Mongoid::NestedAttributes do
|
|
746
746
|
end
|
747
747
|
|
748
748
|
it "builds a new document" do
|
749
|
-
animal.person.title.
|
749
|
+
expect(animal.person.title).to eq("Sir")
|
750
750
|
end
|
751
751
|
|
752
752
|
end
|
@@ -770,7 +770,7 @@ describe Mongoid::NestedAttributes do
|
|
770
770
|
end
|
771
771
|
|
772
772
|
it "does not build a new document" do
|
773
|
-
animal.person.
|
773
|
+
expect(animal.person).to be_nil
|
774
774
|
end
|
775
775
|
end
|
776
776
|
|
@@ -791,7 +791,7 @@ describe Mongoid::NestedAttributes do
|
|
791
791
|
end
|
792
792
|
|
793
793
|
it "builds a new document" do
|
794
|
-
animal.person.title.
|
794
|
+
expect(animal.person.title).to eq("Sir")
|
795
795
|
end
|
796
796
|
end
|
797
797
|
end
|
@@ -812,7 +812,7 @@ describe Mongoid::NestedAttributes do
|
|
812
812
|
end
|
813
813
|
|
814
814
|
it "updates the existing document" do
|
815
|
-
animal.person.title.
|
815
|
+
expect(animal.person.title).to eq("Sir")
|
816
816
|
end
|
817
817
|
end
|
818
818
|
end
|
@@ -845,7 +845,7 @@ describe Mongoid::NestedAttributes do
|
|
845
845
|
end
|
846
846
|
|
847
847
|
it "destroys the existing document" do
|
848
|
-
animal.person.
|
848
|
+
expect(animal.person).to be_nil
|
849
849
|
end
|
850
850
|
end
|
851
851
|
end
|
@@ -860,7 +860,7 @@ describe Mongoid::NestedAttributes do
|
|
860
860
|
end
|
861
861
|
|
862
862
|
it "does not destroy the existing document" do
|
863
|
-
animal.person.
|
863
|
+
expect(animal.person).to eq(person)
|
864
864
|
end
|
865
865
|
end
|
866
866
|
end
|
@@ -886,7 +886,7 @@ describe Mongoid::NestedAttributes do
|
|
886
886
|
end
|
887
887
|
|
888
888
|
it "does not delete the document" do
|
889
|
-
animal.person.
|
889
|
+
expect(animal.person).to eq(person)
|
890
890
|
end
|
891
891
|
end
|
892
892
|
end
|
@@ -909,7 +909,7 @@ describe Mongoid::NestedAttributes do
|
|
909
909
|
end
|
910
910
|
|
911
911
|
it "updates the existing document" do
|
912
|
-
animal.person.title.
|
912
|
+
expect(animal.person.title).to eq("Madam")
|
913
913
|
end
|
914
914
|
end
|
915
915
|
|
@@ -917,11 +917,11 @@ describe Mongoid::NestedAttributes do
|
|
917
917
|
|
918
918
|
before do
|
919
919
|
animal.person_attributes =
|
920
|
-
{ id:
|
920
|
+
{ id: BSON::ObjectId.new.to_s, title: "Madam" }
|
921
921
|
end
|
922
922
|
|
923
923
|
it "updates the existing document" do
|
924
|
-
animal.person.title.
|
924
|
+
expect(animal.person.title).to eq("Madam")
|
925
925
|
end
|
926
926
|
end
|
927
927
|
|
@@ -933,7 +933,7 @@ describe Mongoid::NestedAttributes do
|
|
933
933
|
end
|
934
934
|
|
935
935
|
it "deletes the existing document" do
|
936
|
-
animal.person.
|
936
|
+
expect(animal.person).to be_nil
|
937
937
|
end
|
938
938
|
end
|
939
939
|
end
|
@@ -955,8 +955,8 @@ describe Mongoid::NestedAttributes do
|
|
955
955
|
end
|
956
956
|
|
957
957
|
it "does not propagate invalidity to parent" do
|
958
|
-
animal.person.
|
959
|
-
animal.
|
958
|
+
expect(animal.person).to_not be_valid
|
959
|
+
expect(animal).to be_valid
|
960
960
|
end
|
961
961
|
end
|
962
962
|
end
|
@@ -972,7 +972,7 @@ describe Mongoid::NestedAttributes do
|
|
972
972
|
end
|
973
973
|
|
974
974
|
it "instantiates an object of the given type" do
|
975
|
-
tool.palette.class.
|
975
|
+
expect(tool.palette.class).to eq(BigPalette)
|
976
976
|
end
|
977
977
|
end
|
978
978
|
end
|
@@ -1006,11 +1006,11 @@ describe Mongoid::NestedAttributes do
|
|
1006
1006
|
end
|
1007
1007
|
|
1008
1008
|
it "sets the child documents" do
|
1009
|
-
person.addresses.first.street.
|
1009
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
1010
1010
|
end
|
1011
1011
|
|
1012
1012
|
it "does not persist the child documents" do
|
1013
|
-
person.addresses.first.
|
1013
|
+
expect(person.addresses.first).to_not be_persisted
|
1014
1014
|
end
|
1015
1015
|
|
1016
1016
|
context "when saving the parent" do
|
@@ -1021,7 +1021,7 @@ describe Mongoid::NestedAttributes do
|
|
1021
1021
|
end
|
1022
1022
|
|
1023
1023
|
it "saves the child documents" do
|
1024
|
-
person.addresses.first.
|
1024
|
+
expect(person.addresses.first).to be_persisted
|
1025
1025
|
end
|
1026
1026
|
end
|
1027
1027
|
end
|
@@ -1039,14 +1039,6 @@ describe Mongoid::NestedAttributes do
|
|
1039
1039
|
Address.new(street: "Kurfeurstendamm")
|
1040
1040
|
end
|
1041
1041
|
|
1042
|
-
let(:phone_one) do
|
1043
|
-
ParanoidPhone.new(number: "1")
|
1044
|
-
end
|
1045
|
-
|
1046
|
-
let(:phone_two) do
|
1047
|
-
ParanoidPhone.new(number: "2")
|
1048
|
-
end
|
1049
|
-
|
1050
1042
|
context "when a limit is specified" do
|
1051
1043
|
|
1052
1044
|
before(:all) do
|
@@ -1090,7 +1082,7 @@ describe Mongoid::NestedAttributes do
|
|
1090
1082
|
end
|
1091
1083
|
|
1092
1084
|
it "sets the documents on the relation" do
|
1093
|
-
person.addresses.size.
|
1085
|
+
expect(person.addresses.size).to eq(2)
|
1094
1086
|
end
|
1095
1087
|
end
|
1096
1088
|
|
@@ -1108,7 +1100,7 @@ describe Mongoid::NestedAttributes do
|
|
1108
1100
|
end
|
1109
1101
|
|
1110
1102
|
it "sets the documents on the relation" do
|
1111
|
-
person.addresses.size.
|
1103
|
+
expect(person.addresses.size).to eq(2)
|
1112
1104
|
end
|
1113
1105
|
end
|
1114
1106
|
|
@@ -1144,11 +1136,11 @@ describe Mongoid::NestedAttributes do
|
|
1144
1136
|
end
|
1145
1137
|
|
1146
1138
|
it "runs the first child create callbacks" do
|
1147
|
-
band.records.first.before_create_called.
|
1139
|
+
expect(band.records.first.before_create_called).to be true
|
1148
1140
|
end
|
1149
1141
|
|
1150
1142
|
it "runs the last child create callbacks" do
|
1151
|
-
band.records.last.before_create_called.
|
1143
|
+
expect(band.records.last.before_create_called).to be true
|
1152
1144
|
end
|
1153
1145
|
end
|
1154
1146
|
end
|
@@ -1173,15 +1165,15 @@ describe Mongoid::NestedAttributes do
|
|
1173
1165
|
end
|
1174
1166
|
|
1175
1167
|
it "updates the first existing document" do
|
1176
|
-
person.addresses.first.street.
|
1168
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
1177
1169
|
end
|
1178
1170
|
|
1179
1171
|
it "updates the second existing document" do
|
1180
|
-
person.addresses.second.street.
|
1172
|
+
expect(person.addresses.second.street).to eq("Alexander Platz")
|
1181
1173
|
end
|
1182
1174
|
|
1183
1175
|
it "does not add new documents" do
|
1184
|
-
person.addresses.size.
|
1176
|
+
expect(person.addresses.size).to eq(2)
|
1185
1177
|
end
|
1186
1178
|
end
|
1187
1179
|
|
@@ -1198,15 +1190,15 @@ describe Mongoid::NestedAttributes do
|
|
1198
1190
|
end
|
1199
1191
|
|
1200
1192
|
it "updates the first existing document" do
|
1201
|
-
person.addresses.collect { |a| a['street'] }.
|
1193
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Maybachufer')
|
1202
1194
|
end
|
1203
1195
|
|
1204
1196
|
it "updates the second existing document" do
|
1205
|
-
person.addresses.collect { |a| a['street'] }.
|
1197
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Alexander Platz')
|
1206
1198
|
end
|
1207
1199
|
|
1208
1200
|
it "does not add new documents" do
|
1209
|
-
person.addresses.size.
|
1201
|
+
expect(person.addresses.size).to eq(2)
|
1210
1202
|
end
|
1211
1203
|
end
|
1212
1204
|
|
@@ -1221,15 +1213,15 @@ describe Mongoid::NestedAttributes do
|
|
1221
1213
|
end
|
1222
1214
|
|
1223
1215
|
it "updates the first existing document" do
|
1224
|
-
person.addresses.collect { |a| a['street'] }.
|
1216
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Maybachufer')
|
1225
1217
|
end
|
1226
1218
|
|
1227
1219
|
it "updates the second existing document" do
|
1228
|
-
person.addresses.collect { |a| a['street'] }.
|
1220
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Alexander Platz')
|
1229
1221
|
end
|
1230
1222
|
|
1231
1223
|
it "does not add new documents" do
|
1232
|
-
person.addresses.size.
|
1224
|
+
expect(person.addresses.size).to eq(2)
|
1233
1225
|
end
|
1234
1226
|
end
|
1235
1227
|
end
|
@@ -1245,15 +1237,15 @@ describe Mongoid::NestedAttributes do
|
|
1245
1237
|
end
|
1246
1238
|
|
1247
1239
|
it "updates the first existing document" do
|
1248
|
-
person.addresses.collect { |a| a['street'] }.
|
1240
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Maybachufer')
|
1249
1241
|
end
|
1250
1242
|
|
1251
1243
|
it "updates the second existing document" do
|
1252
|
-
person.addresses.collect { |a| a['street'] }.
|
1244
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Alexander Platz')
|
1253
1245
|
end
|
1254
1246
|
|
1255
1247
|
it "does not add new documents" do
|
1256
|
-
person.addresses.size.
|
1248
|
+
expect(person.addresses.size).to eq(2)
|
1257
1249
|
end
|
1258
1250
|
end
|
1259
1251
|
|
@@ -1268,15 +1260,15 @@ describe Mongoid::NestedAttributes do
|
|
1268
1260
|
end
|
1269
1261
|
|
1270
1262
|
it "updates the first existing document" do
|
1271
|
-
person.addresses.collect { |a| a['street'] }.
|
1263
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Maybachufer')
|
1272
1264
|
end
|
1273
1265
|
|
1274
1266
|
it "updates the second existing document" do
|
1275
|
-
person.addresses.collect { |a| a['street'] }.
|
1267
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Alexander Platz')
|
1276
1268
|
end
|
1277
1269
|
|
1278
1270
|
it "does not add new documents" do
|
1279
|
-
person.addresses.size.
|
1271
|
+
expect(person.addresses.size).to eq(2)
|
1280
1272
|
end
|
1281
1273
|
end
|
1282
1274
|
|
@@ -1291,15 +1283,15 @@ describe Mongoid::NestedAttributes do
|
|
1291
1283
|
end
|
1292
1284
|
|
1293
1285
|
it "updates the first existing document" do
|
1294
|
-
person.addresses.collect { |a| a['street'] }.
|
1286
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Maybachufer')
|
1295
1287
|
end
|
1296
1288
|
|
1297
1289
|
it "updates the second existing document" do
|
1298
|
-
person.addresses.collect { |a| a['street'] }.
|
1290
|
+
expect(person.addresses.collect { |a| a['street'] }).to include('Alexander Platz')
|
1299
1291
|
end
|
1300
1292
|
|
1301
1293
|
it "does not add new documents" do
|
1302
|
-
person.addresses.size.
|
1294
|
+
expect(person.addresses.size).to eq(2)
|
1303
1295
|
end
|
1304
1296
|
end
|
1305
1297
|
|
@@ -1352,15 +1344,15 @@ describe Mongoid::NestedAttributes do
|
|
1352
1344
|
end
|
1353
1345
|
|
1354
1346
|
it "does not remove the child document" do
|
1355
|
-
band.records.
|
1347
|
+
expect(band.records).to_not be_empty
|
1356
1348
|
end
|
1357
1349
|
|
1358
1350
|
it "keeps the child flagged for destruction" do
|
1359
|
-
record.
|
1351
|
+
expect(record).to be_flagged_for_destroy
|
1360
1352
|
end
|
1361
1353
|
|
1362
1354
|
it "does not persist any change" do
|
1363
|
-
band.reload.records.
|
1355
|
+
expect(band.reload.records).to eq([ record ])
|
1364
1356
|
end
|
1365
1357
|
end
|
1366
1358
|
|
@@ -1389,11 +1381,11 @@ describe Mongoid::NestedAttributes do
|
|
1389
1381
|
end
|
1390
1382
|
|
1391
1383
|
it "deletes the child document" do
|
1392
|
-
band.records.
|
1384
|
+
expect(band.records).to be_empty
|
1393
1385
|
end
|
1394
1386
|
|
1395
1387
|
it "persists the changes" do
|
1396
|
-
band.reload.records.
|
1388
|
+
expect(band.reload.records).to be_empty
|
1397
1389
|
end
|
1398
1390
|
end
|
1399
1391
|
|
@@ -1415,31 +1407,6 @@ describe Mongoid::NestedAttributes do
|
|
1415
1407
|
|
1416
1408
|
context "when the child returns false in a before callback" do
|
1417
1409
|
|
1418
|
-
context "when the child is paranoid" do
|
1419
|
-
|
1420
|
-
before(:all) do
|
1421
|
-
Person.accepts_nested_attributes_for :paranoid_phones, allow_destroy: true
|
1422
|
-
end
|
1423
|
-
|
1424
|
-
after(:all) do
|
1425
|
-
Person.send(:undef_method, :paranoid_phones=)
|
1426
|
-
Person.accepts_nested_attributes_for :paranoid_phones
|
1427
|
-
end
|
1428
|
-
|
1429
|
-
let!(:phone) do
|
1430
|
-
persisted.paranoid_phones.create
|
1431
|
-
end
|
1432
|
-
|
1433
|
-
before do
|
1434
|
-
persisted.paranoid_phones_attributes =
|
1435
|
-
{ "foo" => { "id" => phone.id, "number" => 42, "_destroy" => true }}
|
1436
|
-
end
|
1437
|
-
|
1438
|
-
it "does not destroy the child" do
|
1439
|
-
persisted.reload.paranoid_phones.should_not be_empty
|
1440
|
-
end
|
1441
|
-
end
|
1442
|
-
|
1443
1410
|
context "when the child is not paranoid" do
|
1444
1411
|
|
1445
1412
|
let(:actor) do
|
@@ -1457,7 +1424,7 @@ describe Mongoid::NestedAttributes do
|
|
1457
1424
|
end
|
1458
1425
|
|
1459
1426
|
it "does not destroy the child" do
|
1460
|
-
actor.reload.things.
|
1427
|
+
expect(actor.reload.things).to_not be_empty
|
1461
1428
|
end
|
1462
1429
|
end
|
1463
1430
|
end
|
@@ -1490,11 +1457,11 @@ describe Mongoid::NestedAttributes do
|
|
1490
1457
|
end
|
1491
1458
|
|
1492
1459
|
it "destroys both children" do
|
1493
|
-
from_db.appointments.
|
1460
|
+
expect(from_db.appointments).to be_empty
|
1494
1461
|
end
|
1495
1462
|
|
1496
1463
|
it "persists the deletes" do
|
1497
|
-
from_db.reload.appointments.
|
1464
|
+
expect(from_db.reload.appointments).to be_empty
|
1498
1465
|
end
|
1499
1466
|
end
|
1500
1467
|
end
|
@@ -1530,11 +1497,11 @@ describe Mongoid::NestedAttributes do
|
|
1530
1497
|
end
|
1531
1498
|
|
1532
1499
|
it "deletes the marked document" do
|
1533
|
-
person.addresses.size.
|
1500
|
+
expect(person.addresses.size).to eq(1)
|
1534
1501
|
end
|
1535
1502
|
|
1536
1503
|
it "does not delete the unmarked document" do
|
1537
|
-
person.addresses.first.street.
|
1504
|
+
expect(person.addresses.first.street).to eq("Alexander Platz")
|
1538
1505
|
end
|
1539
1506
|
end
|
1540
1507
|
|
@@ -1549,11 +1516,11 @@ describe Mongoid::NestedAttributes do
|
|
1549
1516
|
end
|
1550
1517
|
|
1551
1518
|
it "deletes the marked document" do
|
1552
|
-
person.addresses.size.
|
1519
|
+
expect(person.addresses.size).to eq(1)
|
1553
1520
|
end
|
1554
1521
|
|
1555
1522
|
it "does not delete the unmarked document" do
|
1556
|
-
person.addresses.first.street.
|
1523
|
+
expect(person.addresses.first.street).to eq("Alexander Platz")
|
1557
1524
|
end
|
1558
1525
|
end
|
1559
1526
|
end
|
@@ -1578,51 +1545,51 @@ describe Mongoid::NestedAttributes do
|
|
1578
1545
|
end
|
1579
1546
|
|
1580
1547
|
it "does not remove the first document from the relation" do
|
1581
|
-
persisted.addresses.size.
|
1548
|
+
expect(persisted.addresses.size).to eq(3)
|
1582
1549
|
end
|
1583
1550
|
|
1584
1551
|
it "flags the destroyed document for removal" do
|
1585
|
-
address_one.
|
1552
|
+
expect(address_one).to be_marked_for_destruction
|
1586
1553
|
end
|
1587
1554
|
|
1588
1555
|
it "does not delete the unmarked document" do
|
1589
|
-
persisted.addresses.second.street.
|
1556
|
+
expect(persisted.addresses.second.street).to eq(
|
1590
1557
|
"Alexander Platz"
|
1591
1558
|
)
|
1592
1559
|
end
|
1593
1560
|
|
1594
1561
|
it "adds the new document to the relation" do
|
1595
|
-
persisted.addresses.last.street.
|
1562
|
+
expect(persisted.addresses.last.street).to eq(
|
1596
1563
|
"Potsdammer Platz"
|
1597
1564
|
)
|
1598
1565
|
end
|
1599
1566
|
|
1600
1567
|
it "has the proper persisted count" do
|
1601
|
-
persisted.addresses.count.
|
1568
|
+
expect(persisted.addresses.count).to eq(2)
|
1602
1569
|
end
|
1603
1570
|
|
1604
1571
|
it "does not delete the removed document" do
|
1605
|
-
address_one.
|
1572
|
+
expect(address_one).to_not be_destroyed
|
1606
1573
|
end
|
1607
1574
|
|
1608
1575
|
context "when saving the parent" do
|
1609
1576
|
|
1610
1577
|
before do
|
1611
|
-
persisted.
|
1578
|
+
persisted.save
|
1612
1579
|
end
|
1613
1580
|
|
1614
1581
|
it "deletes the marked document from the relation" do
|
1615
|
-
persisted.reload.addresses.count.
|
1582
|
+
expect(persisted.reload.addresses.count).to eq(2)
|
1616
1583
|
end
|
1617
1584
|
|
1618
1585
|
it "does not delete the unmarked document" do
|
1619
|
-
persisted.reload.addresses.first.street.
|
1586
|
+
expect(persisted.reload.addresses.first.street).to eq(
|
1620
1587
|
"Alexander Platz"
|
1621
1588
|
)
|
1622
1589
|
end
|
1623
1590
|
|
1624
1591
|
it "persists the new document to the relation" do
|
1625
|
-
persisted.reload.addresses.last.street.
|
1592
|
+
expect(persisted.reload.addresses.last.street).to eq(
|
1626
1593
|
"Potsdammer Platz"
|
1627
1594
|
)
|
1628
1595
|
end
|
@@ -1640,39 +1607,39 @@ describe Mongoid::NestedAttributes do
|
|
1640
1607
|
end
|
1641
1608
|
|
1642
1609
|
it "does not remove the first document from the relation" do
|
1643
|
-
persisted.addresses.size.
|
1610
|
+
expect(persisted.addresses.size).to eq(3)
|
1644
1611
|
end
|
1645
1612
|
|
1646
1613
|
it "marks the first document for destruction" do
|
1647
|
-
address_one.
|
1614
|
+
expect(address_one).to be_marked_for_destruction
|
1648
1615
|
end
|
1649
1616
|
|
1650
1617
|
it "adds the new document to the relation" do
|
1651
|
-
persisted.addresses.last.street.
|
1618
|
+
expect(persisted.addresses.last.street).to eq(
|
1652
1619
|
"Potsdammer Platz"
|
1653
1620
|
)
|
1654
1621
|
end
|
1655
1622
|
|
1656
1623
|
it "has the proper persisted count" do
|
1657
|
-
persisted.addresses.count.
|
1624
|
+
expect(persisted.addresses.count).to eq(2)
|
1658
1625
|
end
|
1659
1626
|
|
1660
1627
|
it "does not delete the removed document" do
|
1661
|
-
address_one.
|
1628
|
+
expect(address_one).to_not be_destroyed
|
1662
1629
|
end
|
1663
1630
|
|
1664
1631
|
context "when saving the parent" do
|
1665
1632
|
|
1666
1633
|
before do
|
1667
|
-
persisted.
|
1634
|
+
persisted.save
|
1668
1635
|
end
|
1669
1636
|
|
1670
1637
|
it "deletes the marked document from the relation" do
|
1671
|
-
persisted.reload.addresses.count.
|
1638
|
+
expect(persisted.reload.addresses.count).to eq(2)
|
1672
1639
|
end
|
1673
1640
|
|
1674
1641
|
it "persists the new document to the relation" do
|
1675
|
-
persisted.reload.addresses.last.street.
|
1642
|
+
expect(persisted.reload.addresses.last.street).to eq(
|
1676
1643
|
"Potsdammer Platz"
|
1677
1644
|
)
|
1678
1645
|
end
|
@@ -1695,91 +1662,11 @@ describe Mongoid::NestedAttributes do
|
|
1695
1662
|
end
|
1696
1663
|
|
1697
1664
|
it "does not delete the marked document" do
|
1698
|
-
person.addresses.size.
|
1665
|
+
expect(person.addresses.size).to eq(2)
|
1699
1666
|
end
|
1700
1667
|
|
1701
1668
|
it "does not delete the unmarked document" do
|
1702
|
-
person.addresses.last.street.
|
1703
|
-
end
|
1704
|
-
end
|
1705
|
-
end
|
1706
|
-
end
|
1707
|
-
|
1708
|
-
context "when the child is paranoid" do
|
1709
|
-
|
1710
|
-
before(:all) do
|
1711
|
-
Person.send(:undef_method, :paranoid_phones_attributes=)
|
1712
|
-
Person.accepts_nested_attributes_for :paranoid_phones,
|
1713
|
-
allow_destroy: true
|
1714
|
-
end
|
1715
|
-
|
1716
|
-
after(:all) do
|
1717
|
-
Person.send(:undef_method, :paranoid_phones_attributes=)
|
1718
|
-
Person.accepts_nested_attributes_for :paranoid_phones
|
1719
|
-
end
|
1720
|
-
|
1721
|
-
[ 1, "1", true, "true" ].each do |truth|
|
1722
|
-
|
1723
|
-
context "when passed a #{truth} with destroy" do
|
1724
|
-
|
1725
|
-
context "when the parent is persisted" do
|
1726
|
-
|
1727
|
-
let!(:persisted) do
|
1728
|
-
Person.create do |p|
|
1729
|
-
p.paranoid_phones << [ phone_one, phone_two ]
|
1730
|
-
end
|
1731
|
-
end
|
1732
|
-
|
1733
|
-
context "when setting, pulling, and pushing in one op" do
|
1734
|
-
|
1735
|
-
before do
|
1736
|
-
persisted.paranoid_phones_attributes =
|
1737
|
-
{
|
1738
|
-
"bar" => { "id" => phone_one.id, "_destroy" => truth },
|
1739
|
-
"foo" => { "id" => phone_two.id, "number" => "3" },
|
1740
|
-
"baz" => { "number" => "4" }
|
1741
|
-
}
|
1742
|
-
end
|
1743
|
-
|
1744
|
-
it "removes the first document from the relation" do
|
1745
|
-
persisted.paranoid_phones.size.should eq(2)
|
1746
|
-
end
|
1747
|
-
|
1748
|
-
it "does not delete the unmarked document" do
|
1749
|
-
persisted.paranoid_phones.first.number.should eq("3")
|
1750
|
-
end
|
1751
|
-
|
1752
|
-
it "adds the new document to the relation" do
|
1753
|
-
persisted.paranoid_phones.last.number.should eq("4")
|
1754
|
-
end
|
1755
|
-
|
1756
|
-
it "has the proper persisted count" do
|
1757
|
-
persisted.paranoid_phones.count.should eq(1)
|
1758
|
-
end
|
1759
|
-
|
1760
|
-
it "soft deletes the removed document" do
|
1761
|
-
phone_one.should be_destroyed
|
1762
|
-
end
|
1763
|
-
|
1764
|
-
context "when saving the parent" do
|
1765
|
-
|
1766
|
-
before do
|
1767
|
-
persisted.with(safe: true).save
|
1768
|
-
end
|
1769
|
-
|
1770
|
-
it "deletes the marked document from the relation" do
|
1771
|
-
persisted.reload.paranoid_phones.count.should eq(2)
|
1772
|
-
end
|
1773
|
-
|
1774
|
-
it "does not delete the unmarked document" do
|
1775
|
-
persisted.reload.paranoid_phones.first.number.should eq("3")
|
1776
|
-
end
|
1777
|
-
|
1778
|
-
it "persists the new document to the relation" do
|
1779
|
-
persisted.reload.paranoid_phones.last.number.should eq("4")
|
1780
|
-
end
|
1781
|
-
end
|
1782
|
-
end
|
1669
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
1783
1670
|
end
|
1784
1671
|
end
|
1785
1672
|
end
|
@@ -1812,15 +1699,15 @@ describe Mongoid::NestedAttributes do
|
|
1812
1699
|
end
|
1813
1700
|
|
1814
1701
|
it "does not ignore the marked document" do
|
1815
|
-
person.addresses.first.street.
|
1702
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
1816
1703
|
end
|
1817
1704
|
|
1818
1705
|
it "does not delete the unmarked document" do
|
1819
|
-
person.addresses.last.street.
|
1706
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
1820
1707
|
end
|
1821
1708
|
|
1822
1709
|
it "does not add additional documents" do
|
1823
|
-
person.addresses.size.
|
1710
|
+
expect(person.addresses.size).to eq(2)
|
1824
1711
|
end
|
1825
1712
|
end
|
1826
1713
|
end
|
@@ -1838,11 +1725,11 @@ describe Mongoid::NestedAttributes do
|
|
1838
1725
|
end
|
1839
1726
|
|
1840
1727
|
it "does not delete the marked document" do
|
1841
|
-
person.addresses.size.
|
1728
|
+
expect(person.addresses.size).to eq(2)
|
1842
1729
|
end
|
1843
1730
|
|
1844
1731
|
it "does not delete the unmarked document" do
|
1845
|
-
person.addresses.last.street.
|
1732
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
1846
1733
|
end
|
1847
1734
|
end
|
1848
1735
|
end
|
@@ -1869,15 +1756,15 @@ describe Mongoid::NestedAttributes do
|
|
1869
1756
|
end
|
1870
1757
|
|
1871
1758
|
it "does not ignore the marked document" do
|
1872
|
-
person.addresses.first.street.
|
1759
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
1873
1760
|
end
|
1874
1761
|
|
1875
1762
|
it "does not delete the unmarked document" do
|
1876
|
-
person.addresses.last.street.
|
1763
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
1877
1764
|
end
|
1878
1765
|
|
1879
1766
|
it "does not add additional documents" do
|
1880
|
-
person.addresses.size.
|
1767
|
+
expect(person.addresses.size).to eq(2)
|
1881
1768
|
end
|
1882
1769
|
end
|
1883
1770
|
end
|
@@ -1895,11 +1782,11 @@ describe Mongoid::NestedAttributes do
|
|
1895
1782
|
end
|
1896
1783
|
|
1897
1784
|
it "does not delete the marked document" do
|
1898
|
-
person.addresses.size.
|
1785
|
+
expect(person.addresses.size).to eq(2)
|
1899
1786
|
end
|
1900
1787
|
|
1901
1788
|
it "does not delete the unmarked document" do
|
1902
|
-
person.addresses.last.street.
|
1789
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
1903
1790
|
end
|
1904
1791
|
end
|
1905
1792
|
end
|
@@ -1922,23 +1809,23 @@ describe Mongoid::NestedAttributes do
|
|
1922
1809
|
end
|
1923
1810
|
|
1924
1811
|
it "builds a new first document" do
|
1925
|
-
person.addresses.first.street.
|
1812
|
+
expect(person.addresses.first.street).to eq("Frederichstrasse")
|
1926
1813
|
end
|
1927
1814
|
|
1928
1815
|
it "builds a new second document" do
|
1929
|
-
person.addresses.second.street.
|
1816
|
+
expect(person.addresses.second.street).to eq("Alexander Platz")
|
1930
1817
|
end
|
1931
1818
|
|
1932
1819
|
it "builds a new third document" do
|
1933
|
-
person.addresses.third.street.
|
1820
|
+
expect(person.addresses.third.street).to eq("Maybachufer")
|
1934
1821
|
end
|
1935
1822
|
|
1936
1823
|
it "does not add extra documents" do
|
1937
|
-
person.addresses.size.
|
1824
|
+
expect(person.addresses.size).to eq(3)
|
1938
1825
|
end
|
1939
1826
|
|
1940
1827
|
it "adds the documents in the sorted hash key order" do
|
1941
|
-
person.addresses.map(&:street).
|
1828
|
+
expect(person.addresses.map(&:street)).to eq(
|
1942
1829
|
[ "Frederichstrasse", "Alexander Platz", "Maybachufer" ]
|
1943
1830
|
)
|
1944
1831
|
end
|
@@ -1965,7 +1852,7 @@ describe Mongoid::NestedAttributes do
|
|
1965
1852
|
end
|
1966
1853
|
|
1967
1854
|
it "does not add the new document" do
|
1968
|
-
person.addresses.
|
1855
|
+
expect(person.addresses).to be_empty
|
1969
1856
|
end
|
1970
1857
|
end
|
1971
1858
|
|
@@ -1977,11 +1864,11 @@ describe Mongoid::NestedAttributes do
|
|
1977
1864
|
end
|
1978
1865
|
|
1979
1866
|
it "adds the new document" do
|
1980
|
-
person.addresses.size.
|
1867
|
+
expect(person.addresses.size).to eq(1)
|
1981
1868
|
end
|
1982
1869
|
|
1983
1870
|
it "sets the correct attributes" do
|
1984
|
-
person.addresses.first.street.
|
1871
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
1985
1872
|
end
|
1986
1873
|
end
|
1987
1874
|
end
|
@@ -2007,7 +1894,7 @@ describe Mongoid::NestedAttributes do
|
|
2007
1894
|
end
|
2008
1895
|
|
2009
1896
|
it "does not add the new document" do
|
2010
|
-
person.addresses.
|
1897
|
+
expect(person.addresses).to be_empty
|
2011
1898
|
end
|
2012
1899
|
end
|
2013
1900
|
|
@@ -2019,11 +1906,11 @@ describe Mongoid::NestedAttributes do
|
|
2019
1906
|
end
|
2020
1907
|
|
2021
1908
|
it "adds the new document" do
|
2022
|
-
person.addresses.size.
|
1909
|
+
expect(person.addresses.size).to eq(1)
|
2023
1910
|
end
|
2024
1911
|
|
2025
1912
|
it "sets the correct attributes" do
|
2026
|
-
person.addresses.first.street.
|
1913
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
2027
1914
|
end
|
2028
1915
|
end
|
2029
1916
|
end
|
@@ -2055,11 +1942,11 @@ describe Mongoid::NestedAttributes do
|
|
2055
1942
|
end
|
2056
1943
|
|
2057
1944
|
it "ignores the the marked document" do
|
2058
|
-
person.addresses.size.
|
1945
|
+
expect(person.addresses.size).to eq(1)
|
2059
1946
|
end
|
2060
1947
|
|
2061
1948
|
it "adds the new unmarked document" do
|
2062
|
-
person.addresses.first.street.
|
1949
|
+
expect(person.addresses.first.street).to eq("Alexander Platz")
|
2063
1950
|
end
|
2064
1951
|
end
|
2065
1952
|
end
|
@@ -2077,15 +1964,15 @@ describe Mongoid::NestedAttributes do
|
|
2077
1964
|
end
|
2078
1965
|
|
2079
1966
|
it "adds the new marked document" do
|
2080
|
-
person.addresses.first.street.
|
1967
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
2081
1968
|
end
|
2082
1969
|
|
2083
1970
|
it "adds the new unmarked document" do
|
2084
|
-
person.addresses.last.street.
|
1971
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
2085
1972
|
end
|
2086
1973
|
|
2087
1974
|
it "does not add extra documents" do
|
2088
|
-
person.addresses.size.
|
1975
|
+
expect(person.addresses.size).to eq(2)
|
2089
1976
|
end
|
2090
1977
|
end
|
2091
1978
|
end
|
@@ -2116,15 +2003,15 @@ describe Mongoid::NestedAttributes do
|
|
2116
2003
|
end
|
2117
2004
|
|
2118
2005
|
it "adds the the marked document" do
|
2119
|
-
person.addresses.first.street.
|
2006
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
2120
2007
|
end
|
2121
2008
|
|
2122
2009
|
it "adds the new unmarked document" do
|
2123
|
-
person.addresses.last.street.
|
2010
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
2124
2011
|
end
|
2125
2012
|
|
2126
2013
|
it "adds the correct number of documents" do
|
2127
|
-
person.addresses.size.
|
2014
|
+
expect(person.addresses.size).to eq(2)
|
2128
2015
|
end
|
2129
2016
|
end
|
2130
2017
|
end
|
@@ -2142,15 +2029,15 @@ describe Mongoid::NestedAttributes do
|
|
2142
2029
|
end
|
2143
2030
|
|
2144
2031
|
it "adds the new marked document" do
|
2145
|
-
person.addresses.first.street.
|
2032
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
2146
2033
|
end
|
2147
2034
|
|
2148
2035
|
it "adds the new unmarked document" do
|
2149
|
-
person.addresses.last.street.
|
2036
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
2150
2037
|
end
|
2151
2038
|
|
2152
2039
|
it "does not add extra documents" do
|
2153
|
-
person.addresses.size.
|
2040
|
+
expect(person.addresses.size).to eq(2)
|
2154
2041
|
end
|
2155
2042
|
end
|
2156
2043
|
end
|
@@ -2176,15 +2063,15 @@ describe Mongoid::NestedAttributes do
|
|
2176
2063
|
end
|
2177
2064
|
|
2178
2065
|
it "adds the the marked document" do
|
2179
|
-
person.addresses.first.street.
|
2066
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
2180
2067
|
end
|
2181
2068
|
|
2182
2069
|
it "adds the new unmarked document" do
|
2183
|
-
person.addresses.last.street.
|
2070
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
2184
2071
|
end
|
2185
2072
|
|
2186
2073
|
it "adds the correct number of documents" do
|
2187
|
-
person.addresses.size.
|
2074
|
+
expect(person.addresses.size).to eq(2)
|
2188
2075
|
end
|
2189
2076
|
end
|
2190
2077
|
end
|
@@ -2202,15 +2089,15 @@ describe Mongoid::NestedAttributes do
|
|
2202
2089
|
end
|
2203
2090
|
|
2204
2091
|
it "adds the new marked document" do
|
2205
|
-
person.addresses.first.street.
|
2092
|
+
expect(person.addresses.first.street).to eq("Maybachufer")
|
2206
2093
|
end
|
2207
2094
|
|
2208
2095
|
it "adds the new unmarked document" do
|
2209
|
-
person.addresses.last.street.
|
2096
|
+
expect(person.addresses.last.street).to eq("Alexander Platz")
|
2210
2097
|
end
|
2211
2098
|
|
2212
2099
|
it "does not add extra documents" do
|
2213
|
-
person.addresses.size.
|
2100
|
+
expect(person.addresses.size).to eq(2)
|
2214
2101
|
end
|
2215
2102
|
end
|
2216
2103
|
end
|
@@ -2238,7 +2125,7 @@ describe Mongoid::NestedAttributes do
|
|
2238
2125
|
end
|
2239
2126
|
|
2240
2127
|
it "does not add the document" do
|
2241
|
-
person.addresses.
|
2128
|
+
expect(person.addresses).to be_empty
|
2242
2129
|
end
|
2243
2130
|
end
|
2244
2131
|
end
|
@@ -2261,8 +2148,8 @@ describe Mongoid::NestedAttributes do
|
|
2261
2148
|
end
|
2262
2149
|
|
2263
2150
|
it "propagates invalidity to parent" do
|
2264
|
-
person.addresses.first.
|
2265
|
-
person.
|
2151
|
+
expect(person.addresses.first).to_not be_valid
|
2152
|
+
expect(person).to_not be_valid
|
2266
2153
|
end
|
2267
2154
|
end
|
2268
2155
|
|
@@ -2283,7 +2170,7 @@ describe Mongoid::NestedAttributes do
|
|
2283
2170
|
end
|
2284
2171
|
|
2285
2172
|
it "instantiates an object of the given type" do
|
2286
|
-
canvas.shapes.map(&:class).
|
2173
|
+
expect(canvas.shapes.map(&:class)).to eq([Square, Circle])
|
2287
2174
|
end
|
2288
2175
|
end
|
2289
2176
|
end
|
@@ -2314,7 +2201,7 @@ describe Mongoid::NestedAttributes do
|
|
2314
2201
|
end
|
2315
2202
|
|
2316
2203
|
it "does not add the document" do
|
2317
|
-
person.game.
|
2204
|
+
expect(person.game).to be_nil
|
2318
2205
|
end
|
2319
2206
|
end
|
2320
2207
|
|
@@ -2325,7 +2212,7 @@ describe Mongoid::NestedAttributes do
|
|
2325
2212
|
end
|
2326
2213
|
|
2327
2214
|
it "adds the document" do
|
2328
|
-
person.game.name.
|
2215
|
+
expect(person.game.name).to eq("Tron")
|
2329
2216
|
end
|
2330
2217
|
end
|
2331
2218
|
end
|
@@ -2350,7 +2237,7 @@ describe Mongoid::NestedAttributes do
|
|
2350
2237
|
end
|
2351
2238
|
|
2352
2239
|
it "does not add the document" do
|
2353
|
-
person.game.
|
2240
|
+
expect(person.game).to be_nil
|
2354
2241
|
end
|
2355
2242
|
end
|
2356
2243
|
|
@@ -2361,7 +2248,7 @@ describe Mongoid::NestedAttributes do
|
|
2361
2248
|
end
|
2362
2249
|
|
2363
2250
|
it "adds the document" do
|
2364
|
-
person.game.name.
|
2251
|
+
expect(person.game.name).to eq("Tron")
|
2365
2252
|
end
|
2366
2253
|
end
|
2367
2254
|
end
|
@@ -2375,7 +2262,7 @@ describe Mongoid::NestedAttributes do
|
|
2375
2262
|
end
|
2376
2263
|
|
2377
2264
|
it "builds a new document" do
|
2378
|
-
person.game.name.
|
2265
|
+
expect(person.game.name).to eq("Tron")
|
2379
2266
|
end
|
2380
2267
|
end
|
2381
2268
|
|
@@ -2398,7 +2285,7 @@ describe Mongoid::NestedAttributes do
|
|
2398
2285
|
end
|
2399
2286
|
|
2400
2287
|
it "does not build the document" do
|
2401
|
-
person.game.
|
2288
|
+
expect(person.game).to be_nil
|
2402
2289
|
end
|
2403
2290
|
end
|
2404
2291
|
|
@@ -2419,7 +2306,7 @@ describe Mongoid::NestedAttributes do
|
|
2419
2306
|
end
|
2420
2307
|
|
2421
2308
|
it "builds the document" do
|
2422
|
-
person.game.name.
|
2309
|
+
expect(person.game.name).to eq("Tron")
|
2423
2310
|
end
|
2424
2311
|
end
|
2425
2312
|
end
|
@@ -2431,7 +2318,7 @@ describe Mongoid::NestedAttributes do
|
|
2431
2318
|
end
|
2432
2319
|
|
2433
2320
|
it "does not build the document" do
|
2434
|
-
person.game.
|
2321
|
+
expect(person.game).to be_nil
|
2435
2322
|
end
|
2436
2323
|
end
|
2437
2324
|
|
@@ -2445,7 +2332,7 @@ describe Mongoid::NestedAttributes do
|
|
2445
2332
|
end
|
2446
2333
|
|
2447
2334
|
it "replaces the document" do
|
2448
|
-
person.game.name.
|
2335
|
+
expect(person.game.name).to eq("Pong")
|
2449
2336
|
end
|
2450
2337
|
end
|
2451
2338
|
|
@@ -2461,7 +2348,7 @@ describe Mongoid::NestedAttributes do
|
|
2461
2348
|
end
|
2462
2349
|
|
2463
2350
|
it "persists the attribute changes" do
|
2464
|
-
pizza.reload.topping.name.
|
2351
|
+
expect(pizza.reload.topping.name).to eq("onions")
|
2465
2352
|
end
|
2466
2353
|
end
|
2467
2354
|
|
@@ -2485,7 +2372,7 @@ describe Mongoid::NestedAttributes do
|
|
2485
2372
|
end
|
2486
2373
|
|
2487
2374
|
it "does not replace the document" do
|
2488
|
-
person.game.name.
|
2375
|
+
expect(person.game.name).to eq("Tron")
|
2489
2376
|
end
|
2490
2377
|
end
|
2491
2378
|
|
@@ -2507,7 +2394,7 @@ describe Mongoid::NestedAttributes do
|
|
2507
2394
|
end
|
2508
2395
|
|
2509
2396
|
it "replaces the document" do
|
2510
|
-
person.game.name.
|
2397
|
+
expect(person.game.name).to eq("Pong")
|
2511
2398
|
end
|
2512
2399
|
end
|
2513
2400
|
end
|
@@ -2536,7 +2423,7 @@ describe Mongoid::NestedAttributes do
|
|
2536
2423
|
end
|
2537
2424
|
|
2538
2425
|
it "updates the existing document" do
|
2539
|
-
person.game.name.
|
2426
|
+
expect(person.game.name).to eq("Pong")
|
2540
2427
|
end
|
2541
2428
|
end
|
2542
2429
|
|
@@ -2548,7 +2435,7 @@ describe Mongoid::NestedAttributes do
|
|
2548
2435
|
end
|
2549
2436
|
|
2550
2437
|
it "updates the existing document" do
|
2551
|
-
person.game.name.
|
2438
|
+
expect(person.game.name).to eq("Pong")
|
2552
2439
|
end
|
2553
2440
|
end
|
2554
2441
|
|
@@ -2574,7 +2461,7 @@ describe Mongoid::NestedAttributes do
|
|
2574
2461
|
end
|
2575
2462
|
|
2576
2463
|
it "destroys the existing document" do
|
2577
|
-
person.game.
|
2464
|
+
expect(person.game).to be_nil
|
2578
2465
|
end
|
2579
2466
|
end
|
2580
2467
|
end
|
@@ -2589,7 +2476,7 @@ describe Mongoid::NestedAttributes do
|
|
2589
2476
|
end
|
2590
2477
|
|
2591
2478
|
it "does not destroy the existing document" do
|
2592
|
-
person.game.
|
2479
|
+
expect(person.game).to eq(game)
|
2593
2480
|
end
|
2594
2481
|
end
|
2595
2482
|
end
|
@@ -2615,7 +2502,7 @@ describe Mongoid::NestedAttributes do
|
|
2615
2502
|
end
|
2616
2503
|
|
2617
2504
|
it "does not destroy the document" do
|
2618
|
-
person.game.
|
2505
|
+
expect(person.game).to eq(game)
|
2619
2506
|
end
|
2620
2507
|
end
|
2621
2508
|
end
|
@@ -2643,7 +2530,7 @@ describe Mongoid::NestedAttributes do
|
|
2643
2530
|
end
|
2644
2531
|
|
2645
2532
|
it "updates the existing document" do
|
2646
|
-
person.game.name.
|
2533
|
+
expect(person.game.name).to eq("Donkey Kong")
|
2647
2534
|
end
|
2648
2535
|
end
|
2649
2536
|
|
@@ -2651,11 +2538,11 @@ describe Mongoid::NestedAttributes do
|
|
2651
2538
|
|
2652
2539
|
before do
|
2653
2540
|
person.game_attributes =
|
2654
|
-
{ id:
|
2541
|
+
{ id: BSON::ObjectId.new.to_s, name: "Pong" }
|
2655
2542
|
end
|
2656
2543
|
|
2657
2544
|
it "updates the existing document" do
|
2658
|
-
person.game.name.
|
2545
|
+
expect(person.game.name).to eq("Pong")
|
2659
2546
|
end
|
2660
2547
|
end
|
2661
2548
|
|
@@ -2667,7 +2554,7 @@ describe Mongoid::NestedAttributes do
|
|
2667
2554
|
end
|
2668
2555
|
|
2669
2556
|
it "destroys the existing document" do
|
2670
|
-
person.game.
|
2557
|
+
expect(person.game).to be_nil
|
2671
2558
|
end
|
2672
2559
|
end
|
2673
2560
|
end
|
@@ -2690,8 +2577,8 @@ describe Mongoid::NestedAttributes do
|
|
2690
2577
|
end
|
2691
2578
|
|
2692
2579
|
it "propagates invalidity to parent" do
|
2693
|
-
person.game.
|
2694
|
-
person.
|
2580
|
+
expect(person.game).to_not be_valid
|
2581
|
+
expect(person).to_not be_valid
|
2695
2582
|
end
|
2696
2583
|
end
|
2697
2584
|
|
@@ -2708,7 +2595,7 @@ describe Mongoid::NestedAttributes do
|
|
2708
2595
|
end
|
2709
2596
|
|
2710
2597
|
it "instantiates an object of the given type" do
|
2711
|
-
driver.vehicle.class.
|
2598
|
+
expect(driver.vehicle.class).to eq(Truck)
|
2712
2599
|
end
|
2713
2600
|
end
|
2714
2601
|
end
|
@@ -2730,7 +2617,7 @@ describe Mongoid::NestedAttributes do
|
|
2730
2617
|
end
|
2731
2618
|
|
2732
2619
|
it "builds a new document" do
|
2733
|
-
game.person.title.
|
2620
|
+
expect(game.person.title).to eq("Sir")
|
2734
2621
|
end
|
2735
2622
|
|
2736
2623
|
end
|
@@ -2754,7 +2641,7 @@ describe Mongoid::NestedAttributes do
|
|
2754
2641
|
end
|
2755
2642
|
|
2756
2643
|
it "does not build a new document" do
|
2757
|
-
game.person.
|
2644
|
+
expect(game.person).to be_nil
|
2758
2645
|
end
|
2759
2646
|
end
|
2760
2647
|
|
@@ -2775,7 +2662,7 @@ describe Mongoid::NestedAttributes do
|
|
2775
2662
|
end
|
2776
2663
|
|
2777
2664
|
it "builds a new document" do
|
2778
|
-
game.person.title.
|
2665
|
+
expect(game.person.title).to eq("Sir")
|
2779
2666
|
end
|
2780
2667
|
end
|
2781
2668
|
end
|
@@ -2796,7 +2683,7 @@ describe Mongoid::NestedAttributes do
|
|
2796
2683
|
end
|
2797
2684
|
|
2798
2685
|
it "updates the existing document" do
|
2799
|
-
game.person.title.
|
2686
|
+
expect(game.person.title).to eq("Sir")
|
2800
2687
|
end
|
2801
2688
|
end
|
2802
2689
|
end
|
@@ -2829,7 +2716,7 @@ describe Mongoid::NestedAttributes do
|
|
2829
2716
|
end
|
2830
2717
|
|
2831
2718
|
it "destroys the existing document" do
|
2832
|
-
game.person.
|
2719
|
+
expect(game.person).to be_nil
|
2833
2720
|
end
|
2834
2721
|
end
|
2835
2722
|
end
|
@@ -2844,7 +2731,7 @@ describe Mongoid::NestedAttributes do
|
|
2844
2731
|
end
|
2845
2732
|
|
2846
2733
|
it "does not destroy the existing document" do
|
2847
|
-
game.person.
|
2734
|
+
expect(game.person).to eq(person)
|
2848
2735
|
end
|
2849
2736
|
end
|
2850
2737
|
end
|
@@ -2870,7 +2757,7 @@ describe Mongoid::NestedAttributes do
|
|
2870
2757
|
end
|
2871
2758
|
|
2872
2759
|
it "does not delete the document" do
|
2873
|
-
game.person.
|
2760
|
+
expect(game.person).to eq(person)
|
2874
2761
|
end
|
2875
2762
|
end
|
2876
2763
|
end
|
@@ -2893,7 +2780,7 @@ describe Mongoid::NestedAttributes do
|
|
2893
2780
|
end
|
2894
2781
|
|
2895
2782
|
it "updates the existing document" do
|
2896
|
-
game.person.title.
|
2783
|
+
expect(game.person.title).to eq("Madam")
|
2897
2784
|
end
|
2898
2785
|
end
|
2899
2786
|
|
@@ -2901,11 +2788,11 @@ describe Mongoid::NestedAttributes do
|
|
2901
2788
|
|
2902
2789
|
before do
|
2903
2790
|
game.person_attributes =
|
2904
|
-
{ id:
|
2791
|
+
{ id: BSON::ObjectId.new.to_s, title: "Madam" }
|
2905
2792
|
end
|
2906
2793
|
|
2907
2794
|
it "updates the existing document" do
|
2908
|
-
game.person.title.
|
2795
|
+
expect(game.person.title).to eq("Madam")
|
2909
2796
|
end
|
2910
2797
|
end
|
2911
2798
|
|
@@ -2917,7 +2804,7 @@ describe Mongoid::NestedAttributes do
|
|
2917
2804
|
end
|
2918
2805
|
|
2919
2806
|
it "deletes the existing document" do
|
2920
|
-
game.person.
|
2807
|
+
expect(game.person).to be_nil
|
2921
2808
|
end
|
2922
2809
|
end
|
2923
2810
|
end
|
@@ -2939,8 +2826,8 @@ describe Mongoid::NestedAttributes do
|
|
2939
2826
|
end
|
2940
2827
|
|
2941
2828
|
it "propagates invalidity to parent" do
|
2942
|
-
game.person.
|
2943
|
-
game.
|
2829
|
+
expect(game.person).to_not be_valid
|
2830
|
+
expect(game).to_not be_valid
|
2944
2831
|
end
|
2945
2832
|
end
|
2946
2833
|
end
|
@@ -2958,7 +2845,7 @@ describe Mongoid::NestedAttributes do
|
|
2958
2845
|
end
|
2959
2846
|
|
2960
2847
|
it "instantiates an object of the given type" do
|
2961
|
-
vehicle.driver.class.
|
2848
|
+
expect(vehicle.driver.class).to eq(Learner)
|
2962
2849
|
end
|
2963
2850
|
end
|
2964
2851
|
end
|
@@ -3020,11 +2907,11 @@ describe Mongoid::NestedAttributes do
|
|
3020
2907
|
end
|
3021
2908
|
|
3022
2909
|
it "sets the documents on the relation" do
|
3023
|
-
person.posts.size.
|
2910
|
+
expect(person.posts.size).to eq(2)
|
3024
2911
|
end
|
3025
2912
|
|
3026
2913
|
it "does not persist the new documents" do
|
3027
|
-
person.posts.count.
|
2914
|
+
expect(person.posts.count).to eq(0)
|
3028
2915
|
end
|
3029
2916
|
end
|
3030
2917
|
end
|
@@ -3054,15 +2941,15 @@ describe Mongoid::NestedAttributes do
|
|
3054
2941
|
context "when reloading the document" do
|
3055
2942
|
|
3056
2943
|
it "updates the first existing document" do
|
3057
|
-
person.posts(true).first.title.
|
2944
|
+
expect(person.posts(true).first.title).to eq("First")
|
3058
2945
|
end
|
3059
2946
|
|
3060
2947
|
it "updates the second existing document" do
|
3061
|
-
person.posts(true).last.title.
|
2948
|
+
expect(person.posts(true).last.title).to eq("Second")
|
3062
2949
|
end
|
3063
2950
|
|
3064
2951
|
it "does not add new documents" do
|
3065
|
-
person.posts(true).size.
|
2952
|
+
expect(person.posts(true).size).to eq(2)
|
3066
2953
|
end
|
3067
2954
|
end
|
3068
2955
|
|
@@ -3076,7 +2963,7 @@ describe Mongoid::NestedAttributes do
|
|
3076
2963
|
expect {
|
3077
2964
|
person.posts_attributes =
|
3078
2965
|
{ "0" =>
|
3079
|
-
{ "id" =>
|
2966
|
+
{ "id" => BSON::ObjectId.new.to_s, "title" => "Rogue" }
|
3080
2967
|
}
|
3081
2968
|
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
3082
2969
|
end
|
@@ -3101,7 +2988,7 @@ describe Mongoid::NestedAttributes do
|
|
3101
2988
|
end
|
3102
2989
|
|
3103
2990
|
it "does not perist the invalid value" do
|
3104
|
-
post_two.reload.title.
|
2991
|
+
expect(post_two.reload.title).to eq("First response")
|
3105
2992
|
end
|
3106
2993
|
end
|
3107
2994
|
end
|
@@ -3148,11 +3035,11 @@ describe Mongoid::NestedAttributes do
|
|
3148
3035
|
context "when reloading the documents" do
|
3149
3036
|
|
3150
3037
|
it "deletes the marked document" do
|
3151
|
-
person.posts(true).size.
|
3038
|
+
expect(person.posts(true).size).to eq(1)
|
3152
3039
|
end
|
3153
3040
|
|
3154
3041
|
it "does not delete the unmarked document" do
|
3155
|
-
person.posts(true).first.title.
|
3042
|
+
expect(person.posts(true).first.title).to eq("My Blog")
|
3156
3043
|
end
|
3157
3044
|
end
|
3158
3045
|
end
|
@@ -3173,11 +3060,11 @@ describe Mongoid::NestedAttributes do
|
|
3173
3060
|
context "when reloading the document" do
|
3174
3061
|
|
3175
3062
|
it "does not delete the marked document" do
|
3176
|
-
person.posts(true).size.
|
3063
|
+
expect(person.posts(true).size).to eq(2)
|
3177
3064
|
end
|
3178
3065
|
|
3179
3066
|
it "does not delete the unmarked document" do
|
3180
|
-
person.posts(true).map(&:title).
|
3067
|
+
expect(person.posts(true).map(&:title)).to include("My Blog")
|
3181
3068
|
end
|
3182
3069
|
end
|
3183
3070
|
end
|
@@ -3212,15 +3099,15 @@ describe Mongoid::NestedAttributes do
|
|
3212
3099
|
context "when reloading the document" do
|
3213
3100
|
|
3214
3101
|
it "does not ignore the marked document" do
|
3215
|
-
person.posts(true).first.title.
|
3102
|
+
expect(person.posts(true).first.title).to eq("Another Title")
|
3216
3103
|
end
|
3217
3104
|
|
3218
3105
|
it "does not delete the unmarked document" do
|
3219
|
-
person.posts(true).last.title.
|
3106
|
+
expect(person.posts(true).last.title).to eq("New Title")
|
3220
3107
|
end
|
3221
3108
|
|
3222
3109
|
it "does not add additional documents" do
|
3223
|
-
person.posts(true).size.
|
3110
|
+
expect(person.posts(true).size).to eq(2)
|
3224
3111
|
end
|
3225
3112
|
end
|
3226
3113
|
end
|
@@ -3241,11 +3128,11 @@ describe Mongoid::NestedAttributes do
|
|
3241
3128
|
context "when reloading the documents" do
|
3242
3129
|
|
3243
3130
|
it "does not delete the marked document" do
|
3244
|
-
person.posts(true).size.
|
3131
|
+
expect(person.posts(true).size).to eq(2)
|
3245
3132
|
end
|
3246
3133
|
|
3247
3134
|
it "does not delete the unmarked document" do
|
3248
|
-
person.posts(true).last.title.
|
3135
|
+
expect(person.posts(true).last.title).to eq("New Title")
|
3249
3136
|
end
|
3250
3137
|
end
|
3251
3138
|
end
|
@@ -3283,15 +3170,15 @@ describe Mongoid::NestedAttributes do
|
|
3283
3170
|
context "when reloading" do
|
3284
3171
|
|
3285
3172
|
it "does not ignore the marked document" do
|
3286
|
-
person.posts(true).find(post_one.id).title.
|
3173
|
+
expect(person.posts(true).find(post_one.id).title).to eq("Another Title")
|
3287
3174
|
end
|
3288
3175
|
|
3289
3176
|
it "does not delete the unmarked document" do
|
3290
|
-
person.posts(true).find(post_two.id).title.
|
3177
|
+
expect(person.posts(true).find(post_two.id).title).to eq("New Title")
|
3291
3178
|
end
|
3292
3179
|
|
3293
3180
|
it "does not add additional documents" do
|
3294
|
-
person.posts(true).size.
|
3181
|
+
expect(person.posts(true).size).to eq(2)
|
3295
3182
|
end
|
3296
3183
|
end
|
3297
3184
|
end
|
@@ -3312,11 +3199,11 @@ describe Mongoid::NestedAttributes do
|
|
3312
3199
|
context "when reloading" do
|
3313
3200
|
|
3314
3201
|
it "does not delete the marked document" do
|
3315
|
-
person.posts(true).size.
|
3202
|
+
expect(person.posts(true).size).to eq(2)
|
3316
3203
|
end
|
3317
3204
|
|
3318
3205
|
it "does not delete the unmarked document" do
|
3319
|
-
person.posts(true).last.title.
|
3206
|
+
expect(person.posts(true).last.title).to eq("New Title")
|
3320
3207
|
end
|
3321
3208
|
end
|
3322
3209
|
end
|
@@ -3342,27 +3229,27 @@ describe Mongoid::NestedAttributes do
|
|
3342
3229
|
end
|
3343
3230
|
|
3344
3231
|
it "builds a new first document" do
|
3345
|
-
person.posts.first.title.
|
3232
|
+
expect(person.posts.first.title).to eq("First")
|
3346
3233
|
end
|
3347
3234
|
|
3348
3235
|
it "builds a new second document" do
|
3349
|
-
person.posts.second.title.
|
3236
|
+
expect(person.posts.second.title).to eq("Second")
|
3350
3237
|
end
|
3351
3238
|
|
3352
3239
|
it "builds a new third document" do
|
3353
|
-
person.posts.third.title.
|
3240
|
+
expect(person.posts.third.title).to eq("Third")
|
3354
3241
|
end
|
3355
3242
|
|
3356
3243
|
it "does not add extra documents" do
|
3357
|
-
person.posts.size.
|
3244
|
+
expect(person.posts.size).to eq(3)
|
3358
3245
|
end
|
3359
3246
|
|
3360
3247
|
it "does not persist the documents" do
|
3361
|
-
person.posts.count.
|
3248
|
+
expect(person.posts.count).to eq(0)
|
3362
3249
|
end
|
3363
3250
|
|
3364
3251
|
it "adds the documents in the sorted hash key order" do
|
3365
|
-
person.posts.map(&:title).
|
3252
|
+
expect(person.posts.map(&:title)).to eq(
|
3366
3253
|
[ "First", "Second", "Third" ]
|
3367
3254
|
)
|
3368
3255
|
end
|
@@ -3383,23 +3270,23 @@ describe Mongoid::NestedAttributes do
|
|
3383
3270
|
end
|
3384
3271
|
|
3385
3272
|
it "builds a new first document" do
|
3386
|
-
person.posts.first.title.
|
3273
|
+
expect(person.posts.first.title).to eq("Third")
|
3387
3274
|
end
|
3388
3275
|
|
3389
3276
|
it "builds a new second document" do
|
3390
|
-
person.posts.second.title.
|
3277
|
+
expect(person.posts.second.title).to eq("First")
|
3391
3278
|
end
|
3392
3279
|
|
3393
3280
|
it "builds a new third document" do
|
3394
|
-
person.posts.third.title.
|
3281
|
+
expect(person.posts.third.title).to eq("Second")
|
3395
3282
|
end
|
3396
3283
|
|
3397
3284
|
it "does not add extra documents" do
|
3398
|
-
person.posts.size.
|
3285
|
+
expect(person.posts.size).to eq(3)
|
3399
3286
|
end
|
3400
3287
|
|
3401
3288
|
it "does not persist the documents" do
|
3402
|
-
person.posts.count.
|
3289
|
+
expect(person.posts.count).to eq(0)
|
3403
3290
|
end
|
3404
3291
|
end
|
3405
3292
|
end
|
@@ -3426,7 +3313,7 @@ describe Mongoid::NestedAttributes do
|
|
3426
3313
|
end
|
3427
3314
|
|
3428
3315
|
it "does not add the new document" do
|
3429
|
-
person.posts.
|
3316
|
+
expect(person.posts).to be_empty
|
3430
3317
|
end
|
3431
3318
|
end
|
3432
3319
|
|
@@ -3438,11 +3325,11 @@ describe Mongoid::NestedAttributes do
|
|
3438
3325
|
end
|
3439
3326
|
|
3440
3327
|
it "adds the new document" do
|
3441
|
-
person.posts.size.
|
3328
|
+
expect(person.posts.size).to eq(1)
|
3442
3329
|
end
|
3443
3330
|
|
3444
3331
|
it "sets the correct attributes" do
|
3445
|
-
person.posts.first.title.
|
3332
|
+
expect(person.posts.first.title).to eq("Blogging")
|
3446
3333
|
end
|
3447
3334
|
end
|
3448
3335
|
end
|
@@ -3468,7 +3355,7 @@ describe Mongoid::NestedAttributes do
|
|
3468
3355
|
end
|
3469
3356
|
|
3470
3357
|
it "does not add the new document" do
|
3471
|
-
person.posts.
|
3358
|
+
expect(person.posts).to be_empty
|
3472
3359
|
end
|
3473
3360
|
end
|
3474
3361
|
|
@@ -3480,11 +3367,11 @@ describe Mongoid::NestedAttributes do
|
|
3480
3367
|
end
|
3481
3368
|
|
3482
3369
|
it "adds the new document" do
|
3483
|
-
person.posts.size.
|
3370
|
+
expect(person.posts.size).to eq(1)
|
3484
3371
|
end
|
3485
3372
|
|
3486
3373
|
it "sets the correct attributes" do
|
3487
|
-
person.posts.first.title.
|
3374
|
+
expect(person.posts.first.title).to eq("Blogging")
|
3488
3375
|
end
|
3489
3376
|
end
|
3490
3377
|
end
|
@@ -3516,11 +3403,11 @@ describe Mongoid::NestedAttributes do
|
|
3516
3403
|
end
|
3517
3404
|
|
3518
3405
|
it "ignores the the marked document" do
|
3519
|
-
person.posts.size.
|
3406
|
+
expect(person.posts.size).to eq(1)
|
3520
3407
|
end
|
3521
3408
|
|
3522
3409
|
it "adds the new unmarked document" do
|
3523
|
-
person.posts.first.title.
|
3410
|
+
expect(person.posts.first.title).to eq("Blog Two")
|
3524
3411
|
end
|
3525
3412
|
end
|
3526
3413
|
end
|
@@ -3538,15 +3425,15 @@ describe Mongoid::NestedAttributes do
|
|
3538
3425
|
end
|
3539
3426
|
|
3540
3427
|
it "adds the new marked document" do
|
3541
|
-
person.posts.first.title.
|
3428
|
+
expect(person.posts.first.title).to eq("New Blog")
|
3542
3429
|
end
|
3543
3430
|
|
3544
3431
|
it "adds the new unmarked document" do
|
3545
|
-
person.posts.last.title.
|
3432
|
+
expect(person.posts.last.title).to eq("Blog Two")
|
3546
3433
|
end
|
3547
3434
|
|
3548
3435
|
it "does not add extra documents" do
|
3549
|
-
person.posts.size.
|
3436
|
+
expect(person.posts.size).to eq(2)
|
3550
3437
|
end
|
3551
3438
|
end
|
3552
3439
|
end
|
@@ -3577,15 +3464,15 @@ describe Mongoid::NestedAttributes do
|
|
3577
3464
|
end
|
3578
3465
|
|
3579
3466
|
it "adds the the marked document" do
|
3580
|
-
person.posts.first.title.
|
3467
|
+
expect(person.posts.first.title).to eq("New Blog")
|
3581
3468
|
end
|
3582
3469
|
|
3583
3470
|
it "adds the new unmarked document" do
|
3584
|
-
person.posts.last.title.
|
3471
|
+
expect(person.posts.last.title).to eq("Blog Two")
|
3585
3472
|
end
|
3586
3473
|
|
3587
3474
|
it "adds the correct number of documents" do
|
3588
|
-
person.posts.size.
|
3475
|
+
expect(person.posts.size).to eq(2)
|
3589
3476
|
end
|
3590
3477
|
end
|
3591
3478
|
end
|
@@ -3603,15 +3490,15 @@ describe Mongoid::NestedAttributes do
|
|
3603
3490
|
end
|
3604
3491
|
|
3605
3492
|
it "adds the new marked document" do
|
3606
|
-
person.posts.first.title.
|
3493
|
+
expect(person.posts.first.title).to eq("New Blog")
|
3607
3494
|
end
|
3608
3495
|
|
3609
3496
|
it "adds the new unmarked document" do
|
3610
|
-
person.posts.last.title.
|
3497
|
+
expect(person.posts.last.title).to eq("Blog Two")
|
3611
3498
|
end
|
3612
3499
|
|
3613
3500
|
it "does not add extra documents" do
|
3614
|
-
person.posts.size.
|
3501
|
+
expect(person.posts.size).to eq(2)
|
3615
3502
|
end
|
3616
3503
|
end
|
3617
3504
|
end
|
@@ -3637,15 +3524,15 @@ describe Mongoid::NestedAttributes do
|
|
3637
3524
|
end
|
3638
3525
|
|
3639
3526
|
it "adds the the marked document" do
|
3640
|
-
person.posts.first.title.
|
3527
|
+
expect(person.posts.first.title).to eq("New Blog")
|
3641
3528
|
end
|
3642
3529
|
|
3643
3530
|
it "adds the new unmarked document" do
|
3644
|
-
person.posts.last.title.
|
3531
|
+
expect(person.posts.last.title).to eq("Blog Two")
|
3645
3532
|
end
|
3646
3533
|
|
3647
3534
|
it "adds the correct number of documents" do
|
3648
|
-
person.posts.size.
|
3535
|
+
expect(person.posts.size).to eq(2)
|
3649
3536
|
end
|
3650
3537
|
end
|
3651
3538
|
end
|
@@ -3663,15 +3550,15 @@ describe Mongoid::NestedAttributes do
|
|
3663
3550
|
end
|
3664
3551
|
|
3665
3552
|
it "adds the new marked document" do
|
3666
|
-
person.posts.first.title.
|
3553
|
+
expect(person.posts.first.title).to eq("New Blog")
|
3667
3554
|
end
|
3668
3555
|
|
3669
3556
|
it "adds the new unmarked document" do
|
3670
|
-
person.posts.last.title.
|
3557
|
+
expect(person.posts.last.title).to eq("Blog Two")
|
3671
3558
|
end
|
3672
3559
|
|
3673
3560
|
it "does not add extra documents" do
|
3674
|
-
person.posts.size.
|
3561
|
+
expect(person.posts.size).to eq(2)
|
3675
3562
|
end
|
3676
3563
|
end
|
3677
3564
|
end
|
@@ -3696,8 +3583,8 @@ describe Mongoid::NestedAttributes do
|
|
3696
3583
|
end
|
3697
3584
|
|
3698
3585
|
it "propagates invalidity to parent" do
|
3699
|
-
person.
|
3700
|
-
person.posts.first.
|
3586
|
+
expect(person).to_not be_valid
|
3587
|
+
expect(person.posts.first).to_not be_valid
|
3701
3588
|
end
|
3702
3589
|
end
|
3703
3590
|
|
@@ -3718,7 +3605,7 @@ describe Mongoid::NestedAttributes do
|
|
3718
3605
|
end
|
3719
3606
|
|
3720
3607
|
it "instantiates an object of the given type" do
|
3721
|
-
shipping_container.vehicles.map(&:class).
|
3608
|
+
expect(shipping_container.vehicles.map(&:class)).to eq([Car, Truck])
|
3722
3609
|
end
|
3723
3610
|
end
|
3724
3611
|
end
|
@@ -3780,7 +3667,7 @@ describe Mongoid::NestedAttributes do
|
|
3780
3667
|
end
|
3781
3668
|
|
3782
3669
|
it "sets the documents on the relation" do
|
3783
|
-
person.preferences.size.
|
3670
|
+
expect(person.preferences.size).to eq(2)
|
3784
3671
|
end
|
3785
3672
|
end
|
3786
3673
|
end
|
@@ -3810,15 +3697,15 @@ describe Mongoid::NestedAttributes do
|
|
3810
3697
|
context "when reloading the document" do
|
3811
3698
|
|
3812
3699
|
it "updates the first existing document" do
|
3813
|
-
person.preferences(true).first.name.
|
3700
|
+
expect(person.preferences(true).first.name).to eq("First")
|
3814
3701
|
end
|
3815
3702
|
|
3816
3703
|
it "updates the second existing document" do
|
3817
|
-
person.preferences(true).second.name.
|
3704
|
+
expect(person.preferences(true).second.name).to eq("Second")
|
3818
3705
|
end
|
3819
3706
|
|
3820
3707
|
it "does not add new documents" do
|
3821
|
-
person.preferences(true).size.
|
3708
|
+
expect(person.preferences(true).size).to eq(2)
|
3822
3709
|
end
|
3823
3710
|
end
|
3824
3711
|
end
|
@@ -3865,11 +3752,11 @@ describe Mongoid::NestedAttributes do
|
|
3865
3752
|
context "when reloading the documents" do
|
3866
3753
|
|
3867
3754
|
it "deletes the marked document" do
|
3868
|
-
person.preferences(true).size.
|
3755
|
+
expect(person.preferences(true).size).to eq(1)
|
3869
3756
|
end
|
3870
3757
|
|
3871
3758
|
it "does not delete the unmarked document" do
|
3872
|
-
person.preferences(true).first.name.
|
3759
|
+
expect(person.preferences(true).first.name).to eq("My Blog")
|
3873
3760
|
end
|
3874
3761
|
end
|
3875
3762
|
end
|
@@ -3890,11 +3777,11 @@ describe Mongoid::NestedAttributes do
|
|
3890
3777
|
context "when reloading the document" do
|
3891
3778
|
|
3892
3779
|
it "does not delete the marked document" do
|
3893
|
-
person.preferences(true).size.
|
3780
|
+
expect(person.preferences(true).size).to eq(2)
|
3894
3781
|
end
|
3895
3782
|
|
3896
3783
|
it "does not delete the unmarked document" do
|
3897
|
-
person.preferences(true).last.name.
|
3784
|
+
expect(person.preferences(true).last.name).to eq("My Blog")
|
3898
3785
|
end
|
3899
3786
|
end
|
3900
3787
|
end
|
@@ -3929,15 +3816,15 @@ describe Mongoid::NestedAttributes do
|
|
3929
3816
|
context "when reloading the document" do
|
3930
3817
|
|
3931
3818
|
it "does not ignore the marked document" do
|
3932
|
-
person.preferences(true).first.name.
|
3819
|
+
expect(person.preferences(true).first.name).to eq("Another Title")
|
3933
3820
|
end
|
3934
3821
|
|
3935
3822
|
it "does not delete the unmarked document" do
|
3936
|
-
person.preferences(true).last.name.
|
3823
|
+
expect(person.preferences(true).last.name).to eq("New Title")
|
3937
3824
|
end
|
3938
3825
|
|
3939
3826
|
it "does not add additional documents" do
|
3940
|
-
person.preferences(true).size.
|
3827
|
+
expect(person.preferences(true).size).to eq(2)
|
3941
3828
|
end
|
3942
3829
|
end
|
3943
3830
|
end
|
@@ -3958,11 +3845,11 @@ describe Mongoid::NestedAttributes do
|
|
3958
3845
|
context "when reloading the documents" do
|
3959
3846
|
|
3960
3847
|
it "does not delete the marked document" do
|
3961
|
-
person.preferences(true).size.
|
3848
|
+
expect(person.preferences(true).size).to eq(2)
|
3962
3849
|
end
|
3963
3850
|
|
3964
3851
|
it "does not delete the unmarked document" do
|
3965
|
-
person.preferences(true).last.name.
|
3852
|
+
expect(person.preferences(true).last.name).to eq("New Title")
|
3966
3853
|
end
|
3967
3854
|
end
|
3968
3855
|
end
|
@@ -3992,15 +3879,15 @@ describe Mongoid::NestedAttributes do
|
|
3992
3879
|
context "when reloading" do
|
3993
3880
|
|
3994
3881
|
it "does not ignore the marked document" do
|
3995
|
-
person.preferences(true).first.name.
|
3882
|
+
expect(person.preferences(true).first.name).to eq("Another Title")
|
3996
3883
|
end
|
3997
3884
|
|
3998
3885
|
it "does not delete the unmarked document" do
|
3999
|
-
person.preferences(true).last.name.
|
3886
|
+
expect(person.preferences(true).last.name).to eq("New Title")
|
4000
3887
|
end
|
4001
3888
|
|
4002
3889
|
it "does not add additional documents" do
|
4003
|
-
person.preferences(true).size.
|
3890
|
+
expect(person.preferences(true).size).to eq(2)
|
4004
3891
|
end
|
4005
3892
|
end
|
4006
3893
|
end
|
@@ -4021,11 +3908,11 @@ describe Mongoid::NestedAttributes do
|
|
4021
3908
|
context "when reloading" do
|
4022
3909
|
|
4023
3910
|
it "does not delete the marked document" do
|
4024
|
-
person.preferences(true).size.
|
3911
|
+
expect(person.preferences(true).size).to eq(2)
|
4025
3912
|
end
|
4026
3913
|
|
4027
3914
|
it "does not delete the unmarked document" do
|
4028
|
-
person.preferences(true).last.name.
|
3915
|
+
expect(person.preferences(true).last.name).to eq("New Title")
|
4029
3916
|
end
|
4030
3917
|
end
|
4031
3918
|
end
|
@@ -4049,23 +3936,23 @@ describe Mongoid::NestedAttributes do
|
|
4049
3936
|
end
|
4050
3937
|
|
4051
3938
|
it "builds a new first document" do
|
4052
|
-
person.preferences.first.name.
|
3939
|
+
expect(person.preferences.first.name).to eq("First")
|
4053
3940
|
end
|
4054
3941
|
|
4055
3942
|
it "builds a new second document" do
|
4056
|
-
person.preferences.second.name.
|
3943
|
+
expect(person.preferences.second.name).to eq("Second")
|
4057
3944
|
end
|
4058
3945
|
|
4059
3946
|
it "builds a new third document" do
|
4060
|
-
person.preferences.third.name.
|
3947
|
+
expect(person.preferences.third.name).to eq("Third")
|
4061
3948
|
end
|
4062
3949
|
|
4063
3950
|
it "does not add extra documents" do
|
4064
|
-
person.preferences.size.
|
3951
|
+
expect(person.preferences.size).to eq(3)
|
4065
3952
|
end
|
4066
3953
|
|
4067
3954
|
it "adds the documents in the sorted hash key order" do
|
4068
|
-
person.preferences.map(&:name).
|
3955
|
+
expect(person.preferences.map(&:name)).to eq(
|
4069
3956
|
[ "First", "Second", "Third" ]
|
4070
3957
|
)
|
4071
3958
|
end
|
@@ -4092,7 +3979,7 @@ describe Mongoid::NestedAttributes do
|
|
4092
3979
|
end
|
4093
3980
|
|
4094
3981
|
it "does not add the new document" do
|
4095
|
-
person.preferences.
|
3982
|
+
expect(person.preferences).to be_empty
|
4096
3983
|
end
|
4097
3984
|
end
|
4098
3985
|
|
@@ -4104,11 +3991,11 @@ describe Mongoid::NestedAttributes do
|
|
4104
3991
|
end
|
4105
3992
|
|
4106
3993
|
it "adds the new document" do
|
4107
|
-
person.preferences.size.
|
3994
|
+
expect(person.preferences.size).to eq(1)
|
4108
3995
|
end
|
4109
3996
|
|
4110
3997
|
it "sets the correct attributes" do
|
4111
|
-
person.preferences.first.name.
|
3998
|
+
expect(person.preferences.first.name).to eq("Blogging")
|
4112
3999
|
end
|
4113
4000
|
end
|
4114
4001
|
end
|
@@ -4134,7 +4021,7 @@ describe Mongoid::NestedAttributes do
|
|
4134
4021
|
end
|
4135
4022
|
|
4136
4023
|
it "does not add the new document" do
|
4137
|
-
person.preferences.
|
4024
|
+
expect(person.preferences).to be_empty
|
4138
4025
|
end
|
4139
4026
|
end
|
4140
4027
|
|
@@ -4146,11 +4033,11 @@ describe Mongoid::NestedAttributes do
|
|
4146
4033
|
end
|
4147
4034
|
|
4148
4035
|
it "adds the new document" do
|
4149
|
-
person.preferences.size.
|
4036
|
+
expect(person.preferences.size).to eq(1)
|
4150
4037
|
end
|
4151
4038
|
|
4152
4039
|
it "sets the correct attributes" do
|
4153
|
-
person.preferences.first.name.
|
4040
|
+
expect(person.preferences.first.name).to eq("Blogging")
|
4154
4041
|
end
|
4155
4042
|
end
|
4156
4043
|
end
|
@@ -4182,11 +4069,11 @@ describe Mongoid::NestedAttributes do
|
|
4182
4069
|
end
|
4183
4070
|
|
4184
4071
|
it "ignores the the marked document" do
|
4185
|
-
person.preferences.size.
|
4072
|
+
expect(person.preferences.size).to eq(1)
|
4186
4073
|
end
|
4187
4074
|
|
4188
4075
|
it "adds the new unmarked document" do
|
4189
|
-
person.preferences.first.name.
|
4076
|
+
expect(person.preferences.first.name).to eq("Blog Two")
|
4190
4077
|
end
|
4191
4078
|
end
|
4192
4079
|
end
|
@@ -4204,15 +4091,15 @@ describe Mongoid::NestedAttributes do
|
|
4204
4091
|
end
|
4205
4092
|
|
4206
4093
|
it "adds the new marked document" do
|
4207
|
-
person.preferences.first.name.
|
4094
|
+
expect(person.preferences.first.name).to eq("New Blog")
|
4208
4095
|
end
|
4209
4096
|
|
4210
4097
|
it "adds the new unmarked document" do
|
4211
|
-
person.preferences.last.name.
|
4098
|
+
expect(person.preferences.last.name).to eq("Blog Two")
|
4212
4099
|
end
|
4213
4100
|
|
4214
4101
|
it "does not add extra documents" do
|
4215
|
-
person.preferences.size.
|
4102
|
+
expect(person.preferences.size).to eq(2)
|
4216
4103
|
end
|
4217
4104
|
end
|
4218
4105
|
end
|
@@ -4243,15 +4130,15 @@ describe Mongoid::NestedAttributes do
|
|
4243
4130
|
end
|
4244
4131
|
|
4245
4132
|
it "adds the the marked document" do
|
4246
|
-
person.preferences.first.name.
|
4133
|
+
expect(person.preferences.first.name).to eq("New Blog")
|
4247
4134
|
end
|
4248
4135
|
|
4249
4136
|
it "adds the new unmarked document" do
|
4250
|
-
person.preferences.last.name.
|
4137
|
+
expect(person.preferences.last.name).to eq("Blog Two")
|
4251
4138
|
end
|
4252
4139
|
|
4253
4140
|
it "adds the correct number of documents" do
|
4254
|
-
person.preferences.size.
|
4141
|
+
expect(person.preferences.size).to eq(2)
|
4255
4142
|
end
|
4256
4143
|
end
|
4257
4144
|
end
|
@@ -4269,15 +4156,15 @@ describe Mongoid::NestedAttributes do
|
|
4269
4156
|
end
|
4270
4157
|
|
4271
4158
|
it "adds the new marked document" do
|
4272
|
-
person.preferences.first.name.
|
4159
|
+
expect(person.preferences.first.name).to eq("New Blog")
|
4273
4160
|
end
|
4274
4161
|
|
4275
4162
|
it "adds the new unmarked document" do
|
4276
|
-
person.preferences.last.name.
|
4163
|
+
expect(person.preferences.last.name).to eq("Blog Two")
|
4277
4164
|
end
|
4278
4165
|
|
4279
4166
|
it "does not add extra documents" do
|
4280
|
-
person.preferences.size.
|
4167
|
+
expect(person.preferences.size).to eq(2)
|
4281
4168
|
end
|
4282
4169
|
end
|
4283
4170
|
end
|
@@ -4303,15 +4190,15 @@ describe Mongoid::NestedAttributes do
|
|
4303
4190
|
end
|
4304
4191
|
|
4305
4192
|
it "adds the the marked document" do
|
4306
|
-
person.preferences.first.name.
|
4193
|
+
expect(person.preferences.first.name).to eq("New Blog")
|
4307
4194
|
end
|
4308
4195
|
|
4309
4196
|
it "adds the new unmarked document" do
|
4310
|
-
person.preferences.last.name.
|
4197
|
+
expect(person.preferences.last.name).to eq("Blog Two")
|
4311
4198
|
end
|
4312
4199
|
|
4313
4200
|
it "adds the correct number of documents" do
|
4314
|
-
person.preferences.size.
|
4201
|
+
expect(person.preferences.size).to eq(2)
|
4315
4202
|
end
|
4316
4203
|
end
|
4317
4204
|
end
|
@@ -4329,15 +4216,15 @@ describe Mongoid::NestedAttributes do
|
|
4329
4216
|
end
|
4330
4217
|
|
4331
4218
|
it "adds the new marked document" do
|
4332
|
-
person.preferences.first.name.
|
4219
|
+
expect(person.preferences.first.name).to eq("New Blog")
|
4333
4220
|
end
|
4334
4221
|
|
4335
4222
|
it "adds the new unmarked document" do
|
4336
|
-
person.preferences.last.name.
|
4223
|
+
expect(person.preferences.last.name).to eq("Blog Two")
|
4337
4224
|
end
|
4338
4225
|
|
4339
4226
|
it "does not add extra documents" do
|
4340
|
-
person.preferences.size.
|
4227
|
+
expect(person.preferences.size).to eq(2)
|
4341
4228
|
end
|
4342
4229
|
end
|
4343
4230
|
end
|
@@ -4362,8 +4249,8 @@ describe Mongoid::NestedAttributes do
|
|
4362
4249
|
end
|
4363
4250
|
|
4364
4251
|
it "propagates invalidity to parent" do
|
4365
|
-
person.preferences.first.
|
4366
|
-
person.
|
4252
|
+
expect(person.preferences.first).to_not be_valid
|
4253
|
+
expect(person).to_not be_valid
|
4367
4254
|
end
|
4368
4255
|
end
|
4369
4256
|
end
|
@@ -4407,11 +4294,11 @@ describe Mongoid::NestedAttributes do
|
|
4407
4294
|
end
|
4408
4295
|
|
4409
4296
|
it "adds the new embedded document" do
|
4410
|
-
server.reload.filesystems.first.name.
|
4297
|
+
expect(server.reload.filesystems.first.name).to eq("NFS")
|
4411
4298
|
end
|
4412
4299
|
|
4413
4300
|
it "does not add more than one document" do
|
4414
|
-
server.reload.filesystems.count.
|
4301
|
+
expect(server.reload.filesystems.count).to eq(1)
|
4415
4302
|
end
|
4416
4303
|
end
|
4417
4304
|
end
|
@@ -4439,23 +4326,23 @@ describe Mongoid::NestedAttributes do
|
|
4439
4326
|
end
|
4440
4327
|
|
4441
4328
|
it "removes the document from the parent" do
|
4442
|
-
person.services.
|
4329
|
+
expect(person.services).to be_empty
|
4443
4330
|
end
|
4444
4331
|
|
4445
4332
|
it "deletes the document" do
|
4446
|
-
service.
|
4333
|
+
expect(service).to be_destroyed
|
4447
4334
|
end
|
4448
4335
|
|
4449
4336
|
it "runs the before destroy callbacks" do
|
4450
|
-
service.before_destroy_called.
|
4337
|
+
expect(service.before_destroy_called).to be true
|
4451
4338
|
end
|
4452
4339
|
|
4453
4340
|
it "runs the after destroy callbacks" do
|
4454
|
-
service.after_destroy_called.
|
4341
|
+
expect(service.after_destroy_called).to be true
|
4455
4342
|
end
|
4456
4343
|
|
4457
4344
|
it "clears the delayed atomic pulls from the parent" do
|
4458
|
-
person.delayed_atomic_pulls.
|
4345
|
+
expect(person.delayed_atomic_pulls).to be_empty
|
4459
4346
|
end
|
4460
4347
|
end
|
4461
4348
|
|
@@ -4494,12 +4381,12 @@ describe Mongoid::NestedAttributes do
|
|
4494
4381
|
end
|
4495
4382
|
|
4496
4383
|
before do
|
4497
|
-
address.
|
4384
|
+
address.update_attributes(attributes)
|
4498
4385
|
address.reload
|
4499
4386
|
end
|
4500
4387
|
|
4501
4388
|
it "does not add any extra locations" do
|
4502
|
-
address.locations.size.
|
4389
|
+
expect(address.locations.size).to eq(2)
|
4503
4390
|
end
|
4504
4391
|
end
|
4505
4392
|
|
@@ -4541,11 +4428,11 @@ describe Mongoid::NestedAttributes do
|
|
4541
4428
|
end
|
4542
4429
|
|
4543
4430
|
it "deletes the document from the relation" do
|
4544
|
-
address_one.locations.
|
4431
|
+
expect(address_one.locations).to be_empty
|
4545
4432
|
end
|
4546
4433
|
|
4547
4434
|
it "persists the change" do
|
4548
|
-
address_one.reload.locations.
|
4435
|
+
expect(address_one.reload.locations).to be_empty
|
4549
4436
|
end
|
4550
4437
|
end
|
4551
4438
|
|
@@ -4591,15 +4478,15 @@ describe Mongoid::NestedAttributes do
|
|
4591
4478
|
end
|
4592
4479
|
|
4593
4480
|
it "removes the child from the relation" do
|
4594
|
-
record.tracks.
|
4481
|
+
expect(record.tracks).to be_empty
|
4595
4482
|
end
|
4596
4483
|
|
4597
4484
|
it "deletes the child document" do
|
4598
|
-
track.
|
4485
|
+
expect(track).to be_destroyed
|
4599
4486
|
end
|
4600
4487
|
|
4601
4488
|
it "runs the child's callbacks" do
|
4602
|
-
track.before_destroy_called.
|
4489
|
+
expect(track.before_destroy_called).to be true
|
4603
4490
|
end
|
4604
4491
|
end
|
4605
4492
|
end
|
@@ -4620,7 +4507,7 @@ describe Mongoid::NestedAttributes do
|
|
4620
4507
|
end
|
4621
4508
|
|
4622
4509
|
before do
|
4623
|
-
person.
|
4510
|
+
person.update_attributes(attributes)
|
4624
4511
|
end
|
4625
4512
|
|
4626
4513
|
let(:address) do
|
@@ -4632,11 +4519,11 @@ describe Mongoid::NestedAttributes do
|
|
4632
4519
|
end
|
4633
4520
|
|
4634
4521
|
it "adds the new first level embedded document" do
|
4635
|
-
address.street.
|
4522
|
+
expect(address.street).to eq("Alexanderstr")
|
4636
4523
|
end
|
4637
4524
|
|
4638
4525
|
it "adds the nested embedded document" do
|
4639
|
-
location.name.
|
4526
|
+
expect(location.name).to eq("Home")
|
4640
4527
|
end
|
4641
4528
|
end
|
4642
4529
|
|
@@ -4660,16 +4547,16 @@ describe Mongoid::NestedAttributes do
|
|
4660
4547
|
end
|
4661
4548
|
|
4662
4549
|
before do
|
4663
|
-
person.
|
4550
|
+
person.update_attributes(attributes)
|
4664
4551
|
person.reload
|
4665
4552
|
end
|
4666
4553
|
|
4667
4554
|
it "adds the new location to the existing address" do
|
4668
|
-
person.addresses.first.locations.count.
|
4555
|
+
expect(person.addresses.first.locations.count).to eq(2)
|
4669
4556
|
end
|
4670
4557
|
|
4671
4558
|
it "adds the new address" do
|
4672
|
-
person.addresses.count.
|
4559
|
+
expect(person.addresses.count).to eq(2)
|
4673
4560
|
end
|
4674
4561
|
end
|
4675
4562
|
end
|
@@ -4691,7 +4578,7 @@ describe Mongoid::NestedAttributes do
|
|
4691
4578
|
end
|
4692
4579
|
|
4693
4580
|
before do
|
4694
|
-
person.
|
4581
|
+
person.update_attributes(attributes)
|
4695
4582
|
end
|
4696
4583
|
|
4697
4584
|
let(:address) do
|
@@ -4703,11 +4590,11 @@ describe Mongoid::NestedAttributes do
|
|
4703
4590
|
end
|
4704
4591
|
|
4705
4592
|
it "adds the new first level embedded document" do
|
4706
|
-
address.street.
|
4593
|
+
expect(address.street).to eq("Alexanderstr")
|
4707
4594
|
end
|
4708
4595
|
|
4709
4596
|
it "adds the nested embedded document" do
|
4710
|
-
code.name.
|
4597
|
+
expect(code.name).to eq("Home")
|
4711
4598
|
end
|
4712
4599
|
end
|
4713
4600
|
end
|
@@ -4740,15 +4627,15 @@ describe Mongoid::NestedAttributes do
|
|
4740
4627
|
end
|
4741
4628
|
|
4742
4629
|
before do
|
4743
|
-
person.
|
4630
|
+
person.update_attributes(attributes)
|
4744
4631
|
end
|
4745
4632
|
|
4746
4633
|
it "updates the first level embedded document" do
|
4747
|
-
address.number.
|
4634
|
+
expect(address.number).to eq(45)
|
4748
4635
|
end
|
4749
4636
|
|
4750
4637
|
it "updates the nested embedded document" do
|
4751
|
-
code.name.
|
4638
|
+
expect(code.name).to eq("Work")
|
4752
4639
|
end
|
4753
4640
|
end
|
4754
4641
|
|
@@ -4780,15 +4667,15 @@ describe Mongoid::NestedAttributes do
|
|
4780
4667
|
end
|
4781
4668
|
|
4782
4669
|
before do
|
4783
|
-
person.
|
4670
|
+
person.update_attributes(attributes)
|
4784
4671
|
end
|
4785
4672
|
|
4786
4673
|
it "updates the first level embedded document" do
|
4787
|
-
address.number.
|
4674
|
+
expect(address.number).to eq(45)
|
4788
4675
|
end
|
4789
4676
|
|
4790
4677
|
it "updates the nested embedded document" do
|
4791
|
-
target.name.
|
4678
|
+
expect(target.name).to eq("updated")
|
4792
4679
|
end
|
4793
4680
|
end
|
4794
4681
|
|
@@ -4816,11 +4703,11 @@ describe Mongoid::NestedAttributes do
|
|
4816
4703
|
end
|
4817
4704
|
|
4818
4705
|
before do
|
4819
|
-
person.
|
4706
|
+
person.update_attributes(attributes)
|
4820
4707
|
end
|
4821
4708
|
|
4822
4709
|
it "updates the nested embedded document" do
|
4823
|
-
language.name.
|
4710
|
+
expect(language.name).to eq("deutsch")
|
4824
4711
|
end
|
4825
4712
|
end
|
4826
4713
|
end
|
@@ -4851,11 +4738,11 @@ describe Mongoid::NestedAttributes do
|
|
4851
4738
|
end
|
4852
4739
|
|
4853
4740
|
it "adds the new document to the relation" do
|
4854
|
-
post.title.
|
4741
|
+
expect(post.title).to eq("Testing")
|
4855
4742
|
end
|
4856
4743
|
|
4857
4744
|
it "autosaves the relation" do
|
4858
|
-
user.posts(true).first.title.
|
4745
|
+
expect(user.posts(true).first.title).to eq("Testing")
|
4859
4746
|
end
|
4860
4747
|
end
|
4861
4748
|
|
@@ -4882,15 +4769,15 @@ describe Mongoid::NestedAttributes do
|
|
4882
4769
|
end
|
4883
4770
|
|
4884
4771
|
it "returns false" do
|
4885
|
-
update.
|
4772
|
+
expect(update).to be false
|
4886
4773
|
end
|
4887
4774
|
|
4888
4775
|
it "does not update the child document" do
|
4889
|
-
server.reload.name.
|
4776
|
+
expect(server.reload.name).to eq("test")
|
4890
4777
|
end
|
4891
4778
|
|
4892
4779
|
it "adds the errors to the document" do
|
4893
|
-
node.errors[:servers].
|
4780
|
+
expect(node.errors[:servers]).to_not be_nil
|
4894
4781
|
end
|
4895
4782
|
end
|
4896
4783
|
end
|
@@ -4917,7 +4804,7 @@ describe Mongoid::NestedAttributes do
|
|
4917
4804
|
end
|
4918
4805
|
|
4919
4806
|
it "sets the nested attributes" do
|
4920
|
-
league.reload.divisions.first.name.
|
4807
|
+
expect(league.reload.divisions.first.name).to eq("New Name")
|
4921
4808
|
end
|
4922
4809
|
|
4923
4810
|
context "with corrupted data" do
|
@@ -4937,7 +4824,7 @@ describe Mongoid::NestedAttributes do
|
|
4937
4824
|
end
|
4938
4825
|
|
4939
4826
|
it "sets the nested attributes" do
|
4940
|
-
league.reload.divisions.first.name.
|
4827
|
+
expect(league.reload.divisions.first.name).to eq("Name")
|
4941
4828
|
end
|
4942
4829
|
end
|
4943
4830
|
end
|