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
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::
|
3
|
+
describe Mongoid::Reloadable do
|
4
4
|
|
5
5
|
describe "#reload" do
|
6
6
|
|
@@ -19,11 +19,11 @@ describe Mongoid::Reloading do
|
|
19
19
|
|
20
20
|
it "reloads the object attributes from the db" do
|
21
21
|
person.reload
|
22
|
-
person.age.
|
22
|
+
expect(person.age).to eq(35)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "reload should return self" do
|
26
|
-
person.reload.
|
26
|
+
expect(person.reload).to eq(from_db)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -42,11 +42,11 @@ describe Mongoid::Reloading do
|
|
42
42
|
|
43
43
|
it "reloads the object attributes from the db" do
|
44
44
|
account.reload
|
45
|
-
account.number.
|
45
|
+
expect(account.number).to eq("1001")
|
46
46
|
end
|
47
47
|
|
48
48
|
it "reload should return self" do
|
49
|
-
account.reload.
|
49
|
+
expect(account.reload).to eq(from_db)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -62,7 +62,7 @@ describe Mongoid::Reloading do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "runs the callback" do
|
65
|
-
book.chapters.
|
65
|
+
expect(book.chapters).to eq(5)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -78,11 +78,11 @@ describe Mongoid::Reloading do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it "resets the dirty modifications" do
|
81
|
-
person.changes.
|
81
|
+
expect(person.changes).to be_empty
|
82
82
|
end
|
83
83
|
|
84
84
|
it "resets attributes_before_type_cast" do
|
85
|
-
person.attributes_before_type_cast.
|
85
|
+
expect(person.attributes_before_type_cast).to be_empty
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -123,15 +123,15 @@ describe Mongoid::Reloading do
|
|
123
123
|
end
|
124
124
|
|
125
125
|
it "reloads the embedded document attributes" do
|
126
|
-
reloaded.number.
|
126
|
+
expect(reloaded.number).to eq(3)
|
127
127
|
end
|
128
128
|
|
129
129
|
it "reloads the reference on the parent" do
|
130
|
-
person.addresses.first.
|
130
|
+
expect(person.addresses.first).to eq(reloaded)
|
131
131
|
end
|
132
132
|
|
133
133
|
it "retains the relation to the parent" do
|
134
|
-
reloaded.addressable.
|
134
|
+
expect(reloaded.addressable).to eq(person)
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
@@ -151,15 +151,15 @@ describe Mongoid::Reloading do
|
|
151
151
|
end
|
152
152
|
|
153
153
|
it "reloads the embedded document attributes" do
|
154
|
-
reloaded.last_name.
|
154
|
+
expect(reloaded.last_name).to eq("Vicious")
|
155
155
|
end
|
156
156
|
|
157
157
|
it "reloads the reference on the parent" do
|
158
|
-
person.name.
|
158
|
+
expect(person.name).to eq(reloaded)
|
159
159
|
end
|
160
160
|
|
161
161
|
it "retains the relation to the parent" do
|
162
|
-
reloaded.namable.
|
162
|
+
expect(reloaded.namable).to eq(person)
|
163
163
|
end
|
164
164
|
end
|
165
165
|
end
|
@@ -184,15 +184,15 @@ describe Mongoid::Reloading do
|
|
184
184
|
end
|
185
185
|
|
186
186
|
it "reloads the embedded document attributes" do
|
187
|
-
reloaded.name.
|
187
|
+
expect(reloaded.name).to eq("work")
|
188
188
|
end
|
189
189
|
|
190
190
|
it "reloads the reference on the parent" do
|
191
|
-
address.locations.first.
|
191
|
+
expect(address.locations.first).to eq(reloaded)
|
192
192
|
end
|
193
193
|
|
194
194
|
it "reloads the reference on the root" do
|
195
|
-
person.addresses.first.locations.first.
|
195
|
+
expect(person.addresses.first.locations.first).to eq(reloaded)
|
196
196
|
end
|
197
197
|
end
|
198
198
|
end
|
@@ -214,7 +214,7 @@ describe Mongoid::Reloading do
|
|
214
214
|
end
|
215
215
|
|
216
216
|
it "reloads the association" do
|
217
|
-
person.addresses.
|
217
|
+
expect(person.addresses).to be_empty
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
@@ -237,7 +237,7 @@ describe Mongoid::Reloading do
|
|
237
237
|
end
|
238
238
|
|
239
239
|
it "reloads the association" do
|
240
|
-
person.game.score.
|
240
|
+
expect(person.game.score).to eq(75)
|
241
241
|
end
|
242
242
|
end
|
243
243
|
|
@@ -256,49 +256,32 @@ describe Mongoid::Reloading do
|
|
256
256
|
end
|
257
257
|
|
258
258
|
it "reloads the association" do
|
259
|
-
game.person.title.
|
259
|
+
expect(game.person.title).to eq("Mam")
|
260
260
|
end
|
261
261
|
end
|
262
|
+
end
|
263
|
+
end
|
262
264
|
|
263
|
-
|
264
|
-
|
265
|
-
before do
|
266
|
-
Mongoid.identity_map_enabled = true
|
267
|
-
end
|
268
|
-
|
269
|
-
after do
|
270
|
-
Mongoid.identity_map_enabled = false
|
271
|
-
end
|
272
|
-
|
273
|
-
context "when the relation type changes" do
|
274
|
-
|
275
|
-
let!(:doctor) do
|
276
|
-
Doctor.create
|
277
|
-
end
|
278
|
-
|
279
|
-
let!(:game) do
|
280
|
-
Game.create(:person => doctor)
|
281
|
-
end
|
282
|
-
|
283
|
-
before do
|
284
|
-
doctor.becomes(Doktor)
|
285
|
-
end
|
265
|
+
context "when overriding #id alias" do
|
286
266
|
|
287
|
-
|
267
|
+
let!(:object) do
|
268
|
+
IdKey.create(key: 'foo')
|
269
|
+
end
|
288
270
|
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
271
|
+
let!(:from_db) do
|
272
|
+
IdKey.find(object._id).tap do |object|
|
273
|
+
object.key = 'bar'
|
274
|
+
object.save
|
275
|
+
end
|
276
|
+
end
|
293
277
|
|
294
|
-
|
278
|
+
it "reloads the object attributes from the db" do
|
279
|
+
object.reload
|
280
|
+
expect(object.key).to eq('bar')
|
281
|
+
end
|
295
282
|
|
296
|
-
|
297
|
-
|
298
|
-
end
|
299
|
-
end
|
300
|
-
end
|
301
|
-
end
|
283
|
+
it "reload should return self" do
|
284
|
+
expect(object.reload).to eq(from_db)
|
302
285
|
end
|
303
286
|
end
|
304
287
|
end
|
@@ -1,32 +1,9 @@
|
|
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
|
|
7
|
-
context "when provided a criteria" do
|
8
|
-
|
9
|
-
let(:criteria) do
|
10
|
-
Band.where(name: "Depeche Mode")
|
11
|
-
end
|
12
|
-
|
13
|
-
before do
|
14
|
-
Band.default_scope criteria
|
15
|
-
end
|
16
|
-
|
17
|
-
after do
|
18
|
-
Band.default_scoping = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
it "adds the default scope to the class" do
|
22
|
-
Band.default_scoping.call.should eq(criteria)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "flags as being default scoped" do
|
26
|
-
Band.should be_default_scoping
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
7
|
context "when provided a proc" do
|
31
8
|
|
32
9
|
let(:criteria) do
|
@@ -42,15 +19,15 @@ describe Mongoid::Scoping do
|
|
42
19
|
end
|
43
20
|
|
44
21
|
it "adds the default scope to the class" do
|
45
|
-
Band.default_scoping.call.
|
22
|
+
expect(Band.default_scoping.call).to eq(criteria)
|
46
23
|
end
|
47
24
|
|
48
25
|
it "flags as being default scoped" do
|
49
|
-
Band.
|
26
|
+
expect(Band).to be_default_scoping
|
50
27
|
end
|
51
28
|
end
|
52
29
|
|
53
|
-
context "when provided a non proc
|
30
|
+
context "when provided a non proc" do
|
54
31
|
|
55
32
|
it "raises an error" do
|
56
33
|
expect {
|
@@ -62,11 +39,11 @@ describe Mongoid::Scoping do
|
|
62
39
|
context "when there is more then one default_scope" do
|
63
40
|
|
64
41
|
let(:criteria) do
|
65
|
-
Band.where(name: "Depeche Mode")
|
42
|
+
->{ Band.where(name: "Depeche Mode") }
|
66
43
|
end
|
67
44
|
|
68
45
|
let(:additional_criteria) do
|
69
|
-
Band.where(origin: "England")
|
46
|
+
->{ Band.where(origin: "England") }
|
70
47
|
end
|
71
48
|
|
72
49
|
let(:proc_criteria) do
|
@@ -89,23 +66,23 @@ describe Mongoid::Scoping do
|
|
89
66
|
end
|
90
67
|
|
91
68
|
it "adds the first default scope" do
|
92
|
-
Band.default_scoping.call.selector["name"].
|
69
|
+
expect(Band.default_scoping.call.selector["name"]).to eq("Depeche Mode")
|
93
70
|
end
|
94
71
|
|
95
72
|
it "adds the additional default scope" do
|
96
|
-
Band.default_scoping.call.selector["origin"].
|
73
|
+
expect(Band.default_scoping.call.selector["origin"]).to eq("England")
|
97
74
|
end
|
98
75
|
|
99
76
|
it "adds the proc default scope" do
|
100
|
-
Band.default_scoping.call.selector["active"].
|
77
|
+
expect(Band.default_scoping.call.selector["active"]).to be true
|
101
78
|
end
|
102
79
|
|
103
80
|
it "delays execution of the merge until called" do
|
104
|
-
Band.all.selector["likes"].
|
81
|
+
expect(Band.all.selector["likes"]).to_not eq(Band.all.selector["likes"])
|
105
82
|
end
|
106
83
|
|
107
84
|
it "flags as being default scoped" do
|
108
|
-
Band.
|
85
|
+
expect(Band).to be_default_scoping
|
109
86
|
end
|
110
87
|
end
|
111
88
|
end
|
@@ -129,7 +106,7 @@ describe Mongoid::Scoping do
|
|
129
106
|
context "when not in an unscoped block" do
|
130
107
|
|
131
108
|
it "returns true" do
|
132
|
-
Band.
|
109
|
+
expect(Band).to be_default_scopable
|
133
110
|
end
|
134
111
|
end
|
135
112
|
|
@@ -137,7 +114,7 @@ describe Mongoid::Scoping do
|
|
137
114
|
|
138
115
|
it "returns false" do
|
139
116
|
Band.unscoped do
|
140
|
-
Band.
|
117
|
+
expect(Band).to_not be_default_scopable
|
141
118
|
end
|
142
119
|
end
|
143
120
|
end
|
@@ -146,7 +123,7 @@ describe Mongoid::Scoping do
|
|
146
123
|
context "when a default scope does not exist" do
|
147
124
|
|
148
125
|
it "returns false" do
|
149
|
-
Band.
|
126
|
+
expect(Band).to_not be_default_scopable
|
150
127
|
end
|
151
128
|
end
|
152
129
|
end
|
@@ -156,7 +133,7 @@ describe Mongoid::Scoping do
|
|
156
133
|
context "when no criteria exists on the stack" do
|
157
134
|
|
158
135
|
it "returns an empty criteria" do
|
159
|
-
Band.queryable.selector.
|
136
|
+
expect(Band.queryable.selector).to be_empty
|
160
137
|
end
|
161
138
|
end
|
162
139
|
|
@@ -175,7 +152,7 @@ describe Mongoid::Scoping do
|
|
175
152
|
end
|
176
153
|
|
177
154
|
it "returns the criteria on the stack" do
|
178
|
-
Band.queryable.
|
155
|
+
expect(Band.queryable).to eq(criteria)
|
179
156
|
end
|
180
157
|
end
|
181
158
|
end
|
@@ -187,7 +164,7 @@ describe Mongoid::Scoping do
|
|
187
164
|
context "when a block is provided" do
|
188
165
|
|
189
166
|
before do
|
190
|
-
Band.scope(:active, Band.where(active: true)) do
|
167
|
+
Band.scope(:active, ->{ Band.where(active: true) }) do
|
191
168
|
def add_origin
|
192
169
|
tap { |c| c.selector[:origin] = "Deutschland" }
|
193
170
|
end
|
@@ -206,7 +183,7 @@ describe Mongoid::Scoping do
|
|
206
183
|
end
|
207
184
|
|
208
185
|
it "adds the extension to the scope" do
|
209
|
-
scope.selector.
|
186
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
|
210
187
|
end
|
211
188
|
end
|
212
189
|
|
@@ -215,7 +192,7 @@ describe Mongoid::Scoping do
|
|
215
192
|
before do
|
216
193
|
Record.scope(
|
217
194
|
:tool,
|
218
|
-
Record.where(:name.in => [ "undertow", "aenima", "lateralus" ])
|
195
|
+
->{ Record.where(:name.in => [ "undertow", "aenima", "lateralus" ]) }
|
219
196
|
)
|
220
197
|
end
|
221
198
|
|
@@ -241,7 +218,7 @@ describe Mongoid::Scoping do
|
|
241
218
|
end
|
242
219
|
|
243
220
|
it "returns the correct documents" do
|
244
|
-
scoped.
|
221
|
+
expect(scoped).to eq([ undertow ])
|
245
222
|
end
|
246
223
|
end
|
247
224
|
end
|
@@ -249,7 +226,7 @@ describe Mongoid::Scoping do
|
|
249
226
|
context "when no block is provided" do
|
250
227
|
|
251
228
|
before do
|
252
|
-
Band.scope(:active, Band.where(active: true).skip(10))
|
229
|
+
Band.scope(:active, ->{ Band.where(active: true).skip(10) })
|
253
230
|
end
|
254
231
|
|
255
232
|
after do
|
@@ -260,7 +237,7 @@ describe Mongoid::Scoping do
|
|
260
237
|
end
|
261
238
|
|
262
239
|
it "adds a method for the scope" do
|
263
|
-
Band.
|
240
|
+
expect(Band).to respond_to(:active)
|
264
241
|
end
|
265
242
|
|
266
243
|
context "when calling the scope" do
|
@@ -272,22 +249,22 @@ describe Mongoid::Scoping do
|
|
272
249
|
end
|
273
250
|
|
274
251
|
it "returns a criteria" do
|
275
|
-
scope.
|
252
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
276
253
|
end
|
277
254
|
|
278
255
|
it "contains the proper selector" do
|
279
|
-
scope.selector.
|
256
|
+
expect(scope.selector).to eq({ "active" => true })
|
280
257
|
end
|
281
258
|
|
282
259
|
it "contains the proper options" do
|
283
|
-
scope.options.
|
260
|
+
expect(scope.options).to eq({ skip: 10 })
|
284
261
|
end
|
285
262
|
end
|
286
263
|
|
287
264
|
context "when chained to another scope" do
|
288
265
|
|
289
266
|
before do
|
290
|
-
Band.scope(:english, Band.where(origin: "England"))
|
267
|
+
Band.scope(:english, ->{ Band.where(origin: "England") })
|
291
268
|
end
|
292
269
|
|
293
270
|
after do
|
@@ -302,19 +279,19 @@ describe Mongoid::Scoping do
|
|
302
279
|
end
|
303
280
|
|
304
281
|
it "returns a criteria" do
|
305
|
-
scope.
|
282
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
306
283
|
end
|
307
284
|
|
308
285
|
it "contains the proper selector" do
|
309
|
-
scope.selector.
|
286
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "England" })
|
310
287
|
end
|
311
288
|
|
312
289
|
it "contains the proper options" do
|
313
|
-
scope.options.
|
290
|
+
expect(scope.options).to eq({ skip: 10 })
|
314
291
|
end
|
315
292
|
|
316
293
|
it "does not modify the original scope" do
|
317
|
-
Band.active.selector.
|
294
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
318
295
|
end
|
319
296
|
end
|
320
297
|
|
@@ -329,23 +306,23 @@ describe Mongoid::Scoping do
|
|
329
306
|
end
|
330
307
|
|
331
308
|
it "returns a criteria" do
|
332
|
-
scope.
|
309
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
333
310
|
end
|
334
311
|
|
335
312
|
it "contains the proper selector" do
|
336
|
-
scope.selector.
|
313
|
+
expect(scope.selector).to eq({ "origin" => "England", "active" => true })
|
337
314
|
end
|
338
315
|
|
339
316
|
it "contains the proper options" do
|
340
|
-
scope.options.
|
317
|
+
expect(scope.options).to eq({ skip: 10 })
|
341
318
|
end
|
342
319
|
|
343
320
|
it "does not modify the original scope" do
|
344
|
-
Band.active.selector.
|
321
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
345
322
|
end
|
346
323
|
|
347
324
|
it "does not modify the original criteria" do
|
348
|
-
criteria.selector.
|
325
|
+
expect(criteria.selector).to eq({ "origin" => "England" })
|
349
326
|
end
|
350
327
|
end
|
351
328
|
end
|
@@ -369,8 +346,8 @@ describe Mongoid::Scoping do
|
|
369
346
|
|
370
347
|
it "raises an exception" do
|
371
348
|
expect {
|
372
|
-
Band.scope(:active, Band.where(active: true))
|
373
|
-
Band.scope(:active, Band.where(active: true))
|
349
|
+
Band.scope(:active, ->{ Band.where(active: true) })
|
350
|
+
Band.scope(:active, ->{ Band.where(active: true) })
|
374
351
|
}.to raise_error(Mongoid::Errors::ScopeOverwrite)
|
375
352
|
end
|
376
353
|
end
|
@@ -386,8 +363,8 @@ describe Mongoid::Scoping do
|
|
386
363
|
end
|
387
364
|
|
388
365
|
it "raises no exception" do
|
389
|
-
Band.scope(:active, Band.where(active: true))
|
390
|
-
Band.scope(:active, Band.where(active: true))
|
366
|
+
Band.scope(:active, ->{ Band.where(active: true) })
|
367
|
+
Band.scope(:active, ->{ Band.where(active: true) })
|
391
368
|
end
|
392
369
|
end
|
393
370
|
end
|
@@ -417,7 +394,7 @@ describe Mongoid::Scoping do
|
|
417
394
|
end
|
418
395
|
|
419
396
|
it "adds the extension to the scope" do
|
420
|
-
scope.selector.
|
397
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
|
421
398
|
end
|
422
399
|
end
|
423
400
|
|
@@ -425,30 +402,29 @@ describe Mongoid::Scoping do
|
|
425
402
|
|
426
403
|
before do
|
427
404
|
Band.scope(:active, ->{ Band.where(active: true).skip(10) })
|
405
|
+
Band.scope(:named_by, ->(name) { Band.where(name: name) if name })
|
428
406
|
end
|
429
407
|
|
430
408
|
after do
|
431
409
|
class << Band
|
432
410
|
undef_method :active
|
411
|
+
undef_method :named_by
|
433
412
|
end
|
434
413
|
Band._declared_scopes.clear
|
435
414
|
end
|
436
415
|
|
437
416
|
it "adds a method for the scope" do
|
438
|
-
Band.
|
417
|
+
expect(Band).to respond_to(:active)
|
439
418
|
end
|
440
419
|
|
441
|
-
context "when
|
442
|
-
before do
|
443
|
-
Band.scope(:named_by, ->(name) { Band.where(name: name) if name})
|
444
|
-
end
|
420
|
+
context "when calling the scope" do
|
445
421
|
|
446
|
-
|
447
|
-
Band.named_by(nil).should be_a(Mongoid::Criteria)
|
448
|
-
end
|
449
|
-
end
|
422
|
+
context "when the scope would return nil" do
|
450
423
|
|
451
|
-
|
424
|
+
it "returns a chainable empty scope" do
|
425
|
+
expect(Band.named_by(nil)).to be_a(Mongoid::Criteria)
|
426
|
+
end
|
427
|
+
end
|
452
428
|
|
453
429
|
context "when calling from the class" do
|
454
430
|
|
@@ -457,15 +433,15 @@ describe Mongoid::Scoping do
|
|
457
433
|
end
|
458
434
|
|
459
435
|
it "returns a criteria" do
|
460
|
-
scope.
|
436
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
461
437
|
end
|
462
438
|
|
463
439
|
it "contains the proper selector" do
|
464
|
-
scope.selector.
|
440
|
+
expect(scope.selector).to eq({ "active" => true })
|
465
441
|
end
|
466
442
|
|
467
443
|
it "contains the proper options" do
|
468
|
-
scope.options.
|
444
|
+
expect(scope.options).to eq({ skip: 10 })
|
469
445
|
end
|
470
446
|
end
|
471
447
|
|
@@ -487,19 +463,19 @@ describe Mongoid::Scoping do
|
|
487
463
|
end
|
488
464
|
|
489
465
|
it "returns a criteria" do
|
490
|
-
scope.
|
466
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
491
467
|
end
|
492
468
|
|
493
469
|
it "contains the proper selector" do
|
494
|
-
scope.selector.
|
470
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "England" })
|
495
471
|
end
|
496
472
|
|
497
473
|
it "contains the proper options" do
|
498
|
-
scope.options.
|
474
|
+
expect(scope.options).to eq({ skip: 10 })
|
499
475
|
end
|
500
476
|
|
501
477
|
it "does not modify the original scope" do
|
502
|
-
Band.active.selector.
|
478
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
503
479
|
end
|
504
480
|
end
|
505
481
|
|
@@ -514,23 +490,23 @@ describe Mongoid::Scoping do
|
|
514
490
|
end
|
515
491
|
|
516
492
|
it "returns a criteria" do
|
517
|
-
scope.
|
493
|
+
expect(scope).to be_a(Mongoid::Criteria)
|
518
494
|
end
|
519
495
|
|
520
496
|
it "contains the proper selector" do
|
521
|
-
scope.selector.
|
497
|
+
expect(scope.selector).to eq({ "origin" => "England", "active" => true })
|
522
498
|
end
|
523
499
|
|
524
500
|
it "contains the proper options" do
|
525
|
-
scope.options.
|
501
|
+
expect(scope.options).to eq({ skip: 10 })
|
526
502
|
end
|
527
503
|
|
528
504
|
it "does not modify the original scope" do
|
529
|
-
Band.active.selector.
|
505
|
+
expect(Band.active.selector).to eq({ "active" => true })
|
530
506
|
end
|
531
507
|
|
532
508
|
it "does not modify the original criteria" do
|
533
|
-
criteria.selector.
|
509
|
+
expect(criteria.selector).to eq({ "origin" => "England" })
|
534
510
|
end
|
535
511
|
end
|
536
512
|
end
|
@@ -587,7 +563,7 @@ describe Mongoid::Scoping do
|
|
587
563
|
end
|
588
564
|
end
|
589
565
|
|
590
|
-
context "when chaining a
|
566
|
+
context "when chaining a proc with a proc" do
|
591
567
|
|
592
568
|
context "when both scopes are or queries" do
|
593
569
|
|
@@ -596,7 +572,7 @@ describe Mongoid::Scoping do
|
|
596
572
|
end
|
597
573
|
|
598
574
|
before do
|
599
|
-
Band.scope(:xxx, Band.any_of({ :aaa.gt => 0 }, { :bbb.gt => 0 }))
|
575
|
+
Band.scope(:xxx, ->{ Band.any_of({ :aaa.gt => 0 }, { :bbb.gt => 0 }) })
|
600
576
|
Band.scope(:yyy, ->{ Band.any_of({ :ccc => nil }, { :ccc.gt => time }) })
|
601
577
|
end
|
602
578
|
|
@@ -613,7 +589,7 @@ describe Mongoid::Scoping do
|
|
613
589
|
end
|
614
590
|
|
615
591
|
it "properly chains the $or queries together" do
|
616
|
-
criteria.selector.
|
592
|
+
expect(criteria.selector).to eq({
|
617
593
|
"$or" => [
|
618
594
|
{ "ccc" => nil },
|
619
595
|
{ "ccc" => { "$gt" => time }},
|
@@ -675,7 +651,7 @@ describe Mongoid::Scoping do
|
|
675
651
|
context "when the scope stack has not been accessed" do
|
676
652
|
|
677
653
|
it "returns an empty array" do
|
678
|
-
Band.scope_stack.
|
654
|
+
expect(Band.scope_stack).to eq([])
|
679
655
|
end
|
680
656
|
end
|
681
657
|
|
@@ -694,7 +670,7 @@ describe Mongoid::Scoping do
|
|
694
670
|
end
|
695
671
|
|
696
672
|
it "returns the criteria in the array" do
|
697
|
-
Band.scope_stack.
|
673
|
+
expect(Band.scope_stack).to eq([ criteria ])
|
698
674
|
end
|
699
675
|
end
|
700
676
|
end
|
@@ -708,15 +684,15 @@ describe Mongoid::Scoping do
|
|
708
684
|
end
|
709
685
|
|
710
686
|
it "returns a criteria" do
|
711
|
-
scoped.
|
687
|
+
expect(scoped).to be_a(Mongoid::Criteria)
|
712
688
|
end
|
713
689
|
|
714
690
|
it "contains an empty selector" do
|
715
|
-
scoped.selector.
|
691
|
+
expect(scoped.selector).to be_empty
|
716
692
|
end
|
717
693
|
|
718
694
|
it "contains empty options" do
|
719
|
-
scoped.options.
|
695
|
+
expect(scoped.options).to be_empty
|
720
696
|
end
|
721
697
|
end
|
722
698
|
|
@@ -727,15 +703,15 @@ describe Mongoid::Scoping do
|
|
727
703
|
end
|
728
704
|
|
729
705
|
it "returns a criteria" do
|
730
|
-
scoped.
|
706
|
+
expect(scoped).to be_a(Mongoid::Criteria)
|
731
707
|
end
|
732
708
|
|
733
709
|
it "contains an empty selector" do
|
734
|
-
scoped.selector.
|
710
|
+
expect(scoped.selector).to be_empty
|
735
711
|
end
|
736
712
|
|
737
713
|
it "contains the options" do
|
738
|
-
scoped.options.
|
714
|
+
expect(scoped.options).to eq({ skip: 10, limit: 10 })
|
739
715
|
end
|
740
716
|
end
|
741
717
|
|
@@ -746,7 +722,7 @@ describe Mongoid::Scoping do
|
|
746
722
|
end
|
747
723
|
|
748
724
|
before do
|
749
|
-
Band.default_scope criteria
|
725
|
+
Band.default_scope ->{ criteria }
|
750
726
|
end
|
751
727
|
|
752
728
|
after do
|
@@ -758,7 +734,7 @@ describe Mongoid::Scoping do
|
|
758
734
|
end
|
759
735
|
|
760
736
|
it "allows the default scope to be added" do
|
761
|
-
scoped.selector.
|
737
|
+
expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
|
762
738
|
end
|
763
739
|
|
764
740
|
context "when chained after an unscoped criteria" do
|
@@ -768,7 +744,7 @@ describe Mongoid::Scoping do
|
|
768
744
|
end
|
769
745
|
|
770
746
|
it "reapplies the default scope" do
|
771
|
-
scoped.selector.
|
747
|
+
expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
|
772
748
|
end
|
773
749
|
end
|
774
750
|
end
|
@@ -781,7 +757,7 @@ describe Mongoid::Scoping do
|
|
781
757
|
end
|
782
758
|
|
783
759
|
before do
|
784
|
-
Band.default_scope criteria
|
760
|
+
Band.default_scope ->{ criteria }
|
785
761
|
end
|
786
762
|
|
787
763
|
after do
|
@@ -795,7 +771,7 @@ describe Mongoid::Scoping do
|
|
795
771
|
end
|
796
772
|
|
797
773
|
it "removes the default scope from the criteria" do
|
798
|
-
unscoped.selector.
|
774
|
+
expect(unscoped.selector).to be_empty
|
799
775
|
end
|
800
776
|
|
801
777
|
context "when chained after a scoped criteria" do
|
@@ -805,7 +781,7 @@ describe Mongoid::Scoping do
|
|
805
781
|
end
|
806
782
|
|
807
783
|
it "removes all scoping" do
|
808
|
-
unscoped.selector.
|
784
|
+
expect(unscoped.selector).to be_empty
|
809
785
|
end
|
810
786
|
end
|
811
787
|
end
|
@@ -816,7 +792,7 @@ describe Mongoid::Scoping do
|
|
816
792
|
|
817
793
|
it "does not allow default scoping to be added in the block" do
|
818
794
|
Band.unscoped do
|
819
|
-
Band.skip(10).selector.
|
795
|
+
expect(Band.skip(10).selector).to be_empty
|
820
796
|
end
|
821
797
|
end
|
822
798
|
end
|
@@ -825,7 +801,7 @@ describe Mongoid::Scoping do
|
|
825
801
|
|
826
802
|
it "does not allow default scoping to be added in the block" do
|
827
803
|
Band.unscoped do
|
828
|
-
Band.scoped.selector.
|
804
|
+
expect(Band.scoped.selector).to be_empty
|
829
805
|
end
|
830
806
|
end
|
831
807
|
end
|
@@ -833,7 +809,7 @@ describe Mongoid::Scoping do
|
|
833
809
|
context "when a named scope is called in the block" do
|
834
810
|
|
835
811
|
before do
|
836
|
-
Band.scope(:skipped, Band.skip(10))
|
812
|
+
Band.scope(:skipped, ->{ Band.skip(10) })
|
837
813
|
end
|
838
814
|
|
839
815
|
after do
|
@@ -845,7 +821,7 @@ describe Mongoid::Scoping do
|
|
845
821
|
|
846
822
|
it "does not allow the default scope to be applied" do
|
847
823
|
Band.unscoped do
|
848
|
-
Band.skipped.selector.
|
824
|
+
expect(Band.skipped.selector).to be_empty
|
849
825
|
end
|
850
826
|
end
|
851
827
|
end
|
@@ -859,7 +835,7 @@ describe Mongoid::Scoping do
|
|
859
835
|
end
|
860
836
|
|
861
837
|
before do
|
862
|
-
Band.default_scope criteria
|
838
|
+
Band.default_scope ->{ criteria }
|
863
839
|
end
|
864
840
|
|
865
841
|
after do
|
@@ -870,7 +846,7 @@ describe Mongoid::Scoping do
|
|
870
846
|
|
871
847
|
it "returns an empty criteria" do
|
872
848
|
Band.unscoped do
|
873
|
-
Band.with_default_scope.selector.
|
849
|
+
expect(Band.with_default_scope.selector).to be_empty
|
874
850
|
end
|
875
851
|
end
|
876
852
|
end
|
@@ -882,7 +858,7 @@ describe Mongoid::Scoping do
|
|
882
858
|
end
|
883
859
|
|
884
860
|
it "returns an empty criteria" do
|
885
|
-
scoped.selector.
|
861
|
+
expect(scoped.selector).to be_empty
|
886
862
|
end
|
887
863
|
end
|
888
864
|
|
@@ -893,7 +869,7 @@ describe Mongoid::Scoping do
|
|
893
869
|
end
|
894
870
|
|
895
871
|
it "returns a scoped criteria" do
|
896
|
-
scoped.selector.
|
872
|
+
expect(scoped.selector).to eq({ "name" => "Depeche Mode" })
|
897
873
|
end
|
898
874
|
end
|
899
875
|
end
|
@@ -906,13 +882,13 @@ describe Mongoid::Scoping do
|
|
906
882
|
|
907
883
|
it "yields to the criteria" do
|
908
884
|
Band.with_scope(criteria) do |crit|
|
909
|
-
crit.selector.
|
885
|
+
expect(crit.selector).to eq({ "active" => true })
|
910
886
|
end
|
911
887
|
end
|
912
888
|
|
913
889
|
it "pops the criteria off the stack" do
|
914
890
|
Band.with_scope(criteria) {}
|
915
|
-
Band.scope_stack.
|
891
|
+
expect(Band.scope_stack).to be_empty
|
916
892
|
end
|
917
893
|
end
|
918
894
|
|
@@ -920,58 +896,7 @@ describe Mongoid::Scoping do
|
|
920
896
|
|
921
897
|
it "sets the threading options" do
|
922
898
|
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 })
|
899
|
+
expect(Mongoid::Threaded).to be_executing(:without_default_scope)
|
975
900
|
end
|
976
901
|
end
|
977
902
|
end
|