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
@@ -0,0 +1,127 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Contextual::None do
|
4
|
+
|
5
|
+
describe "#==" do
|
6
|
+
|
7
|
+
let!(:band) do
|
8
|
+
Band.create(name: "Depeche Mode")
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:context) do
|
12
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
13
|
+
end
|
14
|
+
|
15
|
+
context "when the other is a none" do
|
16
|
+
|
17
|
+
let(:other) do
|
18
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns true" do
|
22
|
+
expect(context).to eq(other)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when the other is not a none" do
|
27
|
+
|
28
|
+
let(:other) do
|
29
|
+
Mongoid::Contextual::Memory.new(Band.where(name: "Depeche Mode"))
|
30
|
+
end
|
31
|
+
|
32
|
+
it "returns false" do
|
33
|
+
expect(context).to_not eq(other)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#each" do
|
39
|
+
|
40
|
+
let!(:band) do
|
41
|
+
Band.create(name: "Depeche Mode")
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:context) do
|
45
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
46
|
+
end
|
47
|
+
|
48
|
+
it "iterates over no documents" do
|
49
|
+
expect(context.each.entries).to be_empty
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "#exists?" do
|
54
|
+
|
55
|
+
let!(:band) do
|
56
|
+
Band.create(name: "Depeche Mode")
|
57
|
+
end
|
58
|
+
|
59
|
+
let(:context) do
|
60
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
61
|
+
end
|
62
|
+
|
63
|
+
it "returns false" do
|
64
|
+
expect(context).to_not be_exists
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#first" do
|
69
|
+
|
70
|
+
let!(:band) do
|
71
|
+
Band.create(name: "Depeche Mode")
|
72
|
+
end
|
73
|
+
|
74
|
+
let(:context) do
|
75
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
76
|
+
end
|
77
|
+
|
78
|
+
it "returns nil" do
|
79
|
+
expect(context.first).to be_nil
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "#last" do
|
84
|
+
|
85
|
+
let!(:band) do
|
86
|
+
Band.create(name: "Depeche Mode")
|
87
|
+
end
|
88
|
+
|
89
|
+
let(:context) do
|
90
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
91
|
+
end
|
92
|
+
|
93
|
+
it "returns nil" do
|
94
|
+
expect(context.last).to be_nil
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe "#length" do
|
99
|
+
|
100
|
+
let!(:band) do
|
101
|
+
Band.create(name: "Depeche Mode")
|
102
|
+
end
|
103
|
+
|
104
|
+
let(:context) do
|
105
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
106
|
+
end
|
107
|
+
|
108
|
+
it "returns zero" do
|
109
|
+
expect(context.length).to eq(0)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "#size" do
|
114
|
+
|
115
|
+
let!(:band) do
|
116
|
+
Band.create(name: "Depeche Mode")
|
117
|
+
end
|
118
|
+
|
119
|
+
let(:context) do
|
120
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
121
|
+
end
|
122
|
+
|
123
|
+
it "returns zero" do
|
124
|
+
expect(context.size).to eq(0)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,209 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Contextual::TextSearch do
|
4
|
+
|
5
|
+
before do
|
6
|
+
Word.with(database: "admin").mongo_session.command(setParameter: 1, textSearchEnabled: true)
|
7
|
+
Word.create_indexes
|
8
|
+
end
|
9
|
+
|
10
|
+
after(:all) do
|
11
|
+
Word.remove_indexes
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#each" do
|
15
|
+
|
16
|
+
let(:collection) do
|
17
|
+
Word.collection
|
18
|
+
end
|
19
|
+
|
20
|
+
let(:criteria) do
|
21
|
+
Word.all
|
22
|
+
end
|
23
|
+
|
24
|
+
before do
|
25
|
+
Word.create!(name: "phase", origin: "latin")
|
26
|
+
Word.create!(name: "phazed", origin: "latin")
|
27
|
+
end
|
28
|
+
|
29
|
+
context "when the search is projecting" do
|
30
|
+
|
31
|
+
let(:search) do
|
32
|
+
described_class.new(collection, criteria, "phase").project(name: 1)
|
33
|
+
end
|
34
|
+
|
35
|
+
let(:documents) do
|
36
|
+
search.entries
|
37
|
+
end
|
38
|
+
|
39
|
+
it "limits the fields to the projection" do
|
40
|
+
expect {
|
41
|
+
documents.first.origin
|
42
|
+
}.to raise_error(ActiveModel::MissingAttributeError)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "when the search is not projecting" do
|
47
|
+
|
48
|
+
let(:search) do
|
49
|
+
described_class.new(collection, criteria, "phase")
|
50
|
+
end
|
51
|
+
|
52
|
+
let(:documents) do
|
53
|
+
search.entries
|
54
|
+
end
|
55
|
+
|
56
|
+
it "returns all fields" do
|
57
|
+
expect(documents.first.origin).to eq("latin")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "#execute" do
|
63
|
+
|
64
|
+
let(:collection) do
|
65
|
+
Word.collection
|
66
|
+
end
|
67
|
+
|
68
|
+
let(:criteria) do
|
69
|
+
Word.all
|
70
|
+
end
|
71
|
+
|
72
|
+
let(:search) do
|
73
|
+
described_class.new(collection, criteria, "phase")
|
74
|
+
end
|
75
|
+
|
76
|
+
before do
|
77
|
+
Word.create!(name: "phase", origin: "latin")
|
78
|
+
Word.create!(name: "phazed", origin: "latin")
|
79
|
+
end
|
80
|
+
|
81
|
+
let(:results) do
|
82
|
+
search.execute
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns the raw results" do
|
86
|
+
expect(results).to_not be_empty
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe "#initialize" do
|
91
|
+
|
92
|
+
let(:collection) do
|
93
|
+
Word.collection
|
94
|
+
end
|
95
|
+
|
96
|
+
let(:criteria) do
|
97
|
+
Word.limit(100)
|
98
|
+
end
|
99
|
+
|
100
|
+
let(:search) do
|
101
|
+
described_class.new(collection, criteria, "phase")
|
102
|
+
end
|
103
|
+
|
104
|
+
it "sets the collection" do
|
105
|
+
expect(search.collection).to eq(collection)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "sets the criteria" do
|
109
|
+
expect(search.criteria).to eq(criteria)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "sets the text command" do
|
113
|
+
expect(search.command[:text]).to eq(collection.name)
|
114
|
+
end
|
115
|
+
|
116
|
+
it "sets the text search parameter" do
|
117
|
+
expect(search.command[:search]).to eq("phase")
|
118
|
+
end
|
119
|
+
|
120
|
+
it "sets the criteria" do
|
121
|
+
expect(search.command[:filter]).to be_empty
|
122
|
+
end
|
123
|
+
|
124
|
+
it "sets the limit" do
|
125
|
+
expect(search.command[:limit]).to eq(100)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe "#language" do
|
130
|
+
|
131
|
+
let(:collection) do
|
132
|
+
Word.collection
|
133
|
+
end
|
134
|
+
|
135
|
+
let(:criteria) do
|
136
|
+
Word.limit(100)
|
137
|
+
end
|
138
|
+
|
139
|
+
let(:search) do
|
140
|
+
described_class.new(collection, criteria, "phase")
|
141
|
+
end
|
142
|
+
|
143
|
+
let!(:text_search) do
|
144
|
+
search.language("deutsch")
|
145
|
+
end
|
146
|
+
|
147
|
+
it "sets the search language" do
|
148
|
+
expect(search.command[:language]).to eq("deutsch")
|
149
|
+
end
|
150
|
+
|
151
|
+
it "returns the text search" do
|
152
|
+
expect(text_search).to equal(search)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe "#project" do
|
157
|
+
|
158
|
+
let(:collection) do
|
159
|
+
Word.collection
|
160
|
+
end
|
161
|
+
|
162
|
+
let(:criteria) do
|
163
|
+
Word.limit(100)
|
164
|
+
end
|
165
|
+
|
166
|
+
let(:search) do
|
167
|
+
described_class.new(collection, criteria, "phase")
|
168
|
+
end
|
169
|
+
|
170
|
+
let!(:text_search) do
|
171
|
+
search.project(name: 1, title: 1)
|
172
|
+
end
|
173
|
+
|
174
|
+
it "sets the search field limitations" do
|
175
|
+
expect(search.command[:project]).to eq(name: 1, title: 1)
|
176
|
+
end
|
177
|
+
|
178
|
+
it "returns the text search" do
|
179
|
+
expect(text_search).to equal(search)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
describe "#stats" do
|
184
|
+
|
185
|
+
let(:collection) do
|
186
|
+
Word.collection
|
187
|
+
end
|
188
|
+
|
189
|
+
let(:criteria) do
|
190
|
+
Word.all
|
191
|
+
end
|
192
|
+
|
193
|
+
let(:search) do
|
194
|
+
described_class.new(collection, criteria, "phase")
|
195
|
+
end
|
196
|
+
|
197
|
+
before do
|
198
|
+
Word.create!(name: "phase", origin: "latin")
|
199
|
+
end
|
200
|
+
|
201
|
+
let(:stats) do
|
202
|
+
search.stats
|
203
|
+
end
|
204
|
+
|
205
|
+
it "returns the raw stats" do
|
206
|
+
expect(stats["nscanned"]).to eq(1)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
@@ -50,7 +50,7 @@ describe Mongoid::Copyable do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "does not set the id field as the _id" do
|
53
|
-
cloned.id.
|
53
|
+
expect(cloned.id).to_not eq(1234)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -76,17 +76,17 @@ describe Mongoid::Copyable do
|
|
76
76
|
|
77
77
|
it "sets the pt_BR version" do
|
78
78
|
I18n.locale = 'pt_BR'
|
79
|
-
copy.desc.
|
79
|
+
expect(copy.desc).to eq("descrição")
|
80
80
|
end
|
81
81
|
|
82
82
|
it "sets the english version" do
|
83
83
|
I18n.locale = :en
|
84
|
-
copy.desc.
|
84
|
+
expect(copy.desc).to eq("description")
|
85
85
|
end
|
86
86
|
|
87
87
|
it "sets to nil an nonexistent lang" do
|
88
88
|
I18n.locale = :fr
|
89
|
-
copy.desc.
|
89
|
+
expect(copy.desc).to be_nil
|
90
90
|
end
|
91
91
|
end
|
92
92
|
|
@@ -105,21 +105,21 @@ describe Mongoid::Copyable do
|
|
105
105
|
end
|
106
106
|
|
107
107
|
it "marks the fields as dirty" do
|
108
|
-
copy.changes["age"].
|
108
|
+
expect(copy.changes["age"]).to eq([ nil, 100 ])
|
109
109
|
end
|
110
110
|
|
111
111
|
it "flags the document as changed" do
|
112
|
-
copy.
|
112
|
+
expect(copy).to be_changed
|
113
113
|
end
|
114
114
|
|
115
115
|
it "copies protected fields" do
|
116
|
-
copy.owner_id.
|
116
|
+
expect(copy.owner_id).to eq(5)
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
120
120
|
context "when the document is new" do
|
121
121
|
|
122
|
-
context "when
|
122
|
+
context "when there are changes" do
|
123
123
|
|
124
124
|
let(:copy) do
|
125
125
|
person.send(method)
|
@@ -130,71 +130,63 @@ describe Mongoid::Copyable do
|
|
130
130
|
end
|
131
131
|
|
132
132
|
it "returns a new document" do
|
133
|
-
copy.
|
133
|
+
expect(copy).to_not be_persisted
|
134
134
|
end
|
135
135
|
|
136
136
|
it "has an id" do
|
137
|
-
copy.id.
|
137
|
+
expect(copy.id).to_not be_nil
|
138
138
|
end
|
139
139
|
|
140
140
|
it "flags the document as changed" do
|
141
|
-
copy.
|
141
|
+
expect(copy).to be_changed
|
142
142
|
end
|
143
143
|
|
144
144
|
it "marks fields as dirty" do
|
145
|
-
copy.changes["age"].
|
145
|
+
expect(copy.changes["age"]).to eq([ nil, 100 ])
|
146
146
|
end
|
147
147
|
|
148
148
|
it "has a different id from the original" do
|
149
|
-
copy.id.
|
150
|
-
end
|
151
|
-
|
152
|
-
it "does not copy the versions" do
|
153
|
-
copy[:versions].should be_nil
|
154
|
-
end
|
155
|
-
|
156
|
-
it "resets the document version" do
|
157
|
-
copy.version.should eq(1)
|
149
|
+
expect(copy.id).to_not eq(person.id)
|
158
150
|
end
|
159
151
|
|
160
152
|
it "returns a new instance" do
|
161
|
-
copy.
|
153
|
+
expect(copy).to_not be_eql(person)
|
162
154
|
end
|
163
155
|
|
164
156
|
it "copys embeds many documents" do
|
165
|
-
copy.addresses.
|
157
|
+
expect(copy.addresses).to eq(person.addresses)
|
166
158
|
end
|
167
159
|
|
168
160
|
it "sets the embedded many documents as new" do
|
169
|
-
copy.addresses.first.
|
161
|
+
expect(copy.addresses.first).to be_new_record
|
170
162
|
end
|
171
163
|
|
172
164
|
it "creates new embeds many instances" do
|
173
|
-
copy.addresses.
|
165
|
+
expect(copy.addresses).to_not equal(person.addresses)
|
174
166
|
end
|
175
167
|
|
176
168
|
it "copys embeds one documents" do
|
177
|
-
copy.name.
|
169
|
+
expect(copy.name).to eq(person.name)
|
178
170
|
end
|
179
171
|
|
180
172
|
it "flags the embeds one documents as new" do
|
181
|
-
copy.name.
|
173
|
+
expect(copy.name).to be_new_record
|
182
174
|
end
|
183
175
|
|
184
176
|
it "creates a new embeds one instance" do
|
185
|
-
copy.name.
|
177
|
+
expect(copy.name).to_not equal(person.name)
|
186
178
|
end
|
187
179
|
|
188
180
|
it "does not copy referenced many documents" do
|
189
|
-
copy.posts.
|
181
|
+
expect(copy.posts).to be_empty
|
190
182
|
end
|
191
183
|
|
192
184
|
it "does not copy references one documents" do
|
193
|
-
copy.game.
|
185
|
+
expect(copy.game).to be_nil
|
194
186
|
end
|
195
187
|
|
196
188
|
it "copies localized fields" do
|
197
|
-
copy.desc.
|
189
|
+
expect(copy.desc).to eq("description")
|
198
190
|
end
|
199
191
|
|
200
192
|
context "when saving the copy" do
|
@@ -208,15 +200,15 @@ describe Mongoid::Copyable do
|
|
208
200
|
end
|
209
201
|
|
210
202
|
it "persists the attributes" do
|
211
|
-
reloaded.title.
|
203
|
+
expect(reloaded.title).to eq("Sir")
|
212
204
|
end
|
213
205
|
|
214
206
|
it "persists the embeds many relation" do
|
215
|
-
reloaded.addresses.
|
207
|
+
expect(reloaded.addresses).to eq(person.addresses)
|
216
208
|
end
|
217
209
|
|
218
210
|
it "persists the embeds one relation" do
|
219
|
-
reloaded.name.
|
211
|
+
expect(reloaded.name).to eq(person.name)
|
220
212
|
end
|
221
213
|
end
|
222
214
|
end
|
@@ -228,7 +220,7 @@ describe Mongoid::Copyable do
|
|
228
220
|
person.new_record = false
|
229
221
|
end
|
230
222
|
|
231
|
-
context "when
|
223
|
+
context "when there are changes" do
|
232
224
|
|
233
225
|
let(:copy) do
|
234
226
|
person.send(method)
|
@@ -239,55 +231,51 @@ describe Mongoid::Copyable do
|
|
239
231
|
end
|
240
232
|
|
241
233
|
it "flags the document as changed" do
|
242
|
-
copy.
|
234
|
+
expect(copy).to be_changed
|
243
235
|
end
|
244
236
|
|
245
237
|
it "marks fields as dirty" do
|
246
|
-
copy.changes["age"].
|
238
|
+
expect(copy.changes["age"]).to eq([ nil, 100 ])
|
247
239
|
end
|
248
240
|
|
249
241
|
it "returns a new document" do
|
250
|
-
copy.
|
242
|
+
expect(copy).to_not be_persisted
|
251
243
|
end
|
252
244
|
|
253
245
|
it "has an id" do
|
254
|
-
copy.id.
|
246
|
+
expect(copy.id).to_not be_nil
|
255
247
|
end
|
256
248
|
|
257
249
|
it "has a different id from the original" do
|
258
|
-
copy.id.
|
259
|
-
end
|
260
|
-
|
261
|
-
it "does not copy the versions" do
|
262
|
-
copy[:versions].should be_nil
|
250
|
+
expect(copy.id).to_not eq(person.id)
|
263
251
|
end
|
264
252
|
|
265
253
|
it "returns a new instance" do
|
266
|
-
copy.
|
254
|
+
expect(copy).to_not be_eql(person)
|
267
255
|
end
|
268
256
|
|
269
257
|
it "copys embeds many documents" do
|
270
|
-
copy.addresses.
|
258
|
+
expect(copy.addresses).to eq(person.addresses)
|
271
259
|
end
|
272
260
|
|
273
261
|
it "creates new embeds many instances" do
|
274
|
-
copy.addresses.
|
262
|
+
expect(copy.addresses).to_not equal(person.addresses)
|
275
263
|
end
|
276
264
|
|
277
265
|
it "copys embeds one documents" do
|
278
|
-
copy.name.
|
266
|
+
expect(copy.name).to eq(person.name)
|
279
267
|
end
|
280
268
|
|
281
269
|
it "creates a new embeds one instance" do
|
282
|
-
copy.name.
|
270
|
+
expect(copy.name).to_not equal(person.name)
|
283
271
|
end
|
284
272
|
|
285
273
|
it "does not copy referenced many documents" do
|
286
|
-
copy.posts.
|
274
|
+
expect(copy.posts).to be_empty
|
287
275
|
end
|
288
276
|
|
289
277
|
it "does not copy references one documents" do
|
290
|
-
copy.game.
|
278
|
+
expect(copy.game).to be_nil
|
291
279
|
end
|
292
280
|
|
293
281
|
context "when saving the copy" do
|
@@ -301,15 +289,15 @@ describe Mongoid::Copyable do
|
|
301
289
|
end
|
302
290
|
|
303
291
|
it "persists the attributes" do
|
304
|
-
reloaded.title.
|
292
|
+
expect(reloaded.title).to eq("Sir")
|
305
293
|
end
|
306
294
|
|
307
295
|
it "persists the embeds many relation" do
|
308
|
-
reloaded.addresses.
|
296
|
+
expect(reloaded.addresses).to eq(person.addresses)
|
309
297
|
end
|
310
298
|
|
311
299
|
it "persists the embeds one relation" do
|
312
|
-
reloaded.name.
|
300
|
+
expect(reloaded.name).to eq(person.name)
|
313
301
|
end
|
314
302
|
end
|
315
303
|
end
|
@@ -322,47 +310,47 @@ describe Mongoid::Copyable do
|
|
322
310
|
end
|
323
311
|
|
324
312
|
it "returns a new document" do
|
325
|
-
copy.
|
313
|
+
expect(copy).to_not be_persisted
|
326
314
|
end
|
327
315
|
|
328
316
|
it "has an id" do
|
329
|
-
copy.id.
|
317
|
+
expect(copy.id).to_not be_nil
|
330
318
|
end
|
331
319
|
|
332
320
|
it "has a different id from the original" do
|
333
|
-
copy.id.
|
321
|
+
expect(copy.id).to_not eq(person.id)
|
334
322
|
end
|
335
323
|
|
336
324
|
it "returns a new instance" do
|
337
|
-
copy.
|
325
|
+
expect(copy).to_not be_eql(person)
|
338
326
|
end
|
339
327
|
|
340
328
|
it "copys embeds many documents" do
|
341
|
-
copy.addresses.
|
329
|
+
expect(copy.addresses).to eq(person.addresses)
|
342
330
|
end
|
343
331
|
|
344
332
|
it "creates new embeds many instances" do
|
345
|
-
copy.addresses.
|
333
|
+
expect(copy.addresses).to_not equal(person.addresses)
|
346
334
|
end
|
347
335
|
|
348
336
|
it "copys embeds one documents" do
|
349
|
-
copy.name.
|
337
|
+
expect(copy.name).to eq(person.name)
|
350
338
|
end
|
351
339
|
|
352
340
|
it "creates a new embeds one instance" do
|
353
|
-
copy.name.
|
341
|
+
expect(copy.name).to_not equal(person.name)
|
354
342
|
end
|
355
343
|
|
356
344
|
it "does not copy referenced many documents" do
|
357
|
-
copy.posts.
|
345
|
+
expect(copy.posts).to be_empty
|
358
346
|
end
|
359
347
|
|
360
348
|
it "does not copy references one documents" do
|
361
|
-
copy.game.
|
349
|
+
expect(copy.game).to be_nil
|
362
350
|
end
|
363
351
|
|
364
352
|
it "keeps the original attributes frozen" do
|
365
|
-
person.attributes.
|
353
|
+
expect(person.attributes).to be_frozen
|
366
354
|
end
|
367
355
|
|
368
356
|
context "when saving the copy" do
|
@@ -376,15 +364,15 @@ describe Mongoid::Copyable do
|
|
376
364
|
end
|
377
365
|
|
378
366
|
it "persists the attributes" do
|
379
|
-
reloaded.title.
|
367
|
+
expect(reloaded.title).to eq("Sir")
|
380
368
|
end
|
381
369
|
|
382
370
|
it "persists the embeds many relation" do
|
383
|
-
reloaded.addresses.
|
371
|
+
expect(reloaded.addresses).to eq(person.addresses)
|
384
372
|
end
|
385
373
|
|
386
374
|
it "persists the embeds one relation" do
|
387
|
-
reloaded.name.
|
375
|
+
expect(reloaded.name).to eq(person.name)
|
388
376
|
end
|
389
377
|
end
|
390
378
|
end
|