mongoid 3.1.7 → 4.0.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +0 -2
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +7 -7
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +9 -9
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +15 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +22 -33
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +143 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/criterion/findable.rb +0 -179
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/draft.rb +0 -9
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/#atomic_spec.rb# +0 -365
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::
|
3
|
+
describe Mongoid::Scopable do
|
4
4
|
|
5
5
|
describe ".default_scope" do
|
6
6
|
|
@@ -19,11 +19,11 @@ describe Mongoid::Scoping do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
it "adds the default scope to the class" do
|
22
|
-
Band.default_scoping.call.
|
22
|
+
expect(Band.default_scoping.call).to eq(criteria)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "flags as being default scoped" do
|
26
|
-
Band.
|
26
|
+
expect(Band).to be_default_scoping
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -42,11 +42,11 @@ describe Mongoid::Scoping do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "adds the default scope to the class" do
|
45
|
-
Band.default_scoping.call.
|
45
|
+
expect(Band.default_scoping.call).to eq(criteria)
|
46
46
|
end
|
47
47
|
|
48
48
|
it "flags as being default scoped" do
|
49
|
-
Band.
|
49
|
+
expect(Band).to be_default_scoping
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -89,23 +89,23 @@ describe Mongoid::Scoping do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it "adds the first default scope" do
|
92
|
-
Band.default_scoping.call.selector["name"].
|
92
|
+
expect(Band.default_scoping.call.selector["name"]).to eq("Depeche Mode")
|
93
93
|
end
|
94
94
|
|
95
95
|
it "adds the additional default scope" do
|
96
|
-
Band.default_scoping.call.selector["origin"].
|
96
|
+
expect(Band.default_scoping.call.selector["origin"]).to eq("England")
|
97
97
|
end
|
98
98
|
|
99
99
|
it "adds the proc default scope" do
|
100
|
-
Band.default_scoping.call.selector["active"].
|
100
|
+
expect(Band.default_scoping.call.selector["active"]).to be true
|
101
101
|
end
|
102
102
|
|
103
103
|
it "delays execution of the merge until called" do
|
104
|
-
Band.all.selector["likes"].
|
104
|
+
expect(Band.all.selector["likes"]).to_not eq(Band.all.selector["likes"])
|
105
105
|
end
|
106
106
|
|
107
107
|
it "flags as being default scoped" do
|
108
|
-
Band.
|
108
|
+
expect(Band).to be_default_scoping
|
109
109
|
end
|
110
110
|
end
|
111
111
|
end
|
@@ -129,7 +129,7 @@ describe Mongoid::Scoping do
|
|
129
129
|
context "when not in an unscoped block" do
|
130
130
|
|
131
131
|
it "returns true" do
|
132
|
-
Band.
|
132
|
+
expect(Band).to be_default_scopable
|
133
133
|
end
|
134
134
|
end
|
135
135
|
|
@@ -137,7 +137,7 @@ describe Mongoid::Scoping do
|
|
137
137
|
|
138
138
|
it "returns false" do
|
139
139
|
Band.unscoped do
|
140
|
-
Band.
|
140
|
+
expect(Band).to_not be_default_scopable
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
@@ -146,7 +146,7 @@ describe Mongoid::Scoping do
|
|
146
146
|
context "when a default scope does not exist" do
|
147
147
|
|
148
148
|
it "returns false" do
|
149
|
-
Band.
|
149
|
+
expect(Band).to_not be_default_scopable
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
@@ -156,7 +156,7 @@ describe Mongoid::Scoping do
|
|
156
156
|
context "when no criteria exists on the stack" do
|
157
157
|
|
158
158
|
it "returns an empty criteria" do
|
159
|
-
Band.queryable.selector.
|
159
|
+
expect(Band.queryable.selector).to be_empty
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
@@ -175,7 +175,7 @@ describe Mongoid::Scoping do
|
|
175
175
|
end
|
176
176
|
|
177
177
|
it "returns the criteria on the stack" do
|
178
|
-
Band.queryable.
|
178
|
+
expect(Band.queryable).to eq(criteria)
|
179
179
|
end
|
180
180
|
end
|
181
181
|
end
|
@@ -206,7 +206,7 @@ describe Mongoid::Scoping do
|
|
206
206
|
end
|
207
207
|
|
208
208
|
it "adds the extension to the scope" do
|
209
|
-
scope.selector.
|
209
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
|
210
210
|
end
|
211
211
|
end
|
212
212
|
|
@@ -241,7 +241,7 @@ describe Mongoid::Scoping do
|
|
241
241
|
end
|
242
242
|
|
243
243
|
it "returns the correct documents" do
|
244
|
-
scoped.
|
244
|
+
expect(scoped).to eq([ undertow ])
|
245
245
|
end
|
246
246
|
end
|
247
247
|
end
|
@@ -260,7 +260,7 @@ describe Mongoid::Scoping do
|
|
260
260
|
end
|
261
261
|
|
262
262
|
it "adds a method for the scope" do
|
263
|
-
Band.
|
263
|
+
expect(Band).to respond_to(:active)
|
264
264
|
end
|
265
265
|
|
266
266
|
context "when calling the scope" do
|
@@ -272,15 +272,15 @@ describe Mongoid::Scoping do
|
|
272
272
|
end
|
273
273
|
|
274
274
|
it "returns a criteria" do
|
275
|
-
scope.
|
275
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
276
276
|
end
|
277
277
|
|
278
278
|
it "contains the proper selector" do
|
279
|
-
scope.selector.
|
279
|
+
expect(scope.selector).to eq({ "active" => true })
|
280
280
|
end
|
281
281
|
|
282
282
|
it "contains the proper options" do
|
283
|
-
scope.options.
|
283
|
+
expect(scope.options).to eq({ skip: 10 })
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
@@ -302,19 +302,19 @@ describe Mongoid::Scoping do
|
|
302
302
|
end
|
303
303
|
|
304
304
|
it "returns a criteria" do
|
305
|
-
scope.
|
305
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
306
306
|
end
|
307
307
|
|
308
308
|
it "contains the proper selector" do
|
309
|
-
scope.selector.
|
309
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "England" })
|
310
310
|
end
|
311
311
|
|
312
312
|
it "contains the proper options" do
|
313
|
-
scope.options.
|
313
|
+
expect(scope.options).to eq({ skip: 10 })
|
314
314
|
end
|
315
315
|
|
316
316
|
it "does not modify the original scope" do
|
317
|
-
Band.active.selector.
|
317
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
318
318
|
end
|
319
319
|
end
|
320
320
|
|
@@ -329,23 +329,23 @@ describe Mongoid::Scoping do
|
|
329
329
|
end
|
330
330
|
|
331
331
|
it "returns a criteria" do
|
332
|
-
scope.
|
332
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
333
333
|
end
|
334
334
|
|
335
335
|
it "contains the proper selector" do
|
336
|
-
scope.selector.
|
336
|
+
expect(scope.selector).to eq({ "origin" => "England", "active" => true })
|
337
337
|
end
|
338
338
|
|
339
339
|
it "contains the proper options" do
|
340
|
-
scope.options.
|
340
|
+
expect(scope.options).to eq({ skip: 10 })
|
341
341
|
end
|
342
342
|
|
343
343
|
it "does not modify the original scope" do
|
344
|
-
Band.active.selector.
|
344
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
345
345
|
end
|
346
346
|
|
347
347
|
it "does not modify the original criteria" do
|
348
|
-
criteria.selector.
|
348
|
+
expect(criteria.selector).to eq({ "origin" => "England" })
|
349
349
|
end
|
350
350
|
end
|
351
351
|
end
|
@@ -417,7 +417,7 @@ describe Mongoid::Scoping do
|
|
417
417
|
end
|
418
418
|
|
419
419
|
it "adds the extension to the scope" do
|
420
|
-
scope.selector.
|
420
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
|
421
421
|
end
|
422
422
|
end
|
423
423
|
|
@@ -425,30 +425,29 @@ describe Mongoid::Scoping do
|
|
425
425
|
|
426
426
|
before do
|
427
427
|
Band.scope(:active, ->{ Band.where(active: true).skip(10) })
|
428
|
+
Band.scope(:named_by, ->(name) { Band.where(name: name) if name })
|
428
429
|
end
|
429
430
|
|
430
431
|
after do
|
431
432
|
class << Band
|
432
433
|
undef_method :active
|
434
|
+
undef_method :named_by
|
433
435
|
end
|
434
436
|
Band._declared_scopes.clear
|
435
437
|
end
|
436
438
|
|
437
439
|
it "adds a method for the scope" do
|
438
|
-
Band.
|
440
|
+
expect(Band).to respond_to(:active)
|
439
441
|
end
|
440
442
|
|
441
|
-
context "when
|
442
|
-
before do
|
443
|
-
Band.scope(:named_by, ->(name) { Band.where(name: name) if name})
|
444
|
-
end
|
443
|
+
context "when calling the scope" do
|
445
444
|
|
446
|
-
|
447
|
-
Band.named_by(nil).should be_a(Mongoid::Criteria)
|
448
|
-
end
|
449
|
-
end
|
445
|
+
context "when the scope would return nil" do
|
450
446
|
|
451
|
-
|
447
|
+
it "returns a chainable empty scope" do
|
448
|
+
expect(Band.named_by(nil)).to be_a(Mongoid::Criteria)
|
449
|
+
end
|
450
|
+
end
|
452
451
|
|
453
452
|
context "when calling from the class" do
|
454
453
|
|
@@ -457,15 +456,15 @@ describe Mongoid::Scoping do
|
|
457
456
|
end
|
458
457
|
|
459
458
|
it "returns a criteria" do
|
460
|
-
scope.
|
459
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
461
460
|
end
|
462
461
|
|
463
462
|
it "contains the proper selector" do
|
464
|
-
scope.selector.
|
463
|
+
expect(scope.selector).to eq({ "active" => true })
|
465
464
|
end
|
466
465
|
|
467
466
|
it "contains the proper options" do
|
468
|
-
scope.options.
|
467
|
+
expect(scope.options).to eq({ skip: 10 })
|
469
468
|
end
|
470
469
|
end
|
471
470
|
|
@@ -487,19 +486,19 @@ describe Mongoid::Scoping do
|
|
487
486
|
end
|
488
487
|
|
489
488
|
it "returns a criteria" do
|
490
|
-
scope.
|
489
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
491
490
|
end
|
492
491
|
|
493
492
|
it "contains the proper selector" do
|
494
|
-
scope.selector.
|
493
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "England" })
|
495
494
|
end
|
496
495
|
|
497
496
|
it "contains the proper options" do
|
498
|
-
scope.options.
|
497
|
+
expect(scope.options).to eq({ skip: 10 })
|
499
498
|
end
|
500
499
|
|
501
500
|
it "does not modify the original scope" do
|
502
|
-
Band.active.selector.
|
501
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
503
502
|
end
|
504
503
|
end
|
505
504
|
|
@@ -514,23 +513,23 @@ describe Mongoid::Scoping do
|
|
514
513
|
end
|
515
514
|
|
516
515
|
it "returns a criteria" do
|
517
|
-
scope.
|
516
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
518
517
|
end
|
519
518
|
|
520
519
|
it "contains the proper selector" do
|
521
|
-
scope.selector.
|
520
|
+
expect(scope.selector).to eq({ "origin" => "England", "active" => true })
|
522
521
|
end
|
523
522
|
|
524
523
|
it "contains the proper options" do
|
525
|
-
scope.options.
|
524
|
+
expect(scope.options).to eq({ skip: 10 })
|
526
525
|
end
|
527
526
|
|
528
527
|
it "does not modify the original scope" do
|
529
|
-
Band.active.selector.
|
528
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
530
529
|
end
|
531
530
|
|
532
531
|
it "does not modify the original criteria" do
|
533
|
-
criteria.selector.
|
532
|
+
expect(criteria.selector).to eq({ "origin" => "England" })
|
534
533
|
end
|
535
534
|
end
|
536
535
|
end
|
@@ -613,7 +612,7 @@ describe Mongoid::Scoping do
|
|
613
612
|
end
|
614
613
|
|
615
614
|
it "properly chains the $or queries together" do
|
616
|
-
criteria.selector.
|
615
|
+
expect(criteria.selector).to eq({
|
617
616
|
"$or" => [
|
618
617
|
{ "ccc" => nil },
|
619
618
|
{ "ccc" => { "$gt" => time }},
|
@@ -675,7 +674,7 @@ describe Mongoid::Scoping do
|
|
675
674
|
context "when the scope stack has not been accessed" do
|
676
675
|
|
677
676
|
it "returns an empty array" do
|
678
|
-
Band.scope_stack.
|
677
|
+
expect(Band.scope_stack).to eq([])
|
679
678
|
end
|
680
679
|
end
|
681
680
|
|
@@ -694,7 +693,7 @@ describe Mongoid::Scoping do
|
|
694
693
|
end
|
695
694
|
|
696
695
|
it "returns the criteria in the array" do
|
697
|
-
Band.scope_stack.
|
696
|
+
expect(Band.scope_stack).to eq([ criteria ])
|
698
697
|
end
|
699
698
|
end
|
700
699
|
end
|
@@ -708,15 +707,15 @@ describe Mongoid::Scoping do
|
|
708
707
|
end
|
709
708
|
|
710
709
|
it "returns a criteria" do
|
711
|
-
scoped.
|
710
|
+
expect(scoped).to be_a(Mongoid::Criteria)
|
712
711
|
end
|
713
712
|
|
714
713
|
it "contains an empty selector" do
|
715
|
-
scoped.selector.
|
714
|
+
expect(scoped.selector).to be_empty
|
716
715
|
end
|
717
716
|
|
718
717
|
it "contains empty options" do
|
719
|
-
scoped.options.
|
718
|
+
expect(scoped.options).to be_empty
|
720
719
|
end
|
721
720
|
end
|
722
721
|
|
@@ -727,15 +726,15 @@ describe Mongoid::Scoping do
|
|
727
726
|
end
|
728
727
|
|
729
728
|
it "returns a criteria" do
|
730
|
-
scoped.
|
729
|
+
expect(scoped).to be_a(Mongoid::Criteria)
|
731
730
|
end
|
732
731
|
|
733
732
|
it "contains an empty selector" do
|
734
|
-
scoped.selector.
|
733
|
+
expect(scoped.selector).to be_empty
|
735
734
|
end
|
736
735
|
|
737
736
|
it "contains the options" do
|
738
|
-
scoped.options.
|
737
|
+
expect(scoped.options).to eq({ skip: 10, limit: 10 })
|
739
738
|
end
|
740
739
|
end
|
741
740
|
|
@@ -758,7 +757,7 @@ describe Mongoid::Scoping do
|
|
758
757
|
end
|
759
758
|
|
760
759
|
it "allows the default scope to be added" do
|
761
|
-
scoped.selector.
|
760
|
+
expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
|
762
761
|
end
|
763
762
|
|
764
763
|
context "when chained after an unscoped criteria" do
|
@@ -768,7 +767,7 @@ describe Mongoid::Scoping do
|
|
768
767
|
end
|
769
768
|
|
770
769
|
it "reapplies the default scope" do
|
771
|
-
scoped.selector.
|
770
|
+
expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
|
772
771
|
end
|
773
772
|
end
|
774
773
|
end
|
@@ -795,7 +794,7 @@ describe Mongoid::Scoping do
|
|
795
794
|
end
|
796
795
|
|
797
796
|
it "removes the default scope from the criteria" do
|
798
|
-
unscoped.selector.
|
797
|
+
expect(unscoped.selector).to be_empty
|
799
798
|
end
|
800
799
|
|
801
800
|
context "when chained after a scoped criteria" do
|
@@ -805,7 +804,7 @@ describe Mongoid::Scoping do
|
|
805
804
|
end
|
806
805
|
|
807
806
|
it "removes all scoping" do
|
808
|
-
unscoped.selector.
|
807
|
+
expect(unscoped.selector).to be_empty
|
809
808
|
end
|
810
809
|
end
|
811
810
|
end
|
@@ -816,7 +815,7 @@ describe Mongoid::Scoping do
|
|
816
815
|
|
817
816
|
it "does not allow default scoping to be added in the block" do
|
818
817
|
Band.unscoped do
|
819
|
-
Band.skip(10).selector.
|
818
|
+
expect(Band.skip(10).selector).to be_empty
|
820
819
|
end
|
821
820
|
end
|
822
821
|
end
|
@@ -825,7 +824,7 @@ describe Mongoid::Scoping do
|
|
825
824
|
|
826
825
|
it "does not allow default scoping to be added in the block" do
|
827
826
|
Band.unscoped do
|
828
|
-
Band.scoped.selector.
|
827
|
+
expect(Band.scoped.selector).to be_empty
|
829
828
|
end
|
830
829
|
end
|
831
830
|
end
|
@@ -845,7 +844,7 @@ describe Mongoid::Scoping do
|
|
845
844
|
|
846
845
|
it "does not allow the default scope to be applied" do
|
847
846
|
Band.unscoped do
|
848
|
-
Band.skipped.selector.
|
847
|
+
expect(Band.skipped.selector).to be_empty
|
849
848
|
end
|
850
849
|
end
|
851
850
|
end
|
@@ -870,7 +869,7 @@ describe Mongoid::Scoping do
|
|
870
869
|
|
871
870
|
it "returns an empty criteria" do
|
872
871
|
Band.unscoped do
|
873
|
-
Band.with_default_scope.selector.
|
872
|
+
expect(Band.with_default_scope.selector).to be_empty
|
874
873
|
end
|
875
874
|
end
|
876
875
|
end
|
@@ -882,7 +881,7 @@ describe Mongoid::Scoping do
|
|
882
881
|
end
|
883
882
|
|
884
883
|
it "returns an empty criteria" do
|
885
|
-
scoped.selector.
|
884
|
+
expect(scoped.selector).to be_empty
|
886
885
|
end
|
887
886
|
end
|
888
887
|
|
@@ -893,7 +892,7 @@ describe Mongoid::Scoping do
|
|
893
892
|
end
|
894
893
|
|
895
894
|
it "returns a scoped criteria" do
|
896
|
-
scoped.selector.
|
895
|
+
expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
|
897
896
|
end
|
898
897
|
end
|
899
898
|
end
|
@@ -906,13 +905,13 @@ describe Mongoid::Scoping do
|
|
906
905
|
|
907
906
|
it "yields to the criteria" do
|
908
907
|
Band.with_scope(criteria) do |crit|
|
909
|
-
crit.selector.
|
908
|
+
expect(crit.selector).to eq({ "active" => true })
|
910
909
|
end
|
911
910
|
end
|
912
911
|
|
913
912
|
it "pops the criteria off the stack" do
|
914
913
|
Band.with_scope(criteria) {}
|
915
|
-
Band.scope_stack.
|
914
|
+
expect(Band.scope_stack).to be_empty
|
916
915
|
end
|
917
916
|
end
|
918
917
|
|
@@ -920,58 +919,7 @@ describe Mongoid::Scoping do
|
|
920
919
|
|
921
920
|
it "sets the threading options" do
|
922
921
|
Band.without_default_scope do
|
923
|
-
Mongoid::Threaded.
|
924
|
-
end
|
925
|
-
end
|
926
|
-
end
|
927
|
-
|
928
|
-
context "when the document is paranoid" do
|
929
|
-
|
930
|
-
context "when calling a class method" do
|
931
|
-
|
932
|
-
let(:criteria) do
|
933
|
-
Fish.fresh
|
934
|
-
end
|
935
|
-
|
936
|
-
it "includes the deleted_at criteria in the selector" do
|
937
|
-
criteria.selector.should eq({
|
938
|
-
"deleted_at" => nil, "fresh" => true
|
939
|
-
})
|
940
|
-
end
|
941
|
-
end
|
942
|
-
|
943
|
-
context "when chaining a class method to unscoped" do
|
944
|
-
|
945
|
-
let(:criteria) do
|
946
|
-
Fish.unscoped.fresh
|
947
|
-
end
|
948
|
-
|
949
|
-
it "does not include the deleted_at in the selector" do
|
950
|
-
criteria.selector.should eq({ "fresh" => true })
|
951
|
-
end
|
952
|
-
end
|
953
|
-
|
954
|
-
context "when chaining a class method to deleted" do
|
955
|
-
|
956
|
-
let(:criteria) do
|
957
|
-
Fish.deleted.fresh
|
958
|
-
end
|
959
|
-
|
960
|
-
it "includes the deleted_at $ne criteria in the selector" do
|
961
|
-
criteria.selector.should eq({
|
962
|
-
"deleted_at" => { "$ne" => nil }, "fresh" => true
|
963
|
-
})
|
964
|
-
end
|
965
|
-
end
|
966
|
-
|
967
|
-
context "when chaining a where to unscoped" do
|
968
|
-
|
969
|
-
let(:criteria) do
|
970
|
-
Fish.unscoped.where(fresh: true)
|
971
|
-
end
|
972
|
-
|
973
|
-
it "includes no default scoping information in the selector" do
|
974
|
-
criteria.selector.should eq({ "fresh" => true })
|
922
|
+
expect(Mongoid::Threaded).to be_executing(:without_default_scope)
|
975
923
|
end
|
976
924
|
end
|
977
925
|
end
|