mongoid 3.1.6 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +479 -8
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- data/lib/mongoid.rb +10 -76
- data/lib/mongoid/atomic.rb +3 -14
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +65 -101
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -2
- data/lib/mongoid/contextual/memory.rb +23 -11
- data/lib/mongoid/contextual/mongo.rb +75 -57
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/contextual/text_search.rb +178 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/criteria/#findable.rb# +141 -0
- data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
- data/lib/mongoid/criteria/permission.rb +70 -0
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +39 -24
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors/readonly_document.rb +24 -0
- data/lib/mongoid/extensions.rb +15 -7
- data/lib/mongoid/extensions/array.rb +3 -3
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +15 -17
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +2 -1
- data/lib/mongoid/extensions/hash.rb +3 -3
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +7 -7
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +9 -3
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +6 -18
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +3 -3
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/factory.rb +8 -6
- data/lib/mongoid/fields.rb +41 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/localized.rb +1 -1
- data/lib/mongoid/fields/standard.rb +5 -17
- data/lib/mongoid/fields/validators/macro.rb +15 -5
- data/lib/mongoid/{finders.rb → findable.rb} +35 -7
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +216 -0
- data/lib/mongoid/persistable/creatable.rb +189 -0
- data/lib/mongoid/persistable/deletable.rb +149 -0
- data/lib/mongoid/persistable/destroyable.rb +60 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +153 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/query_cache.rb +255 -0
- data/lib/mongoid/railtie.rb +34 -60
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/relations/accessors.rb +15 -51
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +2 -25
- data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +46 -0
- data/lib/mongoid/relations/eager/base.rb +149 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
- data/lib/mongoid/relations/eager/has_many.rb +38 -0
- data/lib/mongoid/relations/eager/has_one.rb +30 -0
- data/lib/mongoid/relations/embedded/batchable.rb +4 -5
- data/lib/mongoid/relations/embedded/in.rb +4 -4
- data/lib/mongoid/relations/embedded/many.rb +14 -32
- data/lib/mongoid/relations/embedded/one.rb +1 -1
- data/lib/mongoid/relations/macros.rb +3 -4
- data/lib/mongoid/relations/many.rb +51 -31
- data/lib/mongoid/relations/marshalable.rb +3 -3
- data/lib/mongoid/relations/metadata.rb +14 -79
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/one.rb +1 -1
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +21 -41
- data/lib/mongoid/relations/referenced/in.rb +4 -20
- data/lib/mongoid/relations/referenced/many.rb +22 -35
- data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +4 -4
- data/lib/mongoid/relations/targets/enumerable.rb +10 -10
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
- data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +185 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +16 -3
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/{state.rb → stateful.rb} +13 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/tasks/database.rake +31 -0
- data/lib/mongoid/tasks/database.rb +107 -0
- data/lib/mongoid/threaded.rb +26 -172
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +0 -122
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +2 -1
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +8 -3
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +3 -3
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contextable_item.rb +5 -0
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dog.rb +1 -1
- data/spec/app/models/draft.rb +9 -0
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/edit.rb +5 -0
- data/spec/app/models/even.rb +7 -0
- data/spec/app/models/event.rb +1 -1
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +1 -3
- data/spec/app/models/id_key.rb +6 -0
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/line_item.rb +1 -1
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +3 -1
- data/spec/app/models/odd.rb +7 -0
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +16 -10
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +3 -3
- data/spec/app/models/post.rb +5 -3
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +10 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/symptom.rb +1 -1
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +3 -3
- data/spec/app/models/video.rb +1 -5
- data/spec/app/models/wiki_page.rb +2 -5
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/#atomic_spec.rb# +365 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
- data/spec/mongoid/attributes/readonly_spec.rb +58 -18
- data/spec/mongoid/attributes_spec.rb +349 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +156 -94
- data/spec/mongoid/contextual/mongo_spec.rb +238 -150
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/contextual/text_search_spec.rb +209 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +715 -2421
- data/spec/mongoid/document_spec.rb +171 -121
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +8 -8
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +29 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/findable_spec.rb +509 -0
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
- data/spec/mongoid/log_subscriber_spec.rb +75 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/matchable/ne_spec.rb +46 -0
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +553 -0
- data/spec/mongoid/persistable/deletable_spec.rb +218 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +498 -0
- data/spec/mongoid/persistable/settable_spec.rb +162 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
- data/spec/mongoid/query_cache_spec.rb +263 -0
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +37 -17
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
- data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
- data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
- data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
- data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +180 -255
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
- data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
- data/spec/mongoid/relations/touchable_spec.rb +333 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +108 -0
- data/spec/mongoid/sessions_spec.rb +319 -178
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
- data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
- data/spec/mongoid/tasks/database_spec.rb +160 -0
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
- data/spec/mongoid/timestamps/updated_spec.rb +9 -13
- data/spec/mongoid/timestamps_spec.rb +9 -13
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +19 -335
- data/spec/spec_helper.rb +31 -13
- metadata +303 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/finders_spec.rb +0 -321
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/ne_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -18,20 +18,7 @@ describe Mongoid::Relations::Macros do
|
|
18
18
|
describe ".embedded_in" do
|
19
19
|
|
20
20
|
it "defines the macro" do
|
21
|
-
klass.
|
22
|
-
end
|
23
|
-
|
24
|
-
context "when the document is versioned" do
|
25
|
-
|
26
|
-
it "raises an error" do
|
27
|
-
expect {
|
28
|
-
Class.new do
|
29
|
-
include Mongoid::Document
|
30
|
-
include Mongoid::Versioning
|
31
|
-
embedded_in :parent_class
|
32
|
-
end
|
33
|
-
}.to raise_error(Mongoid::Errors::VersioningNotOnRoot)
|
34
|
-
end
|
21
|
+
expect(klass).to respond_to(:embedded_in)
|
35
22
|
end
|
36
23
|
|
37
24
|
context "when defining the relation" do
|
@@ -41,25 +28,25 @@ describe Mongoid::Relations::Macros do
|
|
41
28
|
end
|
42
29
|
|
43
30
|
it "adds the metadata to the klass" do
|
44
|
-
klass.relations["person"].
|
31
|
+
expect(klass.relations["person"]).to_not be_nil
|
45
32
|
end
|
46
33
|
|
47
34
|
it "defines the getter" do
|
48
|
-
klass.allocate.
|
35
|
+
expect(klass.allocate).to respond_to(:person)
|
49
36
|
end
|
50
37
|
|
51
38
|
it "defines the setter" do
|
52
|
-
klass.allocate.
|
39
|
+
expect(klass.allocate).to respond_to(:person=)
|
53
40
|
end
|
54
41
|
|
55
42
|
it "creates the correct relation" do
|
56
|
-
klass.relations["person"].relation.
|
43
|
+
expect(klass.relations["person"].relation).to eq(
|
57
44
|
Mongoid::Relations::Embedded::In
|
58
45
|
)
|
59
46
|
end
|
60
47
|
|
61
48
|
it "does not add associated validations" do
|
62
|
-
klass._validators.
|
49
|
+
expect(klass._validators).to be_empty
|
63
50
|
end
|
64
51
|
|
65
52
|
context "metadata properties" do
|
@@ -69,11 +56,11 @@ describe Mongoid::Relations::Macros do
|
|
69
56
|
end
|
70
57
|
|
71
58
|
it "automatically adds the name" do
|
72
|
-
metadata.name.
|
59
|
+
expect(metadata.name).to eq(:person)
|
73
60
|
end
|
74
61
|
|
75
62
|
it "automatically adds the inverse class name" do
|
76
|
-
metadata.inverse_class_name.
|
63
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
77
64
|
end
|
78
65
|
end
|
79
66
|
end
|
@@ -82,7 +69,7 @@ describe Mongoid::Relations::Macros do
|
|
82
69
|
describe ".embeds_many" do
|
83
70
|
|
84
71
|
it "defines the macro" do
|
85
|
-
klass.
|
72
|
+
expect(klass).to respond_to(:embeds_many)
|
86
73
|
end
|
87
74
|
|
88
75
|
context "when defining the relation" do
|
@@ -92,26 +79,26 @@ describe Mongoid::Relations::Macros do
|
|
92
79
|
end
|
93
80
|
|
94
81
|
it "adds the metadata to the klass" do
|
95
|
-
klass.relations["addresses"].
|
82
|
+
expect(klass.relations["addresses"]).to_not be_nil
|
96
83
|
end
|
97
84
|
|
98
85
|
it "defines the getter" do
|
99
|
-
klass.allocate.
|
86
|
+
expect(klass.allocate).to respond_to(:addresses)
|
100
87
|
end
|
101
88
|
|
102
89
|
it "defines the setter" do
|
103
|
-
klass.allocate.
|
90
|
+
expect(klass.allocate).to respond_to(:addresses=)
|
104
91
|
end
|
105
92
|
|
106
93
|
it "creates the correct relation" do
|
107
|
-
klass.relations["addresses"].relation.
|
94
|
+
expect(klass.relations["addresses"].relation).to eq(
|
108
95
|
Mongoid::Relations::Embedded::Many
|
109
96
|
)
|
110
97
|
end
|
111
98
|
|
112
99
|
it "adds an associated validation" do
|
113
|
-
klass._validators[:addresses].first.
|
114
|
-
Mongoid::
|
100
|
+
expect(klass._validators[:addresses].first).to be_a(
|
101
|
+
Mongoid::Validatable::AssociatedValidator
|
115
102
|
)
|
116
103
|
end
|
117
104
|
|
@@ -122,11 +109,11 @@ describe Mongoid::Relations::Macros do
|
|
122
109
|
end
|
123
110
|
|
124
111
|
it "automatically adds the name" do
|
125
|
-
metadata.name.
|
112
|
+
expect(metadata.name).to eq(:addresses)
|
126
113
|
end
|
127
114
|
|
128
115
|
it "automatically adds the inverse class name" do
|
129
|
-
metadata.inverse_class_name.
|
116
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
130
117
|
end
|
131
118
|
end
|
132
119
|
end
|
@@ -142,11 +129,11 @@ describe Mongoid::Relations::Macros do
|
|
142
129
|
end
|
143
130
|
|
144
131
|
it "adds metadata to klass" do
|
145
|
-
metadata.order.
|
132
|
+
expect(metadata.order).to_not be_nil
|
146
133
|
end
|
147
134
|
|
148
135
|
it "returns Origin::Key" do
|
149
|
-
metadata.order.
|
136
|
+
expect(metadata.order).to be_kind_of(Origin::Key)
|
150
137
|
end
|
151
138
|
end
|
152
139
|
|
@@ -157,7 +144,7 @@ describe Mongoid::Relations::Macros do
|
|
157
144
|
end
|
158
145
|
|
159
146
|
it "does not add associated validations" do
|
160
|
-
klass._validators.
|
147
|
+
expect(klass._validators).to be_empty
|
161
148
|
end
|
162
149
|
end
|
163
150
|
end
|
@@ -165,7 +152,7 @@ describe Mongoid::Relations::Macros do
|
|
165
152
|
describe ".embeds_one" do
|
166
153
|
|
167
154
|
it "defines the macro" do
|
168
|
-
klass.
|
155
|
+
expect(klass).to respond_to(:embeds_one)
|
169
156
|
end
|
170
157
|
|
171
158
|
context "when defining the relation" do
|
@@ -175,34 +162,34 @@ describe Mongoid::Relations::Macros do
|
|
175
162
|
end
|
176
163
|
|
177
164
|
it "adds the metadata to the klass" do
|
178
|
-
klass.relations["name"].
|
165
|
+
expect(klass.relations["name"]).to_not be_nil
|
179
166
|
end
|
180
167
|
|
181
168
|
it "defines the getter" do
|
182
|
-
klass.allocate.
|
169
|
+
expect(klass.allocate).to respond_to(:name)
|
183
170
|
end
|
184
171
|
|
185
172
|
it "defines the setter" do
|
186
|
-
klass.allocate.
|
173
|
+
expect(klass.allocate).to respond_to(:name=)
|
187
174
|
end
|
188
175
|
|
189
176
|
it "defines the builder" do
|
190
|
-
klass.allocate.
|
177
|
+
expect(klass.allocate).to respond_to(:build_name)
|
191
178
|
end
|
192
179
|
|
193
180
|
it "defines the creator" do
|
194
|
-
klass.allocate.
|
181
|
+
expect(klass.allocate).to respond_to(:create_name)
|
195
182
|
end
|
196
183
|
|
197
184
|
it "creates the correct relation" do
|
198
|
-
klass.relations["name"].relation.
|
185
|
+
expect(klass.relations["name"].relation).to eq(
|
199
186
|
Mongoid::Relations::Embedded::One
|
200
187
|
)
|
201
188
|
end
|
202
189
|
|
203
190
|
it "adds an associated validation" do
|
204
|
-
klass._validators[:name].first.
|
205
|
-
Mongoid::
|
191
|
+
expect(klass._validators[:name].first).to be_a(
|
192
|
+
Mongoid::Validatable::AssociatedValidator
|
206
193
|
)
|
207
194
|
end
|
208
195
|
|
@@ -213,11 +200,11 @@ describe Mongoid::Relations::Macros do
|
|
213
200
|
end
|
214
201
|
|
215
202
|
it "automatically adds the name" do
|
216
|
-
metadata.name.
|
203
|
+
expect(metadata.name).to eq(:name)
|
217
204
|
end
|
218
205
|
|
219
206
|
it "automatically adds the inverse class name" do
|
220
|
-
metadata.inverse_class_name.
|
207
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
221
208
|
end
|
222
209
|
end
|
223
210
|
end
|
@@ -229,7 +216,7 @@ describe Mongoid::Relations::Macros do
|
|
229
216
|
end
|
230
217
|
|
231
218
|
it "does not add associated validations" do
|
232
|
-
klass._validators.
|
219
|
+
expect(klass._validators).to be_empty
|
233
220
|
end
|
234
221
|
end
|
235
222
|
end
|
@@ -237,7 +224,7 @@ describe Mongoid::Relations::Macros do
|
|
237
224
|
describe ".belongs_to" do
|
238
225
|
|
239
226
|
it "defines the macro" do
|
240
|
-
klass.
|
227
|
+
expect(klass).to respond_to(:belongs_to)
|
241
228
|
end
|
242
229
|
|
243
230
|
context "when the relation is polymorphic" do
|
@@ -248,12 +235,12 @@ describe Mongoid::Relations::Macros do
|
|
248
235
|
klass.belongs_to(:relatable, polymorphic: true, index: true)
|
249
236
|
end
|
250
237
|
|
251
|
-
let(:
|
252
|
-
klass.
|
238
|
+
let(:index) do
|
239
|
+
klass.index_specifications.first
|
253
240
|
end
|
254
241
|
|
255
242
|
it "adds the background index to the definitions" do
|
256
|
-
expect(
|
243
|
+
expect(index.key).to eq(relatable_id: 1, relatable_type: 1)
|
257
244
|
end
|
258
245
|
end
|
259
246
|
end
|
@@ -265,33 +252,33 @@ describe Mongoid::Relations::Macros do
|
|
265
252
|
end
|
266
253
|
|
267
254
|
it "adds the metadata to the klass" do
|
268
|
-
klass.relations["person"].
|
255
|
+
expect(klass.relations["person"]).to_not be_nil
|
269
256
|
end
|
270
257
|
|
271
258
|
it "defines the getter" do
|
272
|
-
klass.allocate.
|
259
|
+
expect(klass.allocate).to respond_to(:person)
|
273
260
|
end
|
274
261
|
|
275
262
|
it "defines the setter" do
|
276
|
-
klass.allocate.
|
263
|
+
expect(klass.allocate).to respond_to(:person=)
|
277
264
|
end
|
278
265
|
|
279
266
|
it "defines the builder" do
|
280
|
-
klass.allocate.
|
267
|
+
expect(klass.allocate).to respond_to(:build_person)
|
281
268
|
end
|
282
269
|
|
283
270
|
it "defines the creator" do
|
284
|
-
klass.allocate.
|
271
|
+
expect(klass.allocate).to respond_to(:create_person)
|
285
272
|
end
|
286
273
|
|
287
274
|
it "creates the correct relation" do
|
288
|
-
klass.relations["person"].relation.
|
275
|
+
expect(klass.relations["person"].relation).to eq(
|
289
276
|
Mongoid::Relations::Referenced::In
|
290
277
|
)
|
291
278
|
end
|
292
279
|
|
293
280
|
it "creates the field for the foreign key" do
|
294
|
-
klass.allocate.
|
281
|
+
expect(klass.allocate).to respond_to(:person_id)
|
295
282
|
end
|
296
283
|
|
297
284
|
context "metadata properties" do
|
@@ -301,11 +288,11 @@ describe Mongoid::Relations::Macros do
|
|
301
288
|
end
|
302
289
|
|
303
290
|
it "automatically adds the name" do
|
304
|
-
metadata.name.
|
291
|
+
expect(metadata.name).to eq(:person)
|
305
292
|
end
|
306
293
|
|
307
294
|
it "automatically adds the inverse class name" do
|
308
|
-
metadata.inverse_class_name.
|
295
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
309
296
|
end
|
310
297
|
end
|
311
298
|
end
|
@@ -314,7 +301,7 @@ describe Mongoid::Relations::Macros do
|
|
314
301
|
describe ".has_many" do
|
315
302
|
|
316
303
|
it "defines the macro" do
|
317
|
-
klass.
|
304
|
+
expect(klass).to respond_to(:has_many)
|
318
305
|
end
|
319
306
|
|
320
307
|
context "when defining the relation" do
|
@@ -324,26 +311,26 @@ describe Mongoid::Relations::Macros do
|
|
324
311
|
end
|
325
312
|
|
326
313
|
it "adds the metadata to the klass" do
|
327
|
-
klass.relations["posts"].
|
314
|
+
expect(klass.relations["posts"]).to_not be_nil
|
328
315
|
end
|
329
316
|
|
330
317
|
it "defines the getter" do
|
331
|
-
klass.allocate.
|
318
|
+
expect(klass.allocate).to respond_to(:posts)
|
332
319
|
end
|
333
320
|
|
334
321
|
it "defines the setter" do
|
335
|
-
klass.allocate.
|
322
|
+
expect(klass.allocate).to respond_to(:posts=)
|
336
323
|
end
|
337
324
|
|
338
325
|
it "creates the correct relation" do
|
339
|
-
klass.relations["posts"].relation.
|
326
|
+
expect(klass.relations["posts"].relation).to eq(
|
340
327
|
Mongoid::Relations::Referenced::Many
|
341
328
|
)
|
342
329
|
end
|
343
330
|
|
344
331
|
it "adds an associated validation" do
|
345
|
-
klass._validators[:posts].first.
|
346
|
-
Mongoid::
|
332
|
+
expect(klass._validators[:posts].first).to be_a(
|
333
|
+
Mongoid::Validatable::AssociatedValidator
|
347
334
|
)
|
348
335
|
end
|
349
336
|
|
@@ -354,11 +341,11 @@ describe Mongoid::Relations::Macros do
|
|
354
341
|
end
|
355
342
|
|
356
343
|
it "automatically adds the name" do
|
357
|
-
metadata.name.
|
344
|
+
expect(metadata.name).to eq(:posts)
|
358
345
|
end
|
359
346
|
|
360
347
|
it "automatically adds the inverse class name" do
|
361
|
-
metadata.inverse_class_name.
|
348
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
362
349
|
end
|
363
350
|
end
|
364
351
|
end
|
@@ -374,11 +361,11 @@ describe Mongoid::Relations::Macros do
|
|
374
361
|
end
|
375
362
|
|
376
363
|
it "adds metadata to klass" do
|
377
|
-
metadata.order.
|
364
|
+
expect(metadata.order).to_not be_nil
|
378
365
|
end
|
379
366
|
|
380
367
|
it "returns Origin::Key" do
|
381
|
-
metadata.order.
|
368
|
+
expect(metadata.order).to be_kind_of(Origin::Key)
|
382
369
|
end
|
383
370
|
end
|
384
371
|
|
@@ -389,7 +376,7 @@ describe Mongoid::Relations::Macros do
|
|
389
376
|
end
|
390
377
|
|
391
378
|
it "does not add associated validations" do
|
392
|
-
klass._validators.
|
379
|
+
expect(klass._validators).to be_empty
|
393
380
|
end
|
394
381
|
end
|
395
382
|
end
|
@@ -397,7 +384,7 @@ describe Mongoid::Relations::Macros do
|
|
397
384
|
describe ".has_and_belongs_to_many" do
|
398
385
|
|
399
386
|
it "defines the macro" do
|
400
|
-
klass.
|
387
|
+
expect(klass).to respond_to(:has_and_belongs_to_many)
|
401
388
|
end
|
402
389
|
|
403
390
|
context "when defining the relation" do
|
@@ -407,25 +394,25 @@ describe Mongoid::Relations::Macros do
|
|
407
394
|
end
|
408
395
|
|
409
396
|
it "adds the metadata to the klass" do
|
410
|
-
klass.relations["preferences"].
|
397
|
+
expect(klass.relations["preferences"]).to_not be_nil
|
411
398
|
end
|
412
399
|
|
413
400
|
it "defines the getter" do
|
414
|
-
klass.allocate.
|
401
|
+
expect(klass.allocate).to respond_to(:preferences)
|
415
402
|
end
|
416
403
|
|
417
404
|
it "defines the setter" do
|
418
|
-
klass.allocate.
|
405
|
+
expect(klass.allocate).to respond_to(:preferences=)
|
419
406
|
end
|
420
407
|
|
421
408
|
it "creates the correct relation" do
|
422
|
-
klass.relations["preferences"].relation.
|
409
|
+
expect(klass.relations["preferences"].relation).to eq(
|
423
410
|
Mongoid::Relations::Referenced::ManyToMany
|
424
411
|
)
|
425
412
|
end
|
426
413
|
|
427
414
|
it "creates the field for the foreign key" do
|
428
|
-
klass.allocate.
|
415
|
+
expect(klass.allocate).to respond_to(:preference_ids)
|
429
416
|
end
|
430
417
|
|
431
418
|
context 'when defining order on relation' do
|
@@ -439,11 +426,11 @@ describe Mongoid::Relations::Macros do
|
|
439
426
|
end
|
440
427
|
|
441
428
|
it "adds metadata to klass" do
|
442
|
-
metadata.order.
|
429
|
+
expect(metadata.order).to_not be_nil
|
443
430
|
end
|
444
431
|
|
445
432
|
it "returns Origin::Key" do
|
446
|
-
metadata.order.
|
433
|
+
expect(metadata.order).to be_kind_of(Origin::Key)
|
447
434
|
end
|
448
435
|
end
|
449
436
|
|
@@ -454,11 +441,11 @@ describe Mongoid::Relations::Macros do
|
|
454
441
|
end
|
455
442
|
|
456
443
|
it "automatically adds the name" do
|
457
|
-
metadata.name.
|
444
|
+
expect(metadata.name).to eq(:preferences)
|
458
445
|
end
|
459
446
|
|
460
447
|
it "automatically adds the inverse class name" do
|
461
|
-
metadata.inverse_class_name.
|
448
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
462
449
|
end
|
463
450
|
end
|
464
451
|
end
|
@@ -467,7 +454,7 @@ describe Mongoid::Relations::Macros do
|
|
467
454
|
describe ".has_one" do
|
468
455
|
|
469
456
|
it "defines the macro" do
|
470
|
-
klass.
|
457
|
+
expect(klass).to respond_to(:has_one)
|
471
458
|
end
|
472
459
|
|
473
460
|
context "when defining the relation" do
|
@@ -477,34 +464,34 @@ describe Mongoid::Relations::Macros do
|
|
477
464
|
end
|
478
465
|
|
479
466
|
it "adds the metadata to the klass" do
|
480
|
-
klass.relations["game"].
|
467
|
+
expect(klass.relations["game"]).to_not be_nil
|
481
468
|
end
|
482
469
|
|
483
470
|
it "defines the getter" do
|
484
|
-
klass.allocate.
|
471
|
+
expect(klass.allocate).to respond_to(:game)
|
485
472
|
end
|
486
473
|
|
487
474
|
it "defines the setter" do
|
488
|
-
klass.allocate.
|
475
|
+
expect(klass.allocate).to respond_to(:game=)
|
489
476
|
end
|
490
477
|
|
491
478
|
it "defines the builder" do
|
492
|
-
klass.allocate.
|
479
|
+
expect(klass.allocate).to respond_to(:build_game)
|
493
480
|
end
|
494
481
|
|
495
482
|
it "defines the creator" do
|
496
|
-
klass.allocate.
|
483
|
+
expect(klass.allocate).to respond_to(:create_game)
|
497
484
|
end
|
498
485
|
|
499
486
|
it "creates the correct relation" do
|
500
|
-
klass.relations["game"].relation.
|
487
|
+
expect(klass.relations["game"].relation).to eq(
|
501
488
|
Mongoid::Relations::Referenced::One
|
502
489
|
)
|
503
490
|
end
|
504
491
|
|
505
492
|
it "adds an associated validation" do
|
506
|
-
klass._validators[:game].first.
|
507
|
-
Mongoid::
|
493
|
+
expect(klass._validators[:game].first).to be_a(
|
494
|
+
Mongoid::Validatable::AssociatedValidator
|
508
495
|
)
|
509
496
|
end
|
510
497
|
|
@@ -515,11 +502,11 @@ describe Mongoid::Relations::Macros do
|
|
515
502
|
end
|
516
503
|
|
517
504
|
it "automatically adds the name" do
|
518
|
-
metadata.name.
|
505
|
+
expect(metadata.name).to eq(:game)
|
519
506
|
end
|
520
507
|
|
521
508
|
it "automatically adds the inverse class name" do
|
522
|
-
metadata.inverse_class_name.
|
509
|
+
expect(metadata.inverse_class_name).to eq("TestClass")
|
523
510
|
end
|
524
511
|
end
|
525
512
|
end
|
@@ -531,7 +518,7 @@ describe Mongoid::Relations::Macros do
|
|
531
518
|
end
|
532
519
|
|
533
520
|
it "does not add associated validations" do
|
534
|
-
klass._validators.
|
521
|
+
expect(klass._validators).to be_empty
|
535
522
|
end
|
536
523
|
end
|
537
524
|
end
|
@@ -543,16 +530,17 @@ describe Mongoid::Relations::Macros do
|
|
543
530
|
end
|
544
531
|
|
545
532
|
it "returns a hash of relations" do
|
546
|
-
klass.allocate.relations.
|
533
|
+
expect(klass.allocate.relations).to be_a_kind_of(Hash)
|
547
534
|
end
|
548
535
|
|
549
536
|
it "has keys that are the relation name" do
|
550
|
-
klass.allocate.relations.keys.first.
|
537
|
+
expect(klass.allocate.relations.keys.first).to eq("name")
|
551
538
|
end
|
552
539
|
|
553
540
|
it "has values that are metadata" do
|
554
|
-
|
555
|
-
|
541
|
+
expect(
|
542
|
+
klass.allocate.relations.values.first
|
543
|
+
).to be_a_kind_of(Mongoid::Relations::Metadata)
|
556
544
|
end
|
557
545
|
end
|
558
546
|
|
@@ -563,16 +551,17 @@ describe Mongoid::Relations::Macros do
|
|
563
551
|
end
|
564
552
|
|
565
553
|
it "returns a hash of relations" do
|
566
|
-
klass.relations.
|
554
|
+
expect(klass.relations).to be_a_kind_of(Hash)
|
567
555
|
end
|
568
556
|
|
569
557
|
it "has keys that are the relation name" do
|
570
|
-
klass.relations.keys.first.
|
558
|
+
expect(klass.relations.keys.first).to eq("name")
|
571
559
|
end
|
572
560
|
|
573
561
|
it "has values that are metadata" do
|
574
|
-
|
575
|
-
|
562
|
+
expect(
|
563
|
+
klass.relations.values.first
|
564
|
+
).to be_a_kind_of(Mongoid::Relations::Metadata)
|
576
565
|
end
|
577
566
|
end
|
578
567
|
|
@@ -590,6 +579,12 @@ describe Mongoid::Relations::Macros do
|
|
590
579
|
"spec"
|
591
580
|
end
|
592
581
|
end
|
582
|
+
|
583
|
+
module AnotherExtension
|
584
|
+
def very_short_name
|
585
|
+
"spec"
|
586
|
+
end
|
587
|
+
end
|
593
588
|
end
|
594
589
|
|
595
590
|
let(:peep) do
|
@@ -607,7 +602,7 @@ describe Mongoid::Relations::Macros do
|
|
607
602
|
end
|
608
603
|
|
609
604
|
it "extends the relation" do
|
610
|
-
peep.handle.full_name.
|
605
|
+
expect(peep.handle.full_name).to eq("spec")
|
611
606
|
end
|
612
607
|
end
|
613
608
|
|
@@ -618,7 +613,18 @@ describe Mongoid::Relations::Macros do
|
|
618
613
|
end
|
619
614
|
|
620
615
|
it "extends the relation" do
|
621
|
-
peep.handle.short_name.
|
616
|
+
expect(peep.handle.short_name).to eq("spec")
|
617
|
+
end
|
618
|
+
end
|
619
|
+
|
620
|
+
context "when the extension is two modules" do
|
621
|
+
|
622
|
+
before do
|
623
|
+
Peep.embeds_one(:handle, extend: [ Handle::Extension, Handle::AnotherExtension ])
|
624
|
+
end
|
625
|
+
|
626
|
+
it "extends the relation" do
|
627
|
+
expect(peep.handle.very_short_name).to eq("spec")
|
622
628
|
end
|
623
629
|
end
|
624
630
|
end
|