mongoid 6.4.8 → 7.0.0.beta
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +0 -26
- data/lib/config/locales/en.yml +17 -21
- data/lib/mongoid.rb +2 -2
- data/lib/mongoid/association.rb +150 -0
- data/lib/mongoid/association/accessors.rb +339 -0
- data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
- data/lib/mongoid/association/builders.rb +92 -0
- data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
- data/lib/mongoid/association/depending.rb +116 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +27 -53
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
- data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +210 -0
- data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
- data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +529 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +173 -0
- data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
- data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
- data/lib/mongoid/association/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +18 -52
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/association/nested/many.rb +200 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
- data/lib/mongoid/association/nested/one.rb +127 -0
- data/lib/mongoid/{relations → association}/one.rb +6 -6
- data/lib/mongoid/association/options.rb +152 -0
- data/lib/mongoid/{relations → association}/proxy.rb +31 -58
- data/lib/mongoid/association/referenced.rb +7 -0
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +159 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +310 -0
- data/lib/mongoid/association/referenced/has_many.rb +273 -0
- data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +479 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +577 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -0
- data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
- data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
- data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
- data/lib/mongoid/association/referenced/syncable.rb +170 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +415 -0
- data/lib/mongoid/association/touchable.rb +97 -0
- data/lib/mongoid/atomic.rb +6 -6
- data/lib/mongoid/atomic/modifiers.rb +8 -12
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/attributes.rb +2 -1
- data/lib/mongoid/attributes/nested.rb +10 -10
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/clients.rb +0 -2
- data/lib/mongoid/clients/options.rb +1 -1
- data/lib/mongoid/clients/storage_options.rb +0 -1
- data/lib/mongoid/composable.rb +3 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +3 -6
- data/lib/mongoid/contextual/map_reduce.rb +3 -7
- data/lib/mongoid/contextual/memory.rb +5 -10
- data/lib/mongoid/contextual/mongo.rb +10 -27
- data/lib/mongoid/copyable.rb +6 -6
- data/lib/mongoid/criteria.rb +1 -2
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -3
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +10 -34
- data/lib/mongoid/document.rb +6 -6
- data/lib/mongoid/errors.rb +3 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
- data/lib/mongoid/errors/unknown_model.rb +25 -0
- data/lib/mongoid/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +0 -1
- data/lib/mongoid/extensions/string.rb +1 -3
- data/lib/mongoid/factory.rb +4 -3
- data/lib/mongoid/fields.rb +1 -1
- data/lib/mongoid/fields/foreign_key.rb +5 -5
- data/lib/mongoid/fields/standard.rb +2 -14
- data/lib/mongoid/fields/validators/macro.rb +1 -1
- data/lib/mongoid/indexable.rb +8 -5
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable.rb +0 -3
- data/lib/mongoid/persistable.rb +4 -5
- data/lib/mongoid/persistable/creatable.rb +2 -4
- data/lib/mongoid/persistable/deletable.rb +9 -10
- data/lib/mongoid/persistable/destroyable.rb +5 -1
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/settable.rb +5 -5
- data/lib/mongoid/persistable/updatable.rb +2 -2
- data/lib/mongoid/persistable/upsertable.rb +1 -2
- data/lib/mongoid/persistence_context.rb +4 -9
- data/lib/mongoid/query_cache.rb +18 -65
- data/lib/mongoid/railtie.rb +0 -17
- data/lib/mongoid/reloadable.rb +1 -1
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +3 -3
- data/lib/mongoid/tasks/database.rb +2 -3
- data/lib/mongoid/threaded.rb +0 -74
- data/lib/mongoid/traversable.rb +2 -2
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -4
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/band.rb +0 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +1 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +1 -1
- data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
- data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
- data/spec/mongoid/association/constrainable_spec.rb +115 -0
- data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +613 -0
- data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
- data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
- data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
- data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
- data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
- data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +5 -77
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -0
- data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
- data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
- data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +140 -428
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -0
- data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
- data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
- data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +908 -0
- data/spec/mongoid/{relations → association}/macros_spec.rb +148 -93
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
- data/spec/mongoid/association/options_spec.rb +1321 -0
- data/spec/mongoid/{relations → association}/polymorphic_spec.rb +7 -34
- data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
- data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
- data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +9 -9
- data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +1963 -0
- data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
- data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +5 -5
- data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
- data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
- data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +11 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +1 -109
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
- data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
- data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
- data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
- data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
- data/spec/mongoid/association/referenced/has_one_spec.rb +1244 -0
- data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
- data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
- data/spec/mongoid/{relations → association}/touchable_spec.rb +19 -1
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
- data/spec/mongoid/atomic_spec.rb +17 -17
- data/spec/mongoid/attributes/nested_spec.rb +14 -12
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/clients/factory_spec.rb +28 -52
- data/spec/mongoid/clients/options_spec.rb +65 -69
- data/spec/mongoid/config_spec.rb +24 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
- data/spec/mongoid/contextual/mongo_spec.rb +4 -112
- data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +6 -74
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
- data/spec/mongoid/criteria/scopable_spec.rb +0 -81
- data/spec/mongoid/criteria_spec.rb +16 -19
- data/spec/mongoid/document_spec.rb +2 -56
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
- data/spec/mongoid/extensions/object_spec.rb +7 -11
- data/spec/mongoid/extensions/range_spec.rb +7 -0
- data/spec/mongoid/extensions/regexp_spec.rb +0 -23
- data/spec/mongoid/extensions/string_spec.rb +7 -35
- data/spec/mongoid/factory_spec.rb +18 -11
- data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
- data/spec/mongoid/fields_spec.rb +2 -2
- data/spec/mongoid/findable_spec.rb +1 -1
- data/spec/mongoid/indexable_spec.rb +18 -8
- data/spec/mongoid/interceptable_spec.rb +21 -2
- data/spec/mongoid/matchable_spec.rb +1 -26
- data/spec/mongoid/persistable/deletable_spec.rb +0 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +0 -19
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +3 -3
- data/spec/mongoid/persistable/settable_spec.rb +1 -35
- data/spec/mongoid/persistable/updatable_spec.rb +2 -2
- data/spec/mongoid/persistable_spec.rb +16 -16
- data/spec/mongoid/persistence_context_spec.rb +0 -14
- data/spec/mongoid/positional_spec.rb +10 -10
- data/spec/mongoid/query_cache_spec.rb +18 -87
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +0 -13
- data/spec/mongoid/threaded_spec.rb +0 -68
- data/spec/mongoid/validatable/associated_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +7 -6
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/spec_helper.rb +7 -83
- metadata +586 -611
- metadata.gz.sig +2 -5
- data/lib/mongoid/clients/sessions.rb +0 -113
- data/lib/mongoid/errors/invalid_session_use.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/railties/controller_runtime.rb +0 -86
- data/lib/mongoid/relations.rb +0 -148
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders.rb +0 -106
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/cascading.rb +0 -56
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -160
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/eager/base.rb +0 -153
- data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
- data/lib/mongoid/relations/eager/has_many.rb +0 -38
- data/lib/mongoid/relations/eager/has_one.rb +0 -30
- data/lib/mongoid/relations/embedded/in.rb +0 -241
- data/lib/mongoid/relations/embedded/many.rb +0 -683
- data/lib/mongoid/relations/embedded/one.rb +0 -235
- data/lib/mongoid/relations/macros.rb +0 -367
- data/lib/mongoid/relations/metadata.rb +0 -1179
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/options.rb +0 -49
- data/lib/mongoid/relations/polymorphic.rb +0 -39
- data/lib/mongoid/relations/referenced/in.rb +0 -304
- data/lib/mongoid/relations/referenced/many.rb +0 -812
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
- data/lib/mongoid/relations/referenced/one.rb +0 -290
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/spec/app/models/array_field.rb +0 -7
- data/spec/app/models/delegating_patient.rb +0 -16
- data/spec/integration/document_spec.rb +0 -22
- data/spec/mongoid/clients/sessions_spec.rb +0 -334
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -75
- data/spec/mongoid/relations/conversions_spec.rb +0 -128
- data/spec/mongoid/relations/metadata_spec.rb +0 -1985
- data/spec/mongoid/relations/options_spec.rb +0 -35
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -110
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/constraints.rb +0 -101
- data/spec/support/macros.rb +0 -20
- data/spec/support/session_registry.rb +0 -50
- data/spec/support/spec_config.rb +0 -42
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Association::Macros do
|
|
4
4
|
|
|
5
5
|
class TestClass
|
|
6
6
|
include Mongoid::Document
|
|
@@ -20,26 +20,6 @@ describe Mongoid::Relations::Macros do
|
|
|
20
20
|
klass.validators.clear
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
describe 'Model loading' do
|
|
24
|
-
|
|
25
|
-
let(:model_associations) do
|
|
26
|
-
class TestModel
|
|
27
|
-
include Mongoid::Document
|
|
28
|
-
field :associations
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
after do
|
|
33
|
-
Object.send(:remove_const, :TestModel)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'prohibits the use of :associations as an attribute' do
|
|
37
|
-
expect {
|
|
38
|
-
model_associations
|
|
39
|
-
}.to raise_exception(Mongoid::Errors::InvalidField)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
23
|
describe ".embedded_in" do
|
|
44
24
|
|
|
45
25
|
it "defines the macro" do
|
|
@@ -65,7 +45,7 @@ describe Mongoid::Relations::Macros do
|
|
|
65
45
|
klass.embedded_in(:person)
|
|
66
46
|
end
|
|
67
47
|
|
|
68
|
-
it "adds the
|
|
48
|
+
it "adds the association to the klass" do
|
|
69
49
|
expect(klass.relations["person"]).to_not be_nil
|
|
70
50
|
end
|
|
71
51
|
|
|
@@ -78,8 +58,8 @@ describe Mongoid::Relations::Macros do
|
|
|
78
58
|
end
|
|
79
59
|
|
|
80
60
|
it "creates the correct relation" do
|
|
81
|
-
expect(klass.relations["person"]
|
|
82
|
-
Mongoid::
|
|
61
|
+
expect(klass.relations["person"]).to be_a(
|
|
62
|
+
Mongoid::Association::Embedded::EmbeddedIn
|
|
83
63
|
)
|
|
84
64
|
end
|
|
85
65
|
|
|
@@ -87,18 +67,27 @@ describe Mongoid::Relations::Macros do
|
|
|
87
67
|
expect(klass._validators).to be_empty
|
|
88
68
|
end
|
|
89
69
|
|
|
90
|
-
context
|
|
70
|
+
context 'when an invalid option is provided' do
|
|
91
71
|
|
|
92
|
-
|
|
72
|
+
it 'raises an InvalidRelationOption exception' do
|
|
73
|
+
expect {
|
|
74
|
+
klass.embedded_in(:person, sandwich: true)
|
|
75
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
context "association properties" do
|
|
80
|
+
|
|
81
|
+
let(:association) do
|
|
93
82
|
klass.relations["person"]
|
|
94
83
|
end
|
|
95
84
|
|
|
96
85
|
it "automatically adds the name" do
|
|
97
|
-
expect(
|
|
86
|
+
expect(association.name).to eq(:person)
|
|
98
87
|
end
|
|
99
88
|
|
|
100
89
|
it "automatically adds the inverse class name" do
|
|
101
|
-
expect(
|
|
90
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
102
91
|
end
|
|
103
92
|
end
|
|
104
93
|
end
|
|
@@ -129,7 +118,7 @@ describe Mongoid::Relations::Macros do
|
|
|
129
118
|
klass.embeds_many(:addresses)
|
|
130
119
|
end
|
|
131
120
|
|
|
132
|
-
it "adds the
|
|
121
|
+
it "adds the association to the klass" do
|
|
133
122
|
expect(klass.relations["addresses"]).to_not be_nil
|
|
134
123
|
end
|
|
135
124
|
|
|
@@ -142,8 +131,8 @@ describe Mongoid::Relations::Macros do
|
|
|
142
131
|
end
|
|
143
132
|
|
|
144
133
|
it "creates the correct relation" do
|
|
145
|
-
expect(klass.relations["addresses"]
|
|
146
|
-
Mongoid::
|
|
134
|
+
expect(klass.relations["addresses"]).to be_a(
|
|
135
|
+
Mongoid::Association::Embedded::EmbedsMany
|
|
147
136
|
)
|
|
148
137
|
end
|
|
149
138
|
|
|
@@ -153,18 +142,27 @@ describe Mongoid::Relations::Macros do
|
|
|
153
142
|
)
|
|
154
143
|
end
|
|
155
144
|
|
|
156
|
-
context
|
|
145
|
+
context 'when an invalid option is provided' do
|
|
146
|
+
|
|
147
|
+
it 'raises an InvalidRelationOption exception' do
|
|
148
|
+
expect {
|
|
149
|
+
klass.embeds_many(:addresses, sandwich: true)
|
|
150
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
context "association properties" do
|
|
157
155
|
|
|
158
|
-
let(:
|
|
156
|
+
let(:association) do
|
|
159
157
|
klass.relations["addresses"]
|
|
160
158
|
end
|
|
161
159
|
|
|
162
160
|
it "automatically adds the name" do
|
|
163
|
-
expect(
|
|
161
|
+
expect(association.name).to eq(:addresses)
|
|
164
162
|
end
|
|
165
163
|
|
|
166
164
|
it "automatically adds the inverse class name" do
|
|
167
|
-
expect(
|
|
165
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
168
166
|
end
|
|
169
167
|
end
|
|
170
168
|
end
|
|
@@ -175,16 +173,16 @@ describe Mongoid::Relations::Macros do
|
|
|
175
173
|
klass.embeds_many(:addresses, order: :number.asc)
|
|
176
174
|
end
|
|
177
175
|
|
|
178
|
-
let(:
|
|
176
|
+
let(:association) do
|
|
179
177
|
klass.relations["addresses"]
|
|
180
178
|
end
|
|
181
179
|
|
|
182
|
-
it "adds
|
|
183
|
-
expect(
|
|
180
|
+
it "adds association to klass" do
|
|
181
|
+
expect(association.order).to_not be_nil
|
|
184
182
|
end
|
|
185
183
|
|
|
186
184
|
it "returns Mongoid::Criteria::Queryable::Key" do
|
|
187
|
-
expect(
|
|
185
|
+
expect(association.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
|
|
188
186
|
end
|
|
189
187
|
end
|
|
190
188
|
|
|
@@ -225,7 +223,7 @@ describe Mongoid::Relations::Macros do
|
|
|
225
223
|
klass.embeds_one(:name)
|
|
226
224
|
end
|
|
227
225
|
|
|
228
|
-
it "adds the
|
|
226
|
+
it "adds the association to the klass" do
|
|
229
227
|
expect(klass.relations["name"]).to_not be_nil
|
|
230
228
|
end
|
|
231
229
|
|
|
@@ -246,8 +244,8 @@ describe Mongoid::Relations::Macros do
|
|
|
246
244
|
end
|
|
247
245
|
|
|
248
246
|
it "creates the correct relation" do
|
|
249
|
-
expect(klass.relations["name"]
|
|
250
|
-
Mongoid::
|
|
247
|
+
expect(klass.relations["name"]).to be_a(
|
|
248
|
+
Mongoid::Association::Embedded::EmbedsOne
|
|
251
249
|
)
|
|
252
250
|
end
|
|
253
251
|
|
|
@@ -257,18 +255,27 @@ describe Mongoid::Relations::Macros do
|
|
|
257
255
|
)
|
|
258
256
|
end
|
|
259
257
|
|
|
260
|
-
context
|
|
258
|
+
context 'when an invalid option is provided' do
|
|
261
259
|
|
|
262
|
-
|
|
260
|
+
it 'raises an InvalidRelationOption exception' do
|
|
261
|
+
expect {
|
|
262
|
+
klass.embeds_one(:name, sandwich: true)
|
|
263
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
context "association properties" do
|
|
268
|
+
|
|
269
|
+
let(:association) do
|
|
263
270
|
klass.relations["name"]
|
|
264
271
|
end
|
|
265
272
|
|
|
266
273
|
it "automatically adds the name" do
|
|
267
|
-
expect(
|
|
274
|
+
expect(association.name).to eq(:name)
|
|
268
275
|
end
|
|
269
276
|
|
|
270
277
|
it "automatically adds the inverse class name" do
|
|
271
|
-
expect(
|
|
278
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
272
279
|
end
|
|
273
280
|
end
|
|
274
281
|
end
|
|
@@ -328,6 +335,15 @@ describe Mongoid::Relations::Macros do
|
|
|
328
335
|
|
|
329
336
|
context 'when the relation has options' do
|
|
330
337
|
|
|
338
|
+
context 'when an invalid option is provided' do
|
|
339
|
+
|
|
340
|
+
it 'raises an InvalidRelationOption exception' do
|
|
341
|
+
expect {
|
|
342
|
+
klass.belongs_to(:person, sandwich: true)
|
|
343
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
344
|
+
end
|
|
345
|
+
end
|
|
346
|
+
|
|
331
347
|
context 'when the relation has the option :required' do
|
|
332
348
|
|
|
333
349
|
context 'when the relation does not have the :optional option' do
|
|
@@ -620,7 +636,7 @@ describe Mongoid::Relations::Macros do
|
|
|
620
636
|
klass.belongs_to(:person)
|
|
621
637
|
end
|
|
622
638
|
|
|
623
|
-
it "adds the
|
|
639
|
+
it "adds the association to the klass" do
|
|
624
640
|
expect(klass.relations["person"]).to_not be_nil
|
|
625
641
|
end
|
|
626
642
|
|
|
@@ -641,8 +657,8 @@ describe Mongoid::Relations::Macros do
|
|
|
641
657
|
end
|
|
642
658
|
|
|
643
659
|
it "creates the correct relation" do
|
|
644
|
-
expect(klass.relations["person"]
|
|
645
|
-
Mongoid::
|
|
660
|
+
expect(klass.relations["person"]).to be_a(
|
|
661
|
+
Mongoid::Association::Referenced::BelongsTo
|
|
646
662
|
)
|
|
647
663
|
end
|
|
648
664
|
|
|
@@ -650,18 +666,18 @@ describe Mongoid::Relations::Macros do
|
|
|
650
666
|
expect(klass.allocate).to respond_to(:person_id)
|
|
651
667
|
end
|
|
652
668
|
|
|
653
|
-
context "
|
|
669
|
+
context "association properties" do
|
|
654
670
|
|
|
655
|
-
let(:
|
|
671
|
+
let(:association) do
|
|
656
672
|
klass.relations["person"]
|
|
657
673
|
end
|
|
658
674
|
|
|
659
675
|
it "automatically adds the name" do
|
|
660
|
-
expect(
|
|
676
|
+
expect(association.name).to eq(:person)
|
|
661
677
|
end
|
|
662
678
|
|
|
663
679
|
it "automatically adds the inverse class name" do
|
|
664
|
-
expect(
|
|
680
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
665
681
|
end
|
|
666
682
|
end
|
|
667
683
|
end
|
|
@@ -692,7 +708,7 @@ describe Mongoid::Relations::Macros do
|
|
|
692
708
|
klass.has_many(:posts)
|
|
693
709
|
end
|
|
694
710
|
|
|
695
|
-
it "adds the
|
|
711
|
+
it "adds the association to the klass" do
|
|
696
712
|
expect(klass.relations["posts"]).to_not be_nil
|
|
697
713
|
end
|
|
698
714
|
|
|
@@ -705,8 +721,8 @@ describe Mongoid::Relations::Macros do
|
|
|
705
721
|
end
|
|
706
722
|
|
|
707
723
|
it "creates the correct relation" do
|
|
708
|
-
expect(klass.relations["posts"]
|
|
709
|
-
Mongoid::
|
|
724
|
+
expect(klass.relations["posts"]).to be_a(
|
|
725
|
+
Mongoid::Association::Referenced::HasMany
|
|
710
726
|
)
|
|
711
727
|
end
|
|
712
728
|
|
|
@@ -716,18 +732,27 @@ describe Mongoid::Relations::Macros do
|
|
|
716
732
|
)
|
|
717
733
|
end
|
|
718
734
|
|
|
719
|
-
context "
|
|
735
|
+
context "association properties" do
|
|
720
736
|
|
|
721
|
-
let(:
|
|
737
|
+
let(:association) do
|
|
722
738
|
klass.relations["posts"]
|
|
723
739
|
end
|
|
724
740
|
|
|
725
741
|
it "automatically adds the name" do
|
|
726
|
-
expect(
|
|
742
|
+
expect(association.name).to eq(:posts)
|
|
727
743
|
end
|
|
728
744
|
|
|
729
745
|
it "automatically adds the inverse class name" do
|
|
730
|
-
expect(
|
|
746
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
747
|
+
end
|
|
748
|
+
end
|
|
749
|
+
|
|
750
|
+
context 'when an invalid option is provided' do
|
|
751
|
+
|
|
752
|
+
it 'raises an InvalidRelationOption exception' do
|
|
753
|
+
expect {
|
|
754
|
+
klass.has_many(:names, sandwich: true)
|
|
755
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
731
756
|
end
|
|
732
757
|
end
|
|
733
758
|
end
|
|
@@ -738,16 +763,16 @@ describe Mongoid::Relations::Macros do
|
|
|
738
763
|
klass.has_many(:posts, order: :rating.asc)
|
|
739
764
|
end
|
|
740
765
|
|
|
741
|
-
let(:
|
|
766
|
+
let(:association) do
|
|
742
767
|
klass.relations["posts"]
|
|
743
768
|
end
|
|
744
769
|
|
|
745
|
-
it "adds
|
|
746
|
-
expect(
|
|
770
|
+
it "adds association to klass" do
|
|
771
|
+
expect(association.order).to_not be_nil
|
|
747
772
|
end
|
|
748
773
|
|
|
749
774
|
it "returns Mongoid::Criteria::Queryable::Key" do
|
|
750
|
-
expect(
|
|
775
|
+
expect(association.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
|
|
751
776
|
end
|
|
752
777
|
end
|
|
753
778
|
|
|
@@ -784,11 +809,20 @@ describe Mongoid::Relations::Macros do
|
|
|
784
809
|
end
|
|
785
810
|
end
|
|
786
811
|
|
|
812
|
+
context 'when an invalid option is provided' do
|
|
813
|
+
|
|
814
|
+
it 'raises an InvalidRelationOption exception' do
|
|
815
|
+
expect {
|
|
816
|
+
klass.has_and_belongs_to_many(:fields, sandwich: true)
|
|
817
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
818
|
+
end
|
|
819
|
+
end
|
|
820
|
+
|
|
787
821
|
before do
|
|
788
822
|
klass.has_and_belongs_to_many(:preferences)
|
|
789
823
|
end
|
|
790
824
|
|
|
791
|
-
it "adds the
|
|
825
|
+
it "adds the association to the klass" do
|
|
792
826
|
expect(klass.relations["preferences"]).to_not be_nil
|
|
793
827
|
end
|
|
794
828
|
|
|
@@ -801,8 +835,8 @@ describe Mongoid::Relations::Macros do
|
|
|
801
835
|
end
|
|
802
836
|
|
|
803
837
|
it "creates the correct relation" do
|
|
804
|
-
expect(klass.relations["preferences"]
|
|
805
|
-
Mongoid::
|
|
838
|
+
expect(klass.relations["preferences"]).to be_a(
|
|
839
|
+
Mongoid::Association::Referenced::HasAndBelongsToMany
|
|
806
840
|
)
|
|
807
841
|
end
|
|
808
842
|
|
|
@@ -816,31 +850,31 @@ describe Mongoid::Relations::Macros do
|
|
|
816
850
|
klass.has_and_belongs_to_many(:preferences, order: :ranking.asc)
|
|
817
851
|
end
|
|
818
852
|
|
|
819
|
-
let(:
|
|
853
|
+
let(:association) do
|
|
820
854
|
klass.relations["preferences"]
|
|
821
855
|
end
|
|
822
856
|
|
|
823
|
-
it "adds
|
|
824
|
-
expect(
|
|
857
|
+
it "adds association to klass" do
|
|
858
|
+
expect(association.order).to_not be_nil
|
|
825
859
|
end
|
|
826
860
|
|
|
827
861
|
it "returns Mongoid::Criteria::Queryable::Key" do
|
|
828
|
-
expect(
|
|
862
|
+
expect(association.order).to be_kind_of(Mongoid::Criteria::Queryable::Key)
|
|
829
863
|
end
|
|
830
864
|
end
|
|
831
865
|
|
|
832
|
-
context "
|
|
866
|
+
context "association properties" do
|
|
833
867
|
|
|
834
|
-
let(:
|
|
868
|
+
let(:association) do
|
|
835
869
|
klass.relations["preferences"]
|
|
836
870
|
end
|
|
837
871
|
|
|
838
872
|
it "automatically adds the name" do
|
|
839
|
-
expect(
|
|
873
|
+
expect(association.name).to eq(:preferences)
|
|
840
874
|
end
|
|
841
875
|
|
|
842
876
|
it "automatically adds the inverse class name" do
|
|
843
|
-
expect(
|
|
877
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
844
878
|
end
|
|
845
879
|
end
|
|
846
880
|
end
|
|
@@ -867,11 +901,20 @@ describe Mongoid::Relations::Macros do
|
|
|
867
901
|
end
|
|
868
902
|
end
|
|
869
903
|
|
|
904
|
+
context 'when an invalid option is provided' do
|
|
905
|
+
|
|
906
|
+
it 'raises an InvalidRelationOption exception' do
|
|
907
|
+
expect {
|
|
908
|
+
klass.has_one(:game, sandwich: true)
|
|
909
|
+
}.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
910
|
+
end
|
|
911
|
+
end
|
|
912
|
+
|
|
870
913
|
before do
|
|
871
914
|
klass.has_one(:game)
|
|
872
915
|
end
|
|
873
916
|
|
|
874
|
-
it "adds the
|
|
917
|
+
it "adds the association to the klass" do
|
|
875
918
|
expect(klass.relations["game"]).to_not be_nil
|
|
876
919
|
end
|
|
877
920
|
|
|
@@ -892,8 +935,8 @@ describe Mongoid::Relations::Macros do
|
|
|
892
935
|
end
|
|
893
936
|
|
|
894
937
|
it "creates the correct relation" do
|
|
895
|
-
expect(klass.relations["game"]
|
|
896
|
-
Mongoid::
|
|
938
|
+
expect(klass.relations["game"]).to be_a(
|
|
939
|
+
Mongoid::Association::Referenced::HasOne
|
|
897
940
|
)
|
|
898
941
|
end
|
|
899
942
|
|
|
@@ -903,18 +946,18 @@ describe Mongoid::Relations::Macros do
|
|
|
903
946
|
)
|
|
904
947
|
end
|
|
905
948
|
|
|
906
|
-
context "
|
|
949
|
+
context "association properties" do
|
|
907
950
|
|
|
908
|
-
let(:
|
|
951
|
+
let(:association) do
|
|
909
952
|
klass.relations["game"]
|
|
910
953
|
end
|
|
911
954
|
|
|
912
955
|
it "automatically adds the name" do
|
|
913
|
-
expect(
|
|
956
|
+
expect(association.name).to eq(:game)
|
|
914
957
|
end
|
|
915
958
|
|
|
916
959
|
it "automatically adds the inverse class name" do
|
|
917
|
-
expect(
|
|
960
|
+
expect(association.inverse_class_name).to eq("TestClass")
|
|
918
961
|
end
|
|
919
962
|
end
|
|
920
963
|
end
|
|
@@ -937,18 +980,26 @@ describe Mongoid::Relations::Macros do
|
|
|
937
980
|
klass.embeds_one(:name)
|
|
938
981
|
end
|
|
939
982
|
|
|
940
|
-
it "returns a
|
|
941
|
-
expect(klass.allocate.relations).to be_a_kind_of(
|
|
983
|
+
it "returns a bson document of relations" do
|
|
984
|
+
expect(klass.allocate.relations).to be_a_kind_of(BSON::Document)
|
|
942
985
|
end
|
|
943
986
|
|
|
944
987
|
it "has keys that are the relation name" do
|
|
945
|
-
expect(klass.allocate.relations
|
|
988
|
+
expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
989
|
+
end
|
|
990
|
+
|
|
991
|
+
it "has keys that can be accessed by a String" do
|
|
992
|
+
expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
946
993
|
end
|
|
947
994
|
|
|
948
|
-
it "has
|
|
995
|
+
it "has keys that can be accessed by a Symbol" do
|
|
996
|
+
expect(klass.allocate.relations[:name]).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
997
|
+
end
|
|
998
|
+
|
|
999
|
+
it "has values that are association" do
|
|
949
1000
|
expect(
|
|
950
1001
|
klass.allocate.relations.values.first
|
|
951
|
-
).to be_a_kind_of(Mongoid::
|
|
1002
|
+
).to be_a_kind_of(Mongoid::Association::Embedded::EmbedsOne)
|
|
952
1003
|
end
|
|
953
1004
|
end
|
|
954
1005
|
|
|
@@ -958,18 +1009,22 @@ describe Mongoid::Relations::Macros do
|
|
|
958
1009
|
klass.embeds_one(:name)
|
|
959
1010
|
end
|
|
960
1011
|
|
|
961
|
-
it "
|
|
962
|
-
expect(klass.relations).to
|
|
1012
|
+
it "has keys that are the relation name" do
|
|
1013
|
+
expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
1014
|
+
end
|
|
1015
|
+
|
|
1016
|
+
it "has keys that can be accessed by a String" do
|
|
1017
|
+
expect(klass.allocate.relations['name']).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
963
1018
|
end
|
|
964
1019
|
|
|
965
|
-
it "has keys that
|
|
966
|
-
expect(klass.relations
|
|
1020
|
+
it "has keys that can be accessed by a Symbol" do
|
|
1021
|
+
expect(klass.allocate.relations[:name]).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
967
1022
|
end
|
|
968
1023
|
|
|
969
|
-
it "has values that are
|
|
1024
|
+
it "has values that are association" do
|
|
970
1025
|
expect(
|
|
971
1026
|
klass.relations.values.first
|
|
972
|
-
).to
|
|
1027
|
+
).to be_a(Mongoid::Association::Embedded::EmbedsOne)
|
|
973
1028
|
end
|
|
974
1029
|
end
|
|
975
1030
|
|