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::Embedded::EmbedsMany::Binding do
|
|
4
4
|
|
|
5
5
|
let(:person) do
|
|
6
6
|
Person.new
|
|
@@ -14,14 +14,14 @@ describe Mongoid::Relations::Bindings::Embedded::Many do
|
|
|
14
14
|
[ address ]
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
let(:
|
|
17
|
+
let(:association) do
|
|
18
18
|
Person.relations["addresses"]
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe "#bind_one" do
|
|
22
22
|
|
|
23
23
|
let(:binding) do
|
|
24
|
-
described_class.new(person, target,
|
|
24
|
+
described_class.new(person, target, association)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
context "when the document is bindable" do
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Association::Embedded::EmbedsMany::Buildable do
|
|
4
4
|
|
|
5
5
|
let(:base) do
|
|
6
6
|
double
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
let(:
|
|
10
|
-
|
|
9
|
+
let(:options) do
|
|
10
|
+
{ }
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
describe "#build" do
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
let(:documents) do
|
|
16
|
+
association.build(base, object)
|
|
17
|
+
end
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
let(:association) do
|
|
20
|
+
Mongoid::Association::Embedded::EmbedsMany.new(Person, :addresses, options)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context "when passed an array of documents" do
|
|
20
24
|
|
|
21
25
|
let(:object) do
|
|
22
26
|
[ Address.new(city: "London") ]
|
|
23
27
|
end
|
|
24
28
|
|
|
25
|
-
let(:documents) do
|
|
26
|
-
builder.build
|
|
27
|
-
end
|
|
28
|
-
|
|
29
29
|
it "returns an array of documents" do
|
|
30
30
|
expect(documents).to eq(object)
|
|
31
31
|
end
|
|
@@ -33,18 +33,10 @@ describe Mongoid::Relations::Builders::Embedded::Many do
|
|
|
33
33
|
|
|
34
34
|
context "when the array is empty" do
|
|
35
35
|
|
|
36
|
-
let(:metadata) do
|
|
37
|
-
double(klass: Address, name: :addresses)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
36
|
let(:object) do
|
|
41
37
|
[]
|
|
42
38
|
end
|
|
43
39
|
|
|
44
|
-
let(:documents) do
|
|
45
|
-
builder.build
|
|
46
|
-
end
|
|
47
|
-
|
|
48
40
|
it "returns an empty array" do
|
|
49
41
|
expect(documents).to eq(object)
|
|
50
42
|
end
|
|
@@ -52,16 +44,8 @@ describe Mongoid::Relations::Builders::Embedded::Many do
|
|
|
52
44
|
|
|
53
45
|
context "when passed nil" do
|
|
54
46
|
|
|
55
|
-
let(:
|
|
56
|
-
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
let(:builder) do
|
|
60
|
-
described_class.new(nil, metadata, nil)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
let(:documents) do
|
|
64
|
-
builder.build
|
|
47
|
+
let(:object) do
|
|
48
|
+
nil
|
|
65
49
|
end
|
|
66
50
|
|
|
67
51
|
it "returns an empty array" do
|
|
@@ -71,18 +55,10 @@ describe Mongoid::Relations::Builders::Embedded::Many do
|
|
|
71
55
|
|
|
72
56
|
context "when no type is in the object" do
|
|
73
57
|
|
|
74
|
-
let(:metadata) do
|
|
75
|
-
double(klass: Address, name: :addresses)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
58
|
let(:object) do
|
|
79
59
|
[ { "city" => "London" }, { "city" => "Shanghai" } ]
|
|
80
60
|
end
|
|
81
61
|
|
|
82
|
-
let(:documents) do
|
|
83
|
-
builder.build
|
|
84
|
-
end
|
|
85
|
-
|
|
86
62
|
it "returns an array of documents" do
|
|
87
63
|
expect(documents).to be_a_kind_of(Array)
|
|
88
64
|
end
|
|
@@ -99,21 +75,17 @@ describe Mongoid::Relations::Builders::Embedded::Many do
|
|
|
99
75
|
|
|
100
76
|
context "when a type is in the object" do
|
|
101
77
|
|
|
102
|
-
let(:
|
|
103
|
-
|
|
78
|
+
let(:association) do
|
|
79
|
+
Mongoid::Association::Embedded::EmbedsMany.new(Person, :shapes)
|
|
104
80
|
end
|
|
105
81
|
|
|
106
82
|
let(:object) do
|
|
107
83
|
[
|
|
108
|
-
|
|
109
|
-
|
|
84
|
+
{ "_type" => "Circle", "radius" => 100 },
|
|
85
|
+
{ "_type" => "Square", "width" => 50 }
|
|
110
86
|
]
|
|
111
87
|
end
|
|
112
88
|
|
|
113
|
-
let(:documents) do
|
|
114
|
-
builder.build
|
|
115
|
-
end
|
|
116
|
-
|
|
117
89
|
it "returns an array of documents" do
|
|
118
90
|
expect(documents).to be_a_kind_of(Array)
|
|
119
91
|
end
|
data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
4
4
|
|
|
5
5
|
[ :<<, :push ].each do |method|
|
|
6
6
|
|
|
@@ -40,8 +40,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
40
40
|
expect(address._parent).to eq(person)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
it "sets the metadata on the child" do
|
|
44
|
-
expect(address.
|
|
43
|
+
it "sets the association metadata on the child" do
|
|
44
|
+
expect(address._association).to_not be_nil
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
it "sets the index on the child" do
|
|
@@ -52,6 +52,21 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
52
52
|
expect(added).to eq(person.addresses)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
+
context 'when the child is already related to the parent' do
|
|
56
|
+
|
|
57
|
+
let(:message) do
|
|
58
|
+
Message.new(person: person)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
before do
|
|
62
|
+
person.messages << message
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "appends only once to the target" do
|
|
66
|
+
expect(person.messages).to eq([ message ])
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
55
70
|
context "with a limiting default scope" do
|
|
56
71
|
|
|
57
72
|
context "when the document matches the scope" do
|
|
@@ -65,7 +80,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
65
80
|
end
|
|
66
81
|
|
|
67
82
|
it "appends to the target" do
|
|
68
|
-
expect(person.appointments.
|
|
83
|
+
expect(person.appointments._target).to eq([ active ])
|
|
69
84
|
end
|
|
70
85
|
|
|
71
86
|
it "appends to the _unscoped" do
|
|
@@ -84,7 +99,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
84
99
|
end
|
|
85
100
|
|
|
86
101
|
it "doesn't append to the target" do
|
|
87
|
-
expect(person.appointments.
|
|
102
|
+
expect(person.appointments._target).to_not eq([ inactive ])
|
|
88
103
|
end
|
|
89
104
|
|
|
90
105
|
it "appends to the _unscoped" do
|
|
@@ -180,8 +195,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
180
195
|
expect(child_role._parent).to eq(parent_role)
|
|
181
196
|
end
|
|
182
197
|
|
|
183
|
-
it "sets the metadata on the child" do
|
|
184
|
-
expect(child_role.
|
|
198
|
+
it "sets the association metadata on the child" do
|
|
199
|
+
expect(child_role._association).to_not be_nil
|
|
185
200
|
end
|
|
186
201
|
|
|
187
202
|
it "sets the index on the child" do
|
|
@@ -221,21 +236,21 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
221
236
|
context "assign parent first" do
|
|
222
237
|
before do
|
|
223
238
|
message.person = person
|
|
224
|
-
message.
|
|
239
|
+
message.receivers.send(method, person)
|
|
225
240
|
end
|
|
226
241
|
|
|
227
242
|
it "appends to the relation array" do
|
|
228
|
-
expect(message.
|
|
243
|
+
expect(message.receivers).to include(person)
|
|
229
244
|
end
|
|
230
245
|
end
|
|
231
246
|
|
|
232
247
|
context "not assign parent" do
|
|
233
248
|
before do
|
|
234
|
-
message.
|
|
249
|
+
message.receivers.send(method, person)
|
|
235
250
|
end
|
|
236
251
|
|
|
237
252
|
it "appends to the relation array" do
|
|
238
|
-
expect(message.
|
|
253
|
+
expect(message.receivers).to include(person)
|
|
239
254
|
end
|
|
240
255
|
end
|
|
241
256
|
end
|
|
@@ -282,8 +297,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
282
297
|
expect(address._parent).to eq(person)
|
|
283
298
|
end
|
|
284
299
|
|
|
285
|
-
it "sets the metadata on the child" do
|
|
286
|
-
expect(address.
|
|
300
|
+
it "sets the association metadata on the child" do
|
|
301
|
+
expect(address._association).to_not be_nil
|
|
287
302
|
end
|
|
288
303
|
|
|
289
304
|
it "sets the index on the child" do
|
|
@@ -433,8 +448,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
433
448
|
|
|
434
449
|
let(:addresses) do
|
|
435
450
|
[
|
|
436
|
-
|
|
437
|
-
|
|
451
|
+
Address.new(street: "1st St"),
|
|
452
|
+
Address.new(street: "2nd St")
|
|
438
453
|
]
|
|
439
454
|
end
|
|
440
455
|
|
|
@@ -651,8 +666,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
651
666
|
expect(child_role._parent).to eq(parent_role)
|
|
652
667
|
end
|
|
653
668
|
|
|
654
|
-
it "sets the metadata on the child" do
|
|
655
|
-
expect(child_role.
|
|
669
|
+
it "sets the association metadata on the child" do
|
|
670
|
+
expect(child_role._association).to_not be_nil
|
|
656
671
|
end
|
|
657
672
|
|
|
658
673
|
it "sets the index on the child" do
|
|
@@ -1028,8 +1043,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1028
1043
|
expect(address._parent).to eq(person)
|
|
1029
1044
|
end
|
|
1030
1045
|
|
|
1031
|
-
it "sets the metadata on the child" do
|
|
1032
|
-
expect(address.
|
|
1046
|
+
it "sets the association metadata on the child" do
|
|
1047
|
+
expect(address._association).to_not be_nil
|
|
1033
1048
|
end
|
|
1034
1049
|
|
|
1035
1050
|
it "sets the index on the child" do
|
|
@@ -1071,8 +1086,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1071
1086
|
expect(child_role._parent).to eq(parent_role)
|
|
1072
1087
|
end
|
|
1073
1088
|
|
|
1074
|
-
it "sets the metadata on the child" do
|
|
1075
|
-
expect(child_role.
|
|
1089
|
+
it "sets the association metadata on the child" do
|
|
1090
|
+
expect(child_role._association).to_not be_nil
|
|
1076
1091
|
end
|
|
1077
1092
|
|
|
1078
1093
|
it "sets the index on the child" do
|
|
@@ -1092,9 +1107,9 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1092
1107
|
|
|
1093
1108
|
let(:address) do
|
|
1094
1109
|
person.addresses.send(
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1110
|
+
method,
|
|
1111
|
+
street: "Bond",
|
|
1112
|
+
locations_attributes: { "1" => { "name" => "Home" } }
|
|
1098
1113
|
)
|
|
1099
1114
|
end
|
|
1100
1115
|
|
|
@@ -1116,35 +1131,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1116
1131
|
end
|
|
1117
1132
|
end
|
|
1118
1133
|
|
|
1119
|
-
describe ".builder" do
|
|
1120
|
-
|
|
1121
|
-
let(:base) do
|
|
1122
|
-
Person.new
|
|
1123
|
-
end
|
|
1124
|
-
|
|
1125
|
-
let(:target) do
|
|
1126
|
-
[ address ]
|
|
1127
|
-
end
|
|
1128
|
-
|
|
1129
|
-
let(:metadata) do
|
|
1130
|
-
Person.relations["addresses"]
|
|
1131
|
-
end
|
|
1132
|
-
|
|
1133
|
-
let(:relation) do
|
|
1134
|
-
described_class.new(base, target, metadata)
|
|
1135
|
-
end
|
|
1136
|
-
|
|
1137
|
-
let(:document) do
|
|
1138
|
-
Address.new
|
|
1139
|
-
end
|
|
1140
|
-
|
|
1141
|
-
it "returns the many builder" do
|
|
1142
|
-
expect(
|
|
1143
|
-
described_class.builder(base, metadata, document)
|
|
1144
|
-
).to be_a(Mongoid::Relations::Builders::Embedded::Many)
|
|
1145
|
-
end
|
|
1146
|
-
end
|
|
1147
|
-
|
|
1148
1134
|
describe "#clear" do
|
|
1149
1135
|
|
|
1150
1136
|
context "when the parent has been persisted" do
|
|
@@ -1260,8 +1246,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1260
1246
|
expect(address._parent).to eq(person)
|
|
1261
1247
|
end
|
|
1262
1248
|
|
|
1263
|
-
it "sets the metadata on the child" do
|
|
1264
|
-
expect(address.
|
|
1249
|
+
it "sets the association metadata on the child" do
|
|
1250
|
+
expect(address._association).to_not be_nil
|
|
1265
1251
|
end
|
|
1266
1252
|
|
|
1267
1253
|
it "sets the index on the child" do
|
|
@@ -1367,8 +1353,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1367
1353
|
expect(child_role._parent).to eq(parent_role)
|
|
1368
1354
|
end
|
|
1369
1355
|
|
|
1370
|
-
it "sets the metadata on the child" do
|
|
1371
|
-
expect(child_role.
|
|
1356
|
+
it "sets the association metadata on the child" do
|
|
1357
|
+
expect(child_role._association).to_not be_nil
|
|
1372
1358
|
end
|
|
1373
1359
|
|
|
1374
1360
|
it "sets the index on the child" do
|
|
@@ -1474,8 +1460,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1474
1460
|
expect(address._parent).to eq(person)
|
|
1475
1461
|
end
|
|
1476
1462
|
|
|
1477
|
-
it "sets the metadata on the child" do
|
|
1478
|
-
expect(address.
|
|
1463
|
+
it "sets the association metadata on the child" do
|
|
1464
|
+
expect(address._association).to_not be_nil
|
|
1479
1465
|
end
|
|
1480
1466
|
|
|
1481
1467
|
it "sets the index on the child" do
|
|
@@ -1573,8 +1559,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1573
1559
|
expect(address._parent).to eq(person)
|
|
1574
1560
|
end
|
|
1575
1561
|
|
|
1576
|
-
it "sets the metadata on the child" do
|
|
1577
|
-
expect(address.
|
|
1562
|
+
it "sets the association metadata on the child" do
|
|
1563
|
+
expect(address._association).to_not be_nil
|
|
1578
1564
|
end
|
|
1579
1565
|
|
|
1580
1566
|
it "sets the index on the child" do
|
|
@@ -1596,10 +1582,10 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1596
1582
|
|
|
1597
1583
|
context 'when the presence of the embedded relation is validated' do
|
|
1598
1584
|
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1585
|
+
around do |example|
|
|
1586
|
+
Book.validates :pages, presence: true
|
|
1587
|
+
example.run
|
|
1588
|
+
Book.reset_callbacks(:validate)
|
|
1603
1589
|
end
|
|
1604
1590
|
|
|
1605
1591
|
let(:book) do
|
|
@@ -1805,8 +1791,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1805
1791
|
|
|
1806
1792
|
let!(:deleted) do
|
|
1807
1793
|
person.addresses.send(
|
|
1808
|
-
|
|
1809
|
-
|
|
1794
|
+
method,
|
|
1795
|
+
{ street: "Bond" }
|
|
1810
1796
|
)
|
|
1811
1797
|
end
|
|
1812
1798
|
|
|
@@ -1853,8 +1839,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1853
1839
|
|
|
1854
1840
|
let!(:deleted) do
|
|
1855
1841
|
person.addresses.send(
|
|
1856
|
-
|
|
1857
|
-
|
|
1842
|
+
method,
|
|
1843
|
+
{ street: "Bond" }
|
|
1858
1844
|
)
|
|
1859
1845
|
end
|
|
1860
1846
|
|
|
@@ -1939,8 +1925,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1939
1925
|
|
|
1940
1926
|
let!(:deleted) do
|
|
1941
1927
|
person.addresses.send(
|
|
1942
|
-
|
|
1943
|
-
|
|
1928
|
+
method,
|
|
1929
|
+
conditions: { street: "Bond" }
|
|
1944
1930
|
)
|
|
1945
1931
|
end
|
|
1946
1932
|
|
|
@@ -1986,13 +1972,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
1986
1972
|
end
|
|
1987
1973
|
end
|
|
1988
1974
|
|
|
1989
|
-
describe ".foreign_key_suffix" do
|
|
1990
|
-
|
|
1991
|
-
it "returns nil" do
|
|
1992
|
-
expect(described_class.foreign_key_suffix).to be_nil
|
|
1993
|
-
end
|
|
1994
|
-
end
|
|
1995
|
-
|
|
1996
1975
|
describe "#exists?" do
|
|
1997
1976
|
|
|
1998
1977
|
let!(:person) do
|
|
@@ -2177,27 +2156,28 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2177
2156
|
end
|
|
2178
2157
|
end
|
|
2179
2158
|
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
end
|
|
2159
|
+
# todo: why should this pass?
|
|
2160
|
+
# context "when the child belongs to another document" do
|
|
2161
|
+
#
|
|
2162
|
+
# let(:product) do
|
|
2163
|
+
# Product.create
|
|
2164
|
+
# end
|
|
2165
|
+
#
|
|
2166
|
+
# let(:purchase) do
|
|
2167
|
+
# Purchase.create
|
|
2168
|
+
# end
|
|
2169
|
+
#
|
|
2170
|
+
# let(:line_item) do
|
|
2171
|
+
# purchase.line_items.find_or_create_by(
|
|
2172
|
+
# product_id: product.id,
|
|
2173
|
+
# product_type: product.class.name
|
|
2174
|
+
# )
|
|
2175
|
+
# end
|
|
2176
|
+
#
|
|
2177
|
+
# it "properly creates the document" do
|
|
2178
|
+
# expect(line_item.product).to eq(product)
|
|
2179
|
+
# end
|
|
2180
|
+
# end
|
|
2201
2181
|
end
|
|
2202
2182
|
|
|
2203
2183
|
describe "#find_or_create_by!" do
|
|
@@ -2251,27 +2231,28 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2251
2231
|
end
|
|
2252
2232
|
end
|
|
2253
2233
|
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
end
|
|
2234
|
+
# todo: why should this pass?
|
|
2235
|
+
# context "when the child belongs to another document" do
|
|
2236
|
+
#
|
|
2237
|
+
# let(:product) do
|
|
2238
|
+
# Product.create
|
|
2239
|
+
# end
|
|
2240
|
+
#
|
|
2241
|
+
# let(:purchase) do
|
|
2242
|
+
# Purchase.create
|
|
2243
|
+
# end
|
|
2244
|
+
#
|
|
2245
|
+
# let(:line_item) do
|
|
2246
|
+
# purchase.line_items.find_or_create_by(
|
|
2247
|
+
# product_id: product.id,
|
|
2248
|
+
# product_type: product.class.name
|
|
2249
|
+
# )
|
|
2250
|
+
# end
|
|
2251
|
+
#
|
|
2252
|
+
# it "properly creates the document" do
|
|
2253
|
+
# expect(line_item.product).to eq(product)
|
|
2254
|
+
# end
|
|
2255
|
+
# end
|
|
2275
2256
|
end
|
|
2276
2257
|
|
|
2277
2258
|
describe "#find_or_initialize_by" do
|
|
@@ -2317,13 +2298,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2317
2298
|
end
|
|
2318
2299
|
end
|
|
2319
2300
|
|
|
2320
|
-
describe ".macro" do
|
|
2321
|
-
|
|
2322
|
-
it "returns embeds_many" do
|
|
2323
|
-
expect(described_class.macro).to eq(:embeds_many)
|
|
2324
|
-
end
|
|
2325
|
-
end
|
|
2326
|
-
|
|
2327
2301
|
describe "#max" do
|
|
2328
2302
|
|
|
2329
2303
|
let(:person) do
|
|
@@ -2388,17 +2362,17 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2388
2362
|
|
|
2389
2363
|
let!(:address_one) do
|
|
2390
2364
|
person.addresses.create(
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2365
|
+
street: "Market",
|
|
2366
|
+
state: "CA",
|
|
2367
|
+
services: [ "1", "2" ]
|
|
2394
2368
|
)
|
|
2395
2369
|
end
|
|
2396
2370
|
|
|
2397
2371
|
let!(:address_two) do
|
|
2398
2372
|
person.addresses.create(
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2373
|
+
street: "Madison",
|
|
2374
|
+
state: "NY",
|
|
2375
|
+
services: [ "1", "2" ]
|
|
2402
2376
|
)
|
|
2403
2377
|
end
|
|
2404
2378
|
|
|
@@ -2527,19 +2501,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2527
2501
|
end
|
|
2528
2502
|
end
|
|
2529
2503
|
|
|
2530
|
-
describe ".nested_builder" do
|
|
2531
|
-
|
|
2532
|
-
let(:metadata) do
|
|
2533
|
-
Person.relations["addresses"]
|
|
2534
|
-
end
|
|
2535
|
-
|
|
2536
|
-
it "returns the many nested builder class" do
|
|
2537
|
-
expect(
|
|
2538
|
-
described_class.nested_builder(metadata, {}, {})
|
|
2539
|
-
).to be_a(Mongoid::Relations::Builders::NestedAttributes::Many)
|
|
2540
|
-
end
|
|
2541
|
-
end
|
|
2542
|
-
|
|
2543
2504
|
describe "#pop" do
|
|
2544
2505
|
|
|
2545
2506
|
let(:person) do
|
|
@@ -2583,25 +2544,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2583
2544
|
person.addresses.create(street: "hermannstr")
|
|
2584
2545
|
end
|
|
2585
2546
|
|
|
2586
|
-
context "when the number is zero" do
|
|
2587
|
-
|
|
2588
|
-
let!(:popped) do
|
|
2589
|
-
person.addresses.pop(0)
|
|
2590
|
-
end
|
|
2591
|
-
|
|
2592
|
-
it "returns an empty array" do
|
|
2593
|
-
expect(popped).to eq([])
|
|
2594
|
-
end
|
|
2595
|
-
|
|
2596
|
-
it "does not remove the document from the relation" do
|
|
2597
|
-
expect(person.addresses).to eq([ address_one, address_two ])
|
|
2598
|
-
end
|
|
2599
|
-
|
|
2600
|
-
it "does not persist the pop" do
|
|
2601
|
-
expect(person.reload.addresses).to eq([ address_one, address_two ])
|
|
2602
|
-
end
|
|
2603
|
-
end
|
|
2604
|
-
|
|
2605
2547
|
context "when the number is not larger than the relation" do
|
|
2606
2548
|
|
|
2607
2549
|
let!(:popped) do
|
|
@@ -2659,125 +2601,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2659
2601
|
end
|
|
2660
2602
|
end
|
|
2661
2603
|
|
|
2662
|
-
describe "#shift" do
|
|
2663
|
-
|
|
2664
|
-
let(:person) do
|
|
2665
|
-
Person.create
|
|
2666
|
-
end
|
|
2667
|
-
|
|
2668
|
-
context "when no argument is provided" do
|
|
2669
|
-
|
|
2670
|
-
let!(:address_one) do
|
|
2671
|
-
person.addresses.create(street: "sonnenallee")
|
|
2672
|
-
end
|
|
2673
|
-
|
|
2674
|
-
let!(:address_two) do
|
|
2675
|
-
person.addresses.create(street: "hermannstr")
|
|
2676
|
-
end
|
|
2677
|
-
|
|
2678
|
-
let!(:shifted) do
|
|
2679
|
-
person.addresses.shift
|
|
2680
|
-
end
|
|
2681
|
-
|
|
2682
|
-
it "returns the shifted document" do
|
|
2683
|
-
expect(shifted).to eq(address_one)
|
|
2684
|
-
end
|
|
2685
|
-
|
|
2686
|
-
it "removes the document from the relation" do
|
|
2687
|
-
expect(person.addresses).to eq([ address_two ])
|
|
2688
|
-
end
|
|
2689
|
-
|
|
2690
|
-
it "persists the shift" do
|
|
2691
|
-
expect(person.reload.addresses).to eq([ address_two ])
|
|
2692
|
-
end
|
|
2693
|
-
end
|
|
2694
|
-
|
|
2695
|
-
context "when an integer is provided" do
|
|
2696
|
-
|
|
2697
|
-
let!(:address_one) do
|
|
2698
|
-
person.addresses.create(street: "sonnenallee")
|
|
2699
|
-
end
|
|
2700
|
-
|
|
2701
|
-
let!(:address_two) do
|
|
2702
|
-
person.addresses.create(street: "hermannstr")
|
|
2703
|
-
end
|
|
2704
|
-
|
|
2705
|
-
context "when the number is zero" do
|
|
2706
|
-
|
|
2707
|
-
let!(:shifted) do
|
|
2708
|
-
person.addresses.shift(0)
|
|
2709
|
-
end
|
|
2710
|
-
|
|
2711
|
-
it "returns an empty array" do
|
|
2712
|
-
expect(shifted).to eq([])
|
|
2713
|
-
end
|
|
2714
|
-
|
|
2715
|
-
it "does not remove the document from the relation" do
|
|
2716
|
-
expect(person.addresses).to eq([ address_one, address_two ])
|
|
2717
|
-
end
|
|
2718
|
-
|
|
2719
|
-
it "does not persist the shift" do
|
|
2720
|
-
expect(person.reload.addresses).to eq([ address_one, address_two ])
|
|
2721
|
-
end
|
|
2722
|
-
end
|
|
2723
|
-
|
|
2724
|
-
context "when the number is not larger than the relation" do
|
|
2725
|
-
|
|
2726
|
-
let!(:shifted) do
|
|
2727
|
-
person.addresses.shift(2)
|
|
2728
|
-
end
|
|
2729
|
-
|
|
2730
|
-
it "returns the shifted documents" do
|
|
2731
|
-
expect(shifted).to eq([ address_one, address_two ])
|
|
2732
|
-
end
|
|
2733
|
-
|
|
2734
|
-
it "removes the document from the relation" do
|
|
2735
|
-
expect(person.addresses).to be_empty
|
|
2736
|
-
end
|
|
2737
|
-
|
|
2738
|
-
it "persists the shift" do
|
|
2739
|
-
expect(person.reload.addresses).to be_empty
|
|
2740
|
-
end
|
|
2741
|
-
end
|
|
2742
|
-
|
|
2743
|
-
context "when the number is larger than the relation" do
|
|
2744
|
-
|
|
2745
|
-
let!(:shifted) do
|
|
2746
|
-
person.addresses.shift(4)
|
|
2747
|
-
end
|
|
2748
|
-
|
|
2749
|
-
it "returns the shifted documents" do
|
|
2750
|
-
expect(shifted).to eq([ address_one, address_two ])
|
|
2751
|
-
end
|
|
2752
|
-
|
|
2753
|
-
it "removes the document from the relation" do
|
|
2754
|
-
expect(person.addresses).to be_empty
|
|
2755
|
-
end
|
|
2756
|
-
|
|
2757
|
-
it "persists the shift" do
|
|
2758
|
-
expect(person.reload.addresses).to be_empty
|
|
2759
|
-
end
|
|
2760
|
-
end
|
|
2761
|
-
end
|
|
2762
|
-
|
|
2763
|
-
context "when the relation is empty" do
|
|
2764
|
-
|
|
2765
|
-
context "when providing no number" do
|
|
2766
|
-
|
|
2767
|
-
it "returns nil" do
|
|
2768
|
-
expect(person.addresses.shift).to be_nil
|
|
2769
|
-
end
|
|
2770
|
-
end
|
|
2771
|
-
|
|
2772
|
-
context "when providing a number" do
|
|
2773
|
-
|
|
2774
|
-
it "returns nil" do
|
|
2775
|
-
expect(person.addresses.shift(2)).to be_nil
|
|
2776
|
-
end
|
|
2777
|
-
end
|
|
2778
|
-
end
|
|
2779
|
-
end
|
|
2780
|
-
|
|
2781
2604
|
describe "#scoped" do
|
|
2782
2605
|
|
|
2783
2606
|
let(:person) do
|
|
@@ -2817,7 +2640,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2817
2640
|
end
|
|
2818
2641
|
end
|
|
2819
2642
|
|
|
2820
|
-
Mongoid::
|
|
2643
|
+
Mongoid::Association::Embedded::EmbedsMany::Proxy.public_instance_methods.each do |method|
|
|
2821
2644
|
|
|
2822
2645
|
context "when checking #{method}" do
|
|
2823
2646
|
|
|
@@ -2911,8 +2734,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2911
2734
|
|
|
2912
2735
|
before do
|
|
2913
2736
|
person.addresses.
|
|
2914
|
-
|
|
2915
|
-
|
|
2737
|
+
where(street: "Hobrecht").
|
|
2738
|
+
update_all(number: 26, post_code: "12437")
|
|
2916
2739
|
end
|
|
2917
2740
|
|
|
2918
2741
|
it "resets the matching dirty flags" do
|
|
@@ -2934,25 +2757,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
2934
2757
|
end
|
|
2935
2758
|
end
|
|
2936
2759
|
|
|
2937
|
-
describe ".valid_options" do
|
|
2938
|
-
|
|
2939
|
-
it "returns the valid options" do
|
|
2940
|
-
expect(described_class.valid_options).to eq(
|
|
2941
|
-
[
|
|
2942
|
-
:as, :cascade_callbacks, :cyclic, :order,
|
|
2943
|
-
:store_as, :before_add, :after_add, :before_remove, :after_remove
|
|
2944
|
-
]
|
|
2945
|
-
)
|
|
2946
|
-
end
|
|
2947
|
-
end
|
|
2948
|
-
|
|
2949
|
-
describe ".validation_default" do
|
|
2950
|
-
|
|
2951
|
-
it "returns true" do
|
|
2952
|
-
expect(described_class.validation_default).to be true
|
|
2953
|
-
end
|
|
2954
|
-
end
|
|
2955
|
-
|
|
2956
2760
|
context "when deeply embedding documents" do
|
|
2957
2761
|
|
|
2958
2762
|
context "when updating the bottom level" do
|
|
@@ -3823,9 +3627,9 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
3823
3627
|
|
|
3824
3628
|
let!(:person) do
|
|
3825
3629
|
Person.create(
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3630
|
+
addresses: [
|
|
3631
|
+
{ locations: [{ name: "home" }]}
|
|
3632
|
+
]
|
|
3829
3633
|
)
|
|
3830
3634
|
end
|
|
3831
3635
|
|
|
@@ -3837,9 +3641,9 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
3837
3641
|
|
|
3838
3642
|
before do
|
|
3839
3643
|
from_db.update_attributes(
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3644
|
+
addresses: [
|
|
3645
|
+
{ locations: [{ name: "work" }]}
|
|
3646
|
+
]
|
|
3843
3647
|
)
|
|
3844
3648
|
end
|
|
3845
3649
|
|
|
@@ -3900,8 +3704,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
3900
3704
|
|
|
3901
3705
|
before do
|
|
3902
3706
|
person.update_attributes(
|
|
3903
|
-
|
|
3904
|
-
|
|
3707
|
+
appointments: [ appointment_one.as_document, appointment_two.as_document ],
|
|
3708
|
+
symptoms: [ symptom_one.as_document, symptom_two.as_document ]
|
|
3905
3709
|
)
|
|
3906
3710
|
end
|
|
3907
3711
|
|
|
@@ -3984,7 +3788,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
3984
3788
|
end
|
|
3985
3789
|
end
|
|
3986
3790
|
|
|
3987
|
-
context "#delete
|
|
3791
|
+
context "#delete or #clear with before_remove callback" do
|
|
3988
3792
|
|
|
3989
3793
|
let(:artist) do
|
|
3990
3794
|
Artist.new
|
|
@@ -4030,81 +3834,35 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4030
3834
|
end
|
|
4031
3835
|
end
|
|
4032
3836
|
|
|
4033
|
-
|
|
4034
|
-
|
|
4035
|
-
before do
|
|
4036
|
-
artist.songs.pop
|
|
4037
|
-
end
|
|
4038
|
-
|
|
4039
|
-
it "executes the callback" do
|
|
4040
|
-
artist.songs.pop
|
|
4041
|
-
expect(artist.before_remove_embedded_called).to be true
|
|
4042
|
-
end
|
|
4043
|
-
end
|
|
4044
|
-
|
|
4045
|
-
describe "#shift" do
|
|
4046
|
-
|
|
4047
|
-
before do
|
|
4048
|
-
artist.songs.shift
|
|
4049
|
-
end
|
|
4050
|
-
|
|
4051
|
-
it "executes the callback" do
|
|
4052
|
-
artist.songs.shift
|
|
4053
|
-
expect(artist.before_remove_embedded_called).to be true
|
|
4054
|
-
end
|
|
4055
|
-
end
|
|
4056
|
-
end
|
|
4057
|
-
|
|
4058
|
-
context "when errors are raised" do
|
|
4059
|
-
|
|
4060
|
-
before do
|
|
4061
|
-
expect(artist).to receive(:before_remove_song).and_raise
|
|
4062
|
-
end
|
|
4063
|
-
|
|
4064
|
-
describe "#delete" do
|
|
4065
|
-
|
|
4066
|
-
it "does not remove the document from the relation" do
|
|
4067
|
-
begin; artist.songs.delete(song); rescue; end
|
|
4068
|
-
expect(artist.songs).to eq([ song ])
|
|
4069
|
-
end
|
|
4070
|
-
end
|
|
4071
|
-
|
|
4072
|
-
describe "#clear" do
|
|
3837
|
+
context "when errors are raised" do
|
|
4073
3838
|
|
|
4074
3839
|
before do
|
|
4075
|
-
|
|
3840
|
+
expect(artist).to receive(:before_remove_song).and_raise
|
|
4076
3841
|
end
|
|
4077
3842
|
|
|
4078
|
-
|
|
4079
|
-
expect(artist.songs).to eq([ song ])
|
|
4080
|
-
end
|
|
4081
|
-
end
|
|
3843
|
+
describe "#delete" do
|
|
4082
3844
|
|
|
4083
|
-
|
|
4084
|
-
|
|
4085
|
-
|
|
4086
|
-
|
|
4087
|
-
end
|
|
4088
|
-
|
|
4089
|
-
it "should remove from collection" do
|
|
4090
|
-
expect(artist.songs).to eq([ song ])
|
|
3845
|
+
it "does not remove the document from the relation" do
|
|
3846
|
+
begin; artist.songs.delete(song); rescue; end
|
|
3847
|
+
expect(artist.songs).to eq([ song ])
|
|
3848
|
+
end
|
|
4091
3849
|
end
|
|
4092
|
-
end
|
|
4093
3850
|
|
|
4094
|
-
|
|
3851
|
+
describe "#clear" do
|
|
4095
3852
|
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
3853
|
+
before do
|
|
3854
|
+
begin; artist.songs.clear; rescue; end
|
|
3855
|
+
end
|
|
4099
3856
|
|
|
4100
|
-
|
|
4101
|
-
|
|
3857
|
+
it "removes the documents from the relation" do
|
|
3858
|
+
expect(artist.songs).to eq([ song ])
|
|
3859
|
+
end
|
|
4102
3860
|
end
|
|
4103
3861
|
end
|
|
4104
3862
|
end
|
|
4105
3863
|
end
|
|
4106
3864
|
|
|
4107
|
-
context "#delete
|
|
3865
|
+
context "#delete or #clear with after_remove callback" do
|
|
4108
3866
|
|
|
4109
3867
|
let(:artist) do
|
|
4110
3868
|
Artist.new
|
|
@@ -4141,30 +3899,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4141
3899
|
expect(artist.after_remove_embedded_called).to be true
|
|
4142
3900
|
end
|
|
4143
3901
|
end
|
|
4144
|
-
|
|
4145
|
-
describe "#pop" do
|
|
4146
|
-
|
|
4147
|
-
before do
|
|
4148
|
-
artist.labels.pop
|
|
4149
|
-
end
|
|
4150
|
-
|
|
4151
|
-
it "executes the callback" do
|
|
4152
|
-
artist.labels.pop
|
|
4153
|
-
expect(artist.after_remove_embedded_called).to be true
|
|
4154
|
-
end
|
|
4155
|
-
end
|
|
4156
|
-
|
|
4157
|
-
describe "#shift" do
|
|
4158
|
-
|
|
4159
|
-
before do
|
|
4160
|
-
artist.labels.shift
|
|
4161
|
-
end
|
|
4162
|
-
|
|
4163
|
-
it "executes the callback" do
|
|
4164
|
-
artist.labels.shift
|
|
4165
|
-
expect(artist.after_remove_embedded_called).to be true
|
|
4166
|
-
end
|
|
4167
|
-
end
|
|
4168
3902
|
end
|
|
4169
3903
|
|
|
4170
3904
|
context "when errors are raised" do
|
|
@@ -4194,28 +3928,6 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4194
3928
|
expect(artist.labels).to be_empty
|
|
4195
3929
|
end
|
|
4196
3930
|
end
|
|
4197
|
-
|
|
4198
|
-
describe "#pop" do
|
|
4199
|
-
|
|
4200
|
-
before do
|
|
4201
|
-
begin; artist.labels.pop; rescue; end
|
|
4202
|
-
end
|
|
4203
|
-
|
|
4204
|
-
it "should remove from collection" do
|
|
4205
|
-
expect(artist.labels).to be_empty
|
|
4206
|
-
end
|
|
4207
|
-
end
|
|
4208
|
-
|
|
4209
|
-
describe "#shift" do
|
|
4210
|
-
|
|
4211
|
-
before do
|
|
4212
|
-
begin; artist.labels.shift; rescue; end
|
|
4213
|
-
end
|
|
4214
|
-
|
|
4215
|
-
it "should remove from collection" do
|
|
4216
|
-
expect(artist.labels).to be_empty
|
|
4217
|
-
end
|
|
4218
|
-
end
|
|
4219
3931
|
end
|
|
4220
3932
|
end
|
|
4221
3933
|
|
|
@@ -4249,8 +3961,8 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4249
3961
|
|
|
4250
3962
|
before do
|
|
4251
3963
|
band.collection.
|
|
4252
|
-
|
|
4253
|
-
|
|
3964
|
+
find(_id: band.id).
|
|
3965
|
+
update_one("$set" => { records: [{ name: "Moderat" }]})
|
|
4254
3966
|
end
|
|
4255
3967
|
|
|
4256
3968
|
context "when loading the documents" do
|
|
@@ -4347,7 +4059,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4347
4059
|
zone.soa = soa_1
|
|
4348
4060
|
end
|
|
4349
4061
|
|
|
4350
|
-
it "properly sets the metadata" do
|
|
4062
|
+
it "properly sets the association metadata" do
|
|
4351
4063
|
expect(zone.soa = soa_2).to eq(soa_2)
|
|
4352
4064
|
end
|
|
4353
4065
|
end
|
|
@@ -4362,7 +4074,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4362
4074
|
zone.soa = soa_1
|
|
4363
4075
|
end
|
|
4364
4076
|
|
|
4365
|
-
it "properly sets the metadata" do
|
|
4077
|
+
it "properly sets the association metadata" do
|
|
4366
4078
|
expect(zone.soa.delete).to be true
|
|
4367
4079
|
end
|
|
4368
4080
|
end
|
|
@@ -4388,7 +4100,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4388
4100
|
zone.soa = soa_1
|
|
4389
4101
|
end
|
|
4390
4102
|
|
|
4391
|
-
it "properly sets the
|
|
4103
|
+
it "properly sets the association" do
|
|
4392
4104
|
expect(zone.soa = soa_2).to eq(soa_2)
|
|
4393
4105
|
end
|
|
4394
4106
|
end
|
|
@@ -4403,7 +4115,7 @@ describe Mongoid::Relations::Embedded::Many do
|
|
|
4403
4115
|
zone.soa = soa_1
|
|
4404
4116
|
end
|
|
4405
4117
|
|
|
4406
|
-
it "properly sets the
|
|
4118
|
+
it "properly sets the association" do
|
|
4407
4119
|
expect(zone.soa.delete).to be true
|
|
4408
4120
|
end
|
|
4409
4121
|
end
|