mongoid 3.1.6 → 4.0.0
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 +432 -8
- data/README.md +5 -6
- data/lib/config/locales/en.yml +32 -18
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/atomic.rb +1 -12
- 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/attributes.rb +63 -101
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -2
- data/lib/mongoid/contextual/memory.rb +18 -6
- data/lib/mongoid/contextual/mongo.rb +64 -56
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/contextual/text_search.rb +178 -0
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
- data/lib/mongoid/criteria/permission.rb +70 -0
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/document.rb +32 -17
- data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors/readonly_document.rb +24 -0
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/extensions/array.rb +3 -3
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +15 -17
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +2 -1
- data/lib/mongoid/extensions/hash.rb +3 -3
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +7 -7
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +9 -3
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +6 -18
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +3 -3
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/factory.rb +8 -6
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/localized.rb +1 -1
- data/lib/mongoid/fields/standard.rb +5 -17
- data/lib/mongoid/fields/validators/macro.rb +15 -5
- data/lib/mongoid/fields.rb +41 -8
- data/lib/mongoid/{finders.rb → findable.rb} +8 -2
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +149 -0
- data/lib/mongoid/persistable/destroyable.rb +60 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +152 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/persistable.rb +216 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/query_cache.rb +247 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations/accessors.rb +13 -49
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +1 -24
- data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- 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/builders.rb +2 -2
- 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/base.rb +149 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
- data/lib/mongoid/relations/eager/has_many.rb +38 -0
- data/lib/mongoid/relations/eager/has_one.rb +30 -0
- data/lib/mongoid/relations/eager.rb +46 -0
- data/lib/mongoid/relations/embedded/batchable.rb +4 -5
- data/lib/mongoid/relations/embedded/in.rb +4 -4
- data/lib/mongoid/relations/embedded/many.rb +14 -32
- data/lib/mongoid/relations/embedded/one.rb +1 -1
- data/lib/mongoid/relations/macros.rb +3 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/marshalable.rb +3 -3
- data/lib/mongoid/relations/metadata.rb +14 -79
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +21 -41
- data/lib/mongoid/relations/referenced/in.rb +4 -20
- data/lib/mongoid/relations/referenced/many.rb +19 -32
- data/lib/mongoid/relations/referenced/many_to_many.rb +15 -38
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +180 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +16 -3
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/{state.rb → stateful.rb} +13 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/tasks/database.rake +31 -0
- data/lib/mongoid/tasks/database.rb +107 -0
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/threaded.rb +0 -157
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +23 -19
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +10 -76
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +13 -24
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +0 -122
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +2 -1
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +8 -3
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +3 -3
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dog.rb +1 -1
- data/spec/app/models/draft.rb +9 -0
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/edit.rb +5 -0
- data/spec/app/models/even.rb +7 -0
- data/spec/app/models/event.rb +1 -1
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +1 -3
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/line_item.rb +1 -1
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +3 -1
- data/spec/app/models/odd.rb +7 -0
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +16 -10
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +3 -3
- data/spec/app/models/post.rb +5 -3
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +10 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/symptom.rb +1 -1
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +3 -3
- data/spec/app/models/video.rb +1 -5
- data/spec/app/models/wiki_page.rb +2 -5
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/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 +58 -18
- data/spec/mongoid/attributes_spec.rb +315 -436
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
- data/spec/mongoid/contextual/atomic_spec.rb +68 -58
- 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 +151 -94
- data/spec/mongoid/contextual/mongo_spec.rb +238 -150
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/contextual/text_search_spec.rb +209 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1255 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +578 -2295
- 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_destroyed_spec.rb +33 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +8 -8
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +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 +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +127 -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} +117 -116
- data/spec/mongoid/log_subscriber_spec.rb +75 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/matchable/ne_spec.rb +46 -0
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +218 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +461 -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} +9 -9
- data/spec/mongoid/query_cache_spec.rb +231 -0
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +37 -17
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
- data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
- data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
- data/spec/mongoid/relations/embedded/many_spec.rb +393 -372
- data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +180 -255
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +434 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +352 -424
- data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
- data/spec/mongoid/relations/touchable_spec.rb +333 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +107 -0
- data/spec/mongoid/sessions_spec.rb +289 -178
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
- data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
- data/spec/mongoid/tasks/database_spec.rb +160 -0
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
- data/spec/mongoid/timestamps/updated_spec.rb +9 -13
- data/spec/mongoid/timestamps_spec.rb +9 -13
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +19 -335
- data/spec/spec_helper.rb +29 -13
- metadata +296 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/matchers.rb +0 -32
- 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/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/atomic.rb +0 -231
- 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/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/operations.rb +0 -214
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/ne_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
|
@@ -15,7 +15,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it "does not contain any operations" do
|
|
18
|
-
modifiers.
|
|
18
|
+
expect(modifiers).to eq({})
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -32,7 +32,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
it "adds the add to set with each modifiers" do
|
|
35
|
-
modifiers.
|
|
35
|
+
expect(modifiers).to eq({
|
|
36
36
|
"$addToSet" => { "preference_ids" => { "$each" => [ "one", "two" ] }}
|
|
37
37
|
})
|
|
38
38
|
end
|
|
@@ -50,7 +50,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
it "adds the add to set with each modifiers" do
|
|
53
|
-
modifiers.
|
|
53
|
+
expect(modifiers).to eq({
|
|
54
54
|
"$addToSet" =>
|
|
55
55
|
{ "preference_ids" =>
|
|
56
56
|
{ "$each" => [ "one", "two", "three" ] }
|
|
@@ -70,7 +70,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
it "does not contain any pull operations" do
|
|
73
|
-
modifiers.
|
|
73
|
+
expect(modifiers).to eq({})
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
@@ -87,7 +87,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
it "adds the push all modifiers" do
|
|
90
|
-
modifiers.
|
|
90
|
+
expect(modifiers).to eq(
|
|
91
91
|
{ "$pull" => { "addresses" => { "_id" => { "$in" => [ "one" ]}}}}
|
|
92
92
|
)
|
|
93
93
|
end
|
|
@@ -109,7 +109,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
109
109
|
end
|
|
110
110
|
|
|
111
111
|
it "overwrites the previous pulls" do
|
|
112
|
-
modifiers.
|
|
112
|
+
expect(modifiers).to eq(
|
|
113
113
|
{ "$pull" => { "addresses" => { "_id" => { "$in" => [ "two" ]}}}}
|
|
114
114
|
)
|
|
115
115
|
end
|
|
@@ -126,7 +126,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
it "does not contain any pull operations" do
|
|
129
|
-
modifiers.
|
|
129
|
+
expect(modifiers).to eq({})
|
|
130
130
|
end
|
|
131
131
|
end
|
|
132
132
|
|
|
@@ -143,7 +143,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
143
143
|
end
|
|
144
144
|
|
|
145
145
|
it "adds the push all modifiers" do
|
|
146
|
-
modifiers.
|
|
146
|
+
expect(modifiers).to eq(
|
|
147
147
|
{ "$pullAll" =>
|
|
148
148
|
{ "addresses" => [
|
|
149
149
|
{ "_id" => "one" }
|
|
@@ -170,7 +170,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
170
170
|
end
|
|
171
171
|
|
|
172
172
|
it "adds the pull all modifiers" do
|
|
173
|
-
modifiers.
|
|
173
|
+
expect(modifiers).to eq(
|
|
174
174
|
{ "$pullAll" =>
|
|
175
175
|
{ "addresses" => [
|
|
176
176
|
{ "street" => "Hobrechtstr." },
|
|
@@ -193,7 +193,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
193
193
|
end
|
|
194
194
|
|
|
195
195
|
it "does not contain any push operations" do
|
|
196
|
-
modifiers.
|
|
196
|
+
expect(modifiers).to eq({})
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
199
|
|
|
@@ -210,7 +210,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
210
210
|
end
|
|
211
211
|
|
|
212
212
|
it "adds the push all modifiers" do
|
|
213
|
-
modifiers.
|
|
213
|
+
expect(modifiers).to eq(
|
|
214
214
|
{ "$pushAll" =>
|
|
215
215
|
{ "addresses" => [
|
|
216
216
|
{ "street" => "Oxford St" }
|
|
@@ -237,7 +237,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
237
237
|
end
|
|
238
238
|
|
|
239
239
|
it "adds the push all modifiers" do
|
|
240
|
-
modifiers.
|
|
240
|
+
expect(modifiers).to eq(
|
|
241
241
|
{ "$pushAll" =>
|
|
242
242
|
{ "addresses" => [
|
|
243
243
|
{ "street" => "Hobrechtstr." },
|
|
@@ -268,7 +268,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
268
268
|
end
|
|
269
269
|
|
|
270
270
|
it "adds the push all modifiers to the conflicts hash" do
|
|
271
|
-
modifiers.
|
|
271
|
+
expect(modifiers).to eq(
|
|
272
272
|
{ "$set" => { "addresses.0.street" => "Bond" },
|
|
273
273
|
conflicts: { "$pushAll" =>
|
|
274
274
|
{ "addresses" => [
|
|
@@ -297,7 +297,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
297
297
|
end
|
|
298
298
|
|
|
299
299
|
it "adds the push all modifiers to the conflicts hash" do
|
|
300
|
-
modifiers.
|
|
300
|
+
expect(modifiers).to eq(
|
|
301
301
|
{ "$pullAll" => {
|
|
302
302
|
"addresses" => { "street" => "Bond St" }},
|
|
303
303
|
conflicts: { "$pushAll" =>
|
|
@@ -327,7 +327,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
327
327
|
end
|
|
328
328
|
|
|
329
329
|
it "adds the push all modifiers to the conflicts hash" do
|
|
330
|
-
modifiers.
|
|
330
|
+
expect(modifiers).to eq(
|
|
331
331
|
{ "$pushAll" => {
|
|
332
332
|
"addresses.0.locations" => [{ "street" => "Bond St" }]},
|
|
333
333
|
conflicts: { "$pushAll" =>
|
|
@@ -360,14 +360,14 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
360
360
|
end
|
|
361
361
|
|
|
362
362
|
it "adds the sets to the modifiers" do
|
|
363
|
-
modifiers.
|
|
363
|
+
expect(modifiers).to eq({ "$set" => { "title" => "Sir" } })
|
|
364
364
|
end
|
|
365
365
|
end
|
|
366
366
|
|
|
367
367
|
context "when the sets contain an id" do
|
|
368
368
|
|
|
369
369
|
let(:sets) do
|
|
370
|
-
{ "_id" =>
|
|
370
|
+
{ "_id" => BSON::ObjectId.new }
|
|
371
371
|
end
|
|
372
372
|
|
|
373
373
|
before do
|
|
@@ -375,7 +375,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
375
375
|
end
|
|
376
376
|
|
|
377
377
|
it "does not include the id sets" do
|
|
378
|
-
modifiers.
|
|
378
|
+
expect(modifiers).to eq({})
|
|
379
379
|
end
|
|
380
380
|
end
|
|
381
381
|
|
|
@@ -386,7 +386,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
386
386
|
end
|
|
387
387
|
|
|
388
388
|
it "does not contain set operations" do
|
|
389
|
-
modifiers.
|
|
389
|
+
expect(modifiers).to eq({})
|
|
390
390
|
end
|
|
391
391
|
end
|
|
392
392
|
end
|
|
@@ -407,7 +407,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
407
407
|
end
|
|
408
408
|
|
|
409
409
|
it "adds the set modifiers to the conflicts hash" do
|
|
410
|
-
modifiers.
|
|
410
|
+
expect(modifiers).to eq(
|
|
411
411
|
{ "$pullAll" =>
|
|
412
412
|
{ "addresses" => [
|
|
413
413
|
{ "_id" => "one" }
|
|
@@ -437,7 +437,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
437
437
|
end
|
|
438
438
|
|
|
439
439
|
it "adds the unsets to the modifiers" do
|
|
440
|
-
modifiers.
|
|
440
|
+
expect(modifiers).to eq({ "$unset" => { "addresses" => true } })
|
|
441
441
|
end
|
|
442
442
|
end
|
|
443
443
|
|
|
@@ -448,7 +448,7 @@ describe Mongoid::Atomic::Modifiers do
|
|
|
448
448
|
end
|
|
449
449
|
|
|
450
450
|
it "does not contain unset operations" do
|
|
451
|
-
modifiers.
|
|
451
|
+
expect(modifiers).to eq({})
|
|
452
452
|
end
|
|
453
453
|
end
|
|
454
454
|
end
|
|
@@ -25,21 +25,21 @@ describe Mongoid::Atomic::Paths::Embedded::Many do
|
|
|
25
25
|
describe "#delete_modifier" do
|
|
26
26
|
|
|
27
27
|
it "returns $pull" do
|
|
28
|
-
many.delete_modifier.
|
|
28
|
+
expect(many.delete_modifier).to eq("$pull")
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
describe "#document" do
|
|
33
33
|
|
|
34
34
|
it "returns the document" do
|
|
35
|
-
many.document.
|
|
35
|
+
expect(many.document).to eq(address)
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
describe "#insert_modifier" do
|
|
40
40
|
|
|
41
41
|
it "returns $push" do
|
|
42
|
-
many.insert_modifier.
|
|
42
|
+
expect(many.insert_modifier).to eq("$push")
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -48,7 +48,7 @@ describe Mongoid::Atomic::Paths::Embedded::Many do
|
|
|
48
48
|
context "when the document is embedded one level" do
|
|
49
49
|
|
|
50
50
|
it "returns the name of the relation" do
|
|
51
|
-
many.path.
|
|
51
|
+
expect(many.path).to eq("addresses")
|
|
52
52
|
end
|
|
53
53
|
end
|
|
54
54
|
|
|
@@ -67,7 +67,7 @@ describe Mongoid::Atomic::Paths::Embedded::Many do
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
it "returns the nested path to the relation" do
|
|
70
|
-
many.path.
|
|
70
|
+
expect(many.path).to eq("addresses.locations")
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
end
|
|
@@ -85,12 +85,12 @@ describe Mongoid::Atomic::Paths::Embedded::Many do
|
|
|
85
85
|
person.phones << phone
|
|
86
86
|
end
|
|
87
87
|
it "return the name of the store_as in relation" do
|
|
88
|
-
many.position.
|
|
88
|
+
expect(many.position).to eq("mobile_phones")
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
it "returns the name of the relation" do
|
|
93
|
-
many.position.
|
|
93
|
+
expect(many.position).to eq("addresses")
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
|
|
@@ -111,48 +111,7 @@ describe Mongoid::Atomic::Paths::Embedded::Many do
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
it "returns the nested position to the relation" do
|
|
114
|
-
many.position.
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
describe "#selector" do
|
|
120
|
-
|
|
121
|
-
context "when the document is embedded one level" do
|
|
122
|
-
|
|
123
|
-
it "returns the the hash with parent selector" do
|
|
124
|
-
many.selector.should eq(
|
|
125
|
-
{ "_id" => person._id, "addresses._id" => address._id }
|
|
126
|
-
)
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
context "when the document is embedded multiple levels" do
|
|
131
|
-
|
|
132
|
-
let(:location) do
|
|
133
|
-
Location.new(name: "home")
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
before do
|
|
137
|
-
address.locations << location
|
|
138
|
-
address.new_record = false
|
|
139
|
-
address.post_persist
|
|
140
|
-
location.new_record = false
|
|
141
|
-
location.post_persist
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
let(:many) do
|
|
145
|
-
described_class.new(location)
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it "returns the hash with all parent selectors" do
|
|
149
|
-
many.selector.should eq(
|
|
150
|
-
{
|
|
151
|
-
"_id" => person._id,
|
|
152
|
-
"addresses._id" => address._id,
|
|
153
|
-
"addresses.0.locations._id" => location._id
|
|
154
|
-
}
|
|
155
|
-
)
|
|
114
|
+
expect(many.position).to eq("addresses.0.locations.0")
|
|
156
115
|
end
|
|
157
116
|
end
|
|
158
117
|
end
|
|
@@ -21,21 +21,21 @@ describe Mongoid::Atomic::Paths::Embedded::One do
|
|
|
21
21
|
describe "#delete_modifier" do
|
|
22
22
|
|
|
23
23
|
it "returns $unset" do
|
|
24
|
-
one.delete_modifier.
|
|
24
|
+
expect(one.delete_modifier).to eq("$unset")
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
describe "#document" do
|
|
29
29
|
|
|
30
30
|
it "returns the document" do
|
|
31
|
-
one.document.
|
|
31
|
+
expect(one.document).to eq(name)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
describe "#insert_modifier" do
|
|
36
36
|
|
|
37
37
|
it "returns $set" do
|
|
38
|
-
one.insert_modifier.
|
|
38
|
+
expect(one.insert_modifier).to eq("$set")
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
|
|
@@ -44,7 +44,7 @@ describe Mongoid::Atomic::Paths::Embedded::One do
|
|
|
44
44
|
context "when the document is embedded one level" do
|
|
45
45
|
|
|
46
46
|
it "returns the name of the relation" do
|
|
47
|
-
one.path.
|
|
47
|
+
expect(one.path).to eq("name")
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|
|
@@ -68,7 +68,7 @@ describe Mongoid::Atomic::Paths::Embedded::One do
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
it "returns the nested path to the relation" do
|
|
71
|
-
one.path.
|
|
71
|
+
expect(one.path).to eq("phone_numbers.country_code")
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
|
@@ -78,7 +78,7 @@ describe Mongoid::Atomic::Paths::Embedded::One do
|
|
|
78
78
|
context "when the document is embedded one level" do
|
|
79
79
|
|
|
80
80
|
it "returns the name of the relation" do
|
|
81
|
-
one.position.
|
|
81
|
+
expect(one.position).to eq("name")
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
@@ -103,49 +103,7 @@ describe Mongoid::Atomic::Paths::Embedded::One do
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
it "returns the nested position to the relation" do
|
|
106
|
-
one.position.
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
describe "#selector" do
|
|
112
|
-
|
|
113
|
-
context "when the document is embedded one level" do
|
|
114
|
-
|
|
115
|
-
it "returns the the hash with parent selector" do
|
|
116
|
-
one.selector.should eq({ "_id" => person._id, "name._id" => name._id })
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
context "when the document is embedded multiple levels" do
|
|
121
|
-
|
|
122
|
-
let(:phone) do
|
|
123
|
-
Phone.new(number: "404-555-1212")
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
let(:country_code) do
|
|
127
|
-
CountryCode.new(code: 1)
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
before do
|
|
131
|
-
phone.country_code = country_code
|
|
132
|
-
person.phone_numbers << phone
|
|
133
|
-
phone.new_record = false
|
|
134
|
-
phone.post_persist
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
let(:one) do
|
|
138
|
-
described_class.new(country_code)
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
it "returns the hash with all parent selectors" do
|
|
142
|
-
one.selector.should eq(
|
|
143
|
-
{
|
|
144
|
-
"_id" => person._id,
|
|
145
|
-
"phone_numbers._id" => phone._id,
|
|
146
|
-
"phone_numbers.0.country_code._id" => country_code._id
|
|
147
|
-
}
|
|
148
|
-
)
|
|
106
|
+
expect(one.position).to eq("phone_numbers.0.country_code")
|
|
149
107
|
end
|
|
150
108
|
end
|
|
151
109
|
end
|
|
@@ -13,21 +13,21 @@ describe Mongoid::Atomic::Paths::Root do
|
|
|
13
13
|
describe "#document" do
|
|
14
14
|
|
|
15
15
|
it "returns the document" do
|
|
16
|
-
root.document.
|
|
16
|
+
expect(root.document).to eq(person)
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
describe "#path" do
|
|
21
21
|
|
|
22
22
|
it "returns an empty string" do
|
|
23
|
-
root.path.
|
|
23
|
+
expect(root.path).to be_empty
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
describe "#position" do
|
|
28
28
|
|
|
29
29
|
it "returns an empty string" do
|
|
30
|
-
root.position.
|
|
30
|
+
expect(root.position).to be_empty
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
@@ -45,62 +45,4 @@ describe Mongoid::Atomic::Paths::Root do
|
|
|
45
45
|
expect { root.insert_modifier }.to raise_error(Mongoid::Errors::InvalidPath)
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
-
|
|
49
|
-
describe "#selector" do
|
|
50
|
-
|
|
51
|
-
context "when using a shard key" do
|
|
52
|
-
|
|
53
|
-
let(:profile) do
|
|
54
|
-
Profile.new(name: "google")
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
let(:root) do
|
|
58
|
-
described_class.new(profile)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "returns the id and shard key in the hash" do
|
|
62
|
-
root.selector.should eq({ "_id" => profile.id, "name" => profile.name })
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
context "when not using a shard key" do
|
|
67
|
-
|
|
68
|
-
context "when using object ids" do
|
|
69
|
-
|
|
70
|
-
it "returns the hash with the id" do
|
|
71
|
-
root.selector.should eq({ "_id" => person.id })
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context "when using a composite key" do
|
|
76
|
-
|
|
77
|
-
let(:account) do
|
|
78
|
-
Account.new(name: "savings")
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
let(:root) do
|
|
82
|
-
described_class.new(account)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
context "when the composite key has changed" do
|
|
86
|
-
|
|
87
|
-
before do
|
|
88
|
-
account.new_record = false
|
|
89
|
-
account.name = "current"
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "returns the hash with the old key" do
|
|
93
|
-
root.selector.should eq({ "_id" => "savings" })
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
context "when the composite key has not changed" do
|
|
98
|
-
|
|
99
|
-
it "returns the hash with the key" do
|
|
100
|
-
root.selector.should eq({ "_id" => "savings" })
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
48
|
end
|
|
@@ -28,14 +28,14 @@ describe Mongoid::Atomic::Paths do
|
|
|
28
28
|
context "when document is an embeds_one" do
|
|
29
29
|
|
|
30
30
|
it "returns $unset" do
|
|
31
|
-
name.atomic_delete_modifier.
|
|
31
|
+
expect(name.atomic_delete_modifier).to eq("$unset")
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
context "when document is an embeds_many" do
|
|
36
36
|
|
|
37
37
|
it "returns $pull" do
|
|
38
|
-
address.atomic_delete_modifier.
|
|
38
|
+
expect(address.atomic_delete_modifier).to eq("$pull")
|
|
39
39
|
end
|
|
40
40
|
end
|
|
41
41
|
end
|
|
@@ -50,14 +50,14 @@ describe Mongoid::Atomic::Paths do
|
|
|
50
50
|
context "when document is an embeds_one" do
|
|
51
51
|
|
|
52
52
|
it "returns $set" do
|
|
53
|
-
name.atomic_insert_modifier.
|
|
53
|
+
expect(name.atomic_insert_modifier).to eq("$set")
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
context "when document is an embeds_many" do
|
|
58
58
|
|
|
59
59
|
it "returns $push" do
|
|
60
|
-
address.atomic_insert_modifier.
|
|
60
|
+
expect(address.atomic_insert_modifier).to eq("$push")
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
end
|
|
@@ -67,7 +67,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
67
67
|
context "when the document is a parent" do
|
|
68
68
|
|
|
69
69
|
it "returns an empty string" do
|
|
70
|
-
person.atomic_path.
|
|
70
|
+
expect(person.atomic_path).to be_empty
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -78,7 +78,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
it "returns the inverse_of value of the association" do
|
|
81
|
-
address.atomic_path.
|
|
81
|
+
expect(address.atomic_path).to eq("addresses")
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
@@ -90,7 +90,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
it "returns the JSON notation to the document" do
|
|
93
|
-
location.atomic_path.
|
|
93
|
+
expect(location.atomic_path).to eq("addresses.locations")
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
end
|
|
@@ -100,7 +100,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
100
100
|
context "when the document is a parent" do
|
|
101
101
|
|
|
102
102
|
it "returns an id.atomic_selector" do
|
|
103
|
-
person.atomic_selector.
|
|
103
|
+
expect(person.atomic_selector).to eq({ "_id" => person.id })
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
|
|
@@ -111,7 +111,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
it "returns the association with id.atomic_selector" do
|
|
114
|
-
address.atomic_selector.
|
|
114
|
+
expect(address.atomic_selector).to eq(
|
|
115
115
|
{ "_id" => person.id, "addresses._id" => address.id }
|
|
116
116
|
)
|
|
117
117
|
end
|
|
@@ -125,7 +125,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
it "returns the JSON notation to the document with ids" do
|
|
128
|
-
location.atomic_selector.
|
|
128
|
+
expect(location.atomic_selector).to eq(
|
|
129
129
|
{
|
|
130
130
|
"_id" => person.id,
|
|
131
131
|
"addresses._id" => address.id,
|
|
@@ -141,7 +141,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
141
141
|
context "when the document is a parent" do
|
|
142
142
|
|
|
143
143
|
it "returns an empty string" do
|
|
144
|
-
person.atomic_position.
|
|
144
|
+
expect(person.atomic_position).to be_empty
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
@@ -154,7 +154,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
154
154
|
context "when the document is new" do
|
|
155
155
|
|
|
156
156
|
it "returns the.atomic_path without index" do
|
|
157
|
-
address.atomic_position.
|
|
157
|
+
expect(address.atomic_position).to eq("addresses")
|
|
158
158
|
end
|
|
159
159
|
end
|
|
160
160
|
|
|
@@ -165,7 +165,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
165
165
|
end
|
|
166
166
|
|
|
167
167
|
it "returns the.atomic_path plus index" do
|
|
168
|
-
address.atomic_position.
|
|
168
|
+
expect(address.atomic_position).to eq("addresses.0")
|
|
169
169
|
end
|
|
170
170
|
end
|
|
171
171
|
end
|
|
@@ -185,7 +185,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
185
185
|
context "when the document is new" do
|
|
186
186
|
|
|
187
187
|
it "returns the.atomic_path with parent indexes" do
|
|
188
|
-
location.atomic_position.
|
|
188
|
+
expect(location.atomic_position).to eq("addresses.0.locations")
|
|
189
189
|
end
|
|
190
190
|
end
|
|
191
191
|
|
|
@@ -196,7 +196,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
196
196
|
end
|
|
197
197
|
|
|
198
198
|
it "returns the.atomic_path plus index" do
|
|
199
|
-
location.atomic_position.
|
|
199
|
+
expect(location.atomic_position).to eq("addresses.0.locations.1")
|
|
200
200
|
end
|
|
201
201
|
end
|
|
202
202
|
end
|
|
@@ -207,7 +207,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
207
207
|
context "when the document is a parent" do
|
|
208
208
|
|
|
209
209
|
it "returns an empty string" do
|
|
210
|
-
person.atomic_path.
|
|
210
|
+
expect(person.atomic_path).to be_empty
|
|
211
211
|
end
|
|
212
212
|
end
|
|
213
213
|
|
|
@@ -224,7 +224,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
224
224
|
end
|
|
225
225
|
|
|
226
226
|
it "returns the.atomic_path without the index" do
|
|
227
|
-
address.atomic_path.
|
|
227
|
+
expect(address.atomic_path).to eq("addresses")
|
|
228
228
|
end
|
|
229
229
|
|
|
230
230
|
context "and there are 10 or more documents" do
|
|
@@ -236,7 +236,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
236
236
|
end
|
|
237
237
|
|
|
238
238
|
it "returns the.atomic_path without the index" do
|
|
239
|
-
address.atomic_path.
|
|
239
|
+
expect(address.atomic_path).to eq("addresses")
|
|
240
240
|
end
|
|
241
241
|
end
|
|
242
242
|
end
|
|
@@ -261,7 +261,7 @@ describe Mongoid::Atomic::Paths do
|
|
|
261
261
|
end
|
|
262
262
|
|
|
263
263
|
it "returns the.atomic_path plus index" do
|
|
264
|
-
location.atomic_path.
|
|
264
|
+
expect(location.atomic_path).to eq("addresses.0.locations")
|
|
265
265
|
end
|
|
266
266
|
|
|
267
267
|
end
|