mongoid 7.2.6 → 7.3.0
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
- checksums.yaml.gz.sig +0 -0
- data/README.md +1 -1
- data/Rakefile +16 -0
- data/lib/config/locales/en.yml +2 -15
- data/lib/mongoid/association/accessors.rb +1 -1
- data/lib/mongoid/association/constrainable.rb +1 -1
- data/lib/mongoid/association/depending.rb +4 -4
- data/lib/mongoid/association/embedded/batchable.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +11 -4
- data/lib/mongoid/association/nested/many.rb +1 -1
- data/lib/mongoid/association/nested/one.rb +4 -2
- data/lib/mongoid/association/proxy.rb +7 -2
- data/lib/mongoid/association/referenced/auto_save.rb +2 -2
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +493 -495
- data/lib/mongoid/association/referenced/has_many/proxy.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +2 -2
- data/lib/mongoid/association/relatable.rb +0 -2
- data/lib/mongoid/attributes/projector.rb +120 -0
- data/lib/mongoid/attributes.rb +24 -13
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/clients/factory.rb +22 -8
- data/lib/mongoid/clients.rb +1 -1
- data/lib/mongoid/config/environment.rb +1 -9
- data/lib/mongoid/config.rb +19 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +10 -8
- data/lib/mongoid/contextual/atomic.rb +2 -7
- data/lib/mongoid/contextual/none.rb +0 -3
- data/lib/mongoid/copyable.rb +1 -1
- data/lib/mongoid/criteria/findable.rb +1 -1
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -24
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +46 -20
- data/lib/mongoid/criteria/queryable/selectable.rb +10 -10
- data/lib/mongoid/criteria/queryable/storable.rb +4 -4
- data/lib/mongoid/criteria.rb +5 -6
- data/lib/mongoid/document.rb +3 -18
- data/lib/mongoid/errors/delete_restriction.rb +8 -9
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors.rb +0 -2
- data/lib/mongoid/evolvable.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +1 -2
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +2 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/fields.rb +43 -5
- data/lib/mongoid/inspectable.rb +1 -1
- data/lib/mongoid/interceptable.rb +1 -1
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/expression.rb +4 -0
- data/lib/mongoid/matcher/field_operator.rb +6 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +7 -0
- data/lib/mongoid/persistable/deletable.rb +1 -2
- data/lib/mongoid/persistable/destroyable.rb +8 -2
- data/lib/mongoid/persistable/updatable.rb +27 -2
- data/lib/mongoid/persistence_context.rb +1 -3
- data/lib/mongoid/query_cache.rb +36 -40
- data/lib/mongoid/selectable.rb +5 -7
- data/lib/mongoid/shardable.rb +21 -5
- data/lib/mongoid/tasks/database.rb +1 -1
- data/lib/mongoid/touchable.rb +23 -4
- data/lib/mongoid/validatable/associated.rb +1 -1
- data/lib/mongoid/validatable/presence.rb +3 -3
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +0 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
- data/spec/integration/app_spec.rb +0 -3
- data/spec/integration/associations/embeds_many_spec.rb +44 -0
- data/spec/integration/associations/has_one_spec.rb +48 -0
- data/spec/integration/criteria/date_field_spec.rb +1 -1
- data/spec/integration/document_spec.rb +9 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/in.yml +16 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/stringified_symbol_field_spec.rb +2 -2
- data/spec/lite_spec_helper.rb +2 -0
- data/spec/mongoid/association/depending_spec.rb +391 -352
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +4 -17
- data/spec/mongoid/association/nested/one_spec.rb +18 -14
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +25 -25
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +0 -20
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_many_models.rb +0 -17
- data/spec/mongoid/association/referenced/has_one_models.rb +8 -0
- data/spec/mongoid/atomic/paths_spec.rb +64 -12
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +41 -0
- data/spec/mongoid/attributes_spec.rb +98 -6
- data/spec/mongoid/clients/factory_spec.rb +51 -9
- data/spec/mongoid/clients/options_spec.rb +3 -11
- data/spec/mongoid/config/environment_spec.rb +8 -86
- data/spec/mongoid/config_spec.rb +32 -0
- data/spec/mongoid/contextual/atomic_spec.rb +25 -64
- data/spec/mongoid/contextual/geo_near_spec.rb +1 -1
- data/spec/mongoid/contextual/mongo_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -73
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +105 -7
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +229 -24
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +39 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1 -565
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +590 -0
- data/spec/mongoid/criteria_projection_spec.rb +411 -0
- data/spec/mongoid/criteria_spec.rb +0 -279
- data/spec/mongoid/document_query_spec.rb +0 -51
- data/spec/mongoid/document_spec.rb +14 -34
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
- data/spec/mongoid/extensions/false_class_spec.rb +1 -1
- data/spec/mongoid/extensions/string_spec.rb +5 -5
- data/spec/mongoid/extensions/true_class_spec.rb +1 -1
- data/spec/mongoid/fields/localized_spec.rb +4 -4
- data/spec/mongoid/fields_spec.rb +4 -4
- data/spec/mongoid/inspectable_spec.rb +12 -4
- data/spec/mongoid/persistable/deletable_spec.rb +175 -1
- data/spec/mongoid/persistable/destroyable_spec.rb +191 -3
- data/spec/mongoid/persistable/savable_spec.rb +3 -5
- data/spec/mongoid/persistable/updatable_spec.rb +0 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -1
- data/spec/mongoid/persistable_spec.rb +2 -2
- data/spec/mongoid/query_cache_middleware_spec.rb +8 -0
- data/spec/mongoid/query_cache_spec.rb +0 -24
- data/spec/mongoid/reloadable_spec.rb +18 -1
- data/spec/mongoid/shardable_spec.rb +44 -0
- data/spec/mongoid/touchable_spec.rb +104 -16
- data/spec/mongoid/touchable_spec_models.rb +52 -0
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/shared/lib/mrss/cluster_config.rb +3 -8
- data/spec/shared/lib/mrss/constraints.rb +10 -41
- data/spec/shared/lib/mrss/docker_runner.rb +1 -7
- data/spec/shared/lib/mrss/server_version_registry.rb +12 -17
- data/spec/shared/lib/mrss/spec_organizer.rb +1 -18
- data/spec/shared/share/Dockerfile.erb +33 -125
- data/spec/shared/shlib/server.sh +23 -100
- data/spec/shared/shlib/set_env.sh +1 -4
- data/spec/spec_helper.rb +7 -3
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/models/address.rb +0 -4
- data/spec/support/models/bolt.rb +8 -0
- data/spec/support/models/hole.rb +13 -0
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/nut.rb +8 -0
- data/spec/support/models/person.rb +6 -9
- data/spec/support/models/sealer.rb +8 -0
- data/spec/support/models/shirt.rb +12 -0
- data/spec/support/models/spacer.rb +8 -0
- data/spec/support/models/threadlocker.rb +8 -0
- data/spec/support/models/washer.rb +8 -0
- data.tar.gz.sig +0 -0
- metadata +609 -545
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/empty_config_file.rb +0 -26
- data/lib/mongoid/errors/invalid_config_file.rb +0 -26
- data/spec/integration/contextual/empty_spec.rb +0 -142
- data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -32
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/support/cluster_config.rb +0 -158
|
@@ -36,55 +36,4 @@ describe Mongoid::Document do
|
|
|
36
36
|
expect(_person.age).to be 42
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
|
-
|
|
40
|
-
context 'when projecting with #without' do
|
|
41
|
-
before do
|
|
42
|
-
duck = Pet.new(name: 'Duck')
|
|
43
|
-
Person.create!(username: 'Dev', title: 'CEO', pet: duck)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
let(:person) { Person.where(username: 'Dev').without(:title).first }
|
|
47
|
-
|
|
48
|
-
it 'allows access to attribute of embedded document' do
|
|
49
|
-
expect(person.pet.name).to eq 'Duck'
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
context 'when exclusion starts with association name but is not the association' do
|
|
53
|
-
|
|
54
|
-
let(:person) { Person.where(username: 'Dev').without(:pet_).first }
|
|
55
|
-
|
|
56
|
-
it 'allows access to attribute of embedded document' do
|
|
57
|
-
expect(person.pet.name).to eq 'Duck'
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context 'when exclusion starts with prefix of association name' do
|
|
62
|
-
|
|
63
|
-
let(:person) { Person.where(username: 'Dev').without(:pe).first }
|
|
64
|
-
|
|
65
|
-
it 'allows access to attribute of embedded document' do
|
|
66
|
-
expect(person.pet.name).to eq 'Duck'
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
context 'when another attribute of the association is excluded' do
|
|
71
|
-
|
|
72
|
-
let(:person) { Person.where(username: 'Dev').without('pet.weight').first }
|
|
73
|
-
|
|
74
|
-
it 'allows access to non-excluded attribute of embedded document' do
|
|
75
|
-
expect(person.pet.name).to eq 'Duck'
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
context 'when the excluded attribute of the association is retrieved' do
|
|
80
|
-
|
|
81
|
-
let(:person) { Person.where(username: 'Dev').without('pet.name').first }
|
|
82
|
-
|
|
83
|
-
it 'prohibits the retrieval' do
|
|
84
|
-
lambda do
|
|
85
|
-
person.pet.name
|
|
86
|
-
end.should raise_error(ActiveModel::MissingAttributeError)
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
39
|
end
|
|
@@ -124,13 +124,13 @@ describe Mongoid::Document do
|
|
|
124
124
|
describe "._mongoid_clear_types" do
|
|
125
125
|
|
|
126
126
|
context "when changing the discriminator_value" do
|
|
127
|
-
|
|
128
|
-
before do
|
|
127
|
+
|
|
128
|
+
before do
|
|
129
129
|
Kangaroo._types
|
|
130
130
|
Kangaroo.discriminator_value = "dvalue"
|
|
131
131
|
end
|
|
132
132
|
|
|
133
|
-
after do
|
|
133
|
+
after do
|
|
134
134
|
Kangaroo.discriminator_value = nil
|
|
135
135
|
end
|
|
136
136
|
|
|
@@ -140,13 +140,13 @@ describe Mongoid::Document do
|
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
context "when changing the discriminator_value in child" do
|
|
143
|
-
|
|
144
|
-
before do
|
|
143
|
+
|
|
144
|
+
before do
|
|
145
145
|
Shape._types
|
|
146
146
|
Circle.discriminator_value = "dvalue"
|
|
147
147
|
end
|
|
148
148
|
|
|
149
|
-
after do
|
|
149
|
+
after do
|
|
150
150
|
Circle.discriminator_value = nil
|
|
151
151
|
end
|
|
152
152
|
|
|
@@ -501,7 +501,7 @@ describe Mongoid::Document do
|
|
|
501
501
|
end
|
|
502
502
|
end
|
|
503
503
|
|
|
504
|
-
context '
|
|
504
|
+
context ':compact option' do
|
|
505
505
|
# Since rails 6 differs in how it treats id fields,
|
|
506
506
|
# run this test on one version of rails. Currently rails 6 is in beta,
|
|
507
507
|
# when it is released this version should be changed to 6.
|
|
@@ -513,26 +513,6 @@ describe Mongoid::Document do
|
|
|
513
513
|
expect(church.as_json.keys.sort).to eq(%w(_id location name))
|
|
514
514
|
end
|
|
515
515
|
|
|
516
|
-
context 'deprecation' do
|
|
517
|
-
let(:church) do
|
|
518
|
-
Church.create!(name: 'St. Basil')
|
|
519
|
-
end
|
|
520
|
-
|
|
521
|
-
let(:message) do
|
|
522
|
-
'#as_json :compact option is deprecated. Please call #compact on the returned Hash object instead.'
|
|
523
|
-
end
|
|
524
|
-
|
|
525
|
-
it 'logs a deprecation warning when :compact is given' do
|
|
526
|
-
expect_any_instance_of(Logger).to receive(:warn).with(message)
|
|
527
|
-
church.as_json(compact: true)
|
|
528
|
-
end
|
|
529
|
-
|
|
530
|
-
it 'does not log a deprecation warning when :compact is not given' do
|
|
531
|
-
expect_any_instance_of(Logger).to_not receive(:warn).with(message)
|
|
532
|
-
church.as_json
|
|
533
|
-
end
|
|
534
|
-
end
|
|
535
|
-
|
|
536
516
|
context 'there is a nil valued attribute' do
|
|
537
517
|
let(:church) do
|
|
538
518
|
Church.create!(name: 'St. Basil')
|
|
@@ -944,7 +924,7 @@ describe Mongoid::Document do
|
|
|
944
924
|
end
|
|
945
925
|
|
|
946
926
|
context "when no embedded documents are present" do
|
|
947
|
-
context "when using the default discriminator key" do
|
|
927
|
+
context "when using the default discriminator key" do
|
|
948
928
|
let(:person) do
|
|
949
929
|
manager.becomes(Person)
|
|
950
930
|
end
|
|
@@ -968,12 +948,12 @@ describe Mongoid::Document do
|
|
|
968
948
|
end
|
|
969
949
|
end
|
|
970
950
|
|
|
971
|
-
context "when using a custom discriminator key" do
|
|
972
|
-
before do
|
|
951
|
+
context "when using a custom discriminator key" do
|
|
952
|
+
before do
|
|
973
953
|
Person.discriminator_key = "dkey"
|
|
974
954
|
end
|
|
975
955
|
|
|
976
|
-
after do
|
|
956
|
+
after do
|
|
977
957
|
Person.discriminator_key = nil
|
|
978
958
|
end
|
|
979
959
|
|
|
@@ -982,13 +962,13 @@ describe Mongoid::Document do
|
|
|
982
962
|
end
|
|
983
963
|
end
|
|
984
964
|
|
|
985
|
-
context "when using a custom discriminator key and discriminator value" do
|
|
986
|
-
before do
|
|
965
|
+
context "when using a custom discriminator key and discriminator value" do
|
|
966
|
+
before do
|
|
987
967
|
Person.discriminator_key = "dkey"
|
|
988
968
|
Person.discriminator_value = "dvalue"
|
|
989
969
|
end
|
|
990
970
|
|
|
991
|
-
after do
|
|
971
|
+
after do
|
|
992
972
|
Person.discriminator_key = nil
|
|
993
973
|
Person.discriminator_value = nil
|
|
994
974
|
end
|
|
@@ -13,7 +13,7 @@ describe Mongoid::Errors::DeleteRestriction do
|
|
|
13
13
|
|
|
14
14
|
it "contains the problem in the message" do
|
|
15
15
|
expect(error.message).to include(
|
|
16
|
-
"Cannot
|
|
16
|
+
"Cannot destroy Person because of dependent 'drugs'."
|
|
17
17
|
)
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -10,26 +10,14 @@ describe Mongoid::Errors::MongoidError do
|
|
|
10
10
|
let(:options) { {} }
|
|
11
11
|
|
|
12
12
|
before do
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
and_return(name)
|
|
22
|
-
end
|
|
23
|
-
else
|
|
24
|
-
{"message_title" => "message", "summary_title" => "summary", "resolution_title" => "resolution"}.each do |key, name|
|
|
25
|
-
expect(::I18n).to receive(:translate).with("mongoid.errors.messages.#{key}", {}).and_return(name)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
["message", "summary", "resolution"].each do |name|
|
|
29
|
-
expect(::I18n).to receive(:translate).
|
|
30
|
-
with("mongoid.errors.messages.#{key}.#{name}", {}).
|
|
31
|
-
and_return(name)
|
|
32
|
-
end
|
|
13
|
+
{"message_title" => "message", "summary_title" => "summary", "resolution_title" => "resolution"}.each do |key, name|
|
|
14
|
+
expect(::I18n).to receive(:translate).with("mongoid.errors.messages.#{key}", {}).and_return(name)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
["message", "summary", "resolution"].each do |name|
|
|
18
|
+
expect(::I18n).to receive(:translate).
|
|
19
|
+
with("mongoid.errors.messages.#{key}.#{name}", {}).
|
|
20
|
+
and_return(name)
|
|
33
21
|
end
|
|
34
22
|
|
|
35
23
|
error.compose_message(key, options)
|
|
@@ -158,16 +158,16 @@ describe Mongoid::Extensions::String do
|
|
|
158
158
|
Time.now.utc_offset
|
|
159
159
|
end
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000").in_time_zone - utc_offset }
|
|
161
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
|
166
162
|
|
|
167
163
|
let(:mongoized) do
|
|
168
164
|
string.__mongoize_time__
|
|
169
165
|
end
|
|
170
166
|
|
|
167
|
+
it 'test operates in multiple time zones' do
|
|
168
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
171
|
it_behaves_like 'mongoizes to Time'
|
|
172
172
|
it_behaves_like 'maintains precision when mongoized'
|
|
173
173
|
end
|
|
@@ -448,7 +448,7 @@ describe Mongoid::Fields::Localized do
|
|
|
448
448
|
context "when the value is false" do
|
|
449
449
|
|
|
450
450
|
let(:field) do
|
|
451
|
-
described_class.new(:boolean_value, localize: true, type: Boolean)
|
|
451
|
+
described_class.new(:boolean_value, localize: true, type: Mongoid::Boolean)
|
|
452
452
|
end
|
|
453
453
|
|
|
454
454
|
let(:value) do
|
|
@@ -463,7 +463,7 @@ describe Mongoid::Fields::Localized do
|
|
|
463
463
|
context "when the value is true" do
|
|
464
464
|
|
|
465
465
|
let(:field) do
|
|
466
|
-
described_class.new(:boolean_value, localize: true, type: Boolean)
|
|
466
|
+
described_class.new(:boolean_value, localize: true, type: Mongoid::Boolean)
|
|
467
467
|
end
|
|
468
468
|
|
|
469
469
|
let(:value) do
|
|
@@ -491,7 +491,7 @@ describe Mongoid::Fields::Localized do
|
|
|
491
491
|
end
|
|
492
492
|
|
|
493
493
|
let(:field) do
|
|
494
|
-
described_class.new(:boolean_value, localize: true, type: Boolean)
|
|
494
|
+
described_class.new(:boolean_value, localize: true, type: Mongoid::Boolean)
|
|
495
495
|
end
|
|
496
496
|
|
|
497
497
|
let(:value) do
|
|
@@ -510,7 +510,7 @@ describe Mongoid::Fields::Localized do
|
|
|
510
510
|
end
|
|
511
511
|
|
|
512
512
|
let(:field) do
|
|
513
|
-
described_class.new(:boolean_value, localize: true, type: Boolean)
|
|
513
|
+
described_class.new(:boolean_value, localize: true, type: Mongoid::Boolean)
|
|
514
514
|
end
|
|
515
515
|
|
|
516
516
|
let(:value) do
|
data/spec/mongoid/fields_spec.rb
CHANGED
|
@@ -322,7 +322,7 @@ describe Mongoid::Fields do
|
|
|
322
322
|
end
|
|
323
323
|
|
|
324
324
|
it "converts to Mongoid::Boolean" do
|
|
325
|
-
expect(klass.field(:test, type: Boolean).type).to be(Mongoid::Boolean)
|
|
325
|
+
expect(klass.field(:test, type: Mongoid::Boolean).type).to be(Mongoid::Boolean)
|
|
326
326
|
end
|
|
327
327
|
end
|
|
328
328
|
|
|
@@ -404,7 +404,7 @@ describe Mongoid::Fields do
|
|
|
404
404
|
context "when the options are all standard" do
|
|
405
405
|
|
|
406
406
|
before do
|
|
407
|
-
Band.field :acceptable, type: Boolean
|
|
407
|
+
Band.field :acceptable, type: Mongoid::Boolean
|
|
408
408
|
end
|
|
409
409
|
|
|
410
410
|
after do
|
|
@@ -419,7 +419,7 @@ describe Mongoid::Fields do
|
|
|
419
419
|
context "when a custom option is provided" do
|
|
420
420
|
|
|
421
421
|
before do
|
|
422
|
-
Band.field :acceptable, type: Boolean, custom: true
|
|
422
|
+
Band.field :acceptable, type: Mongoid::Boolean, custom: true
|
|
423
423
|
end
|
|
424
424
|
|
|
425
425
|
it "adds the field to the model" do
|
|
@@ -990,7 +990,7 @@ describe Mongoid::Fields do
|
|
|
990
990
|
end
|
|
991
991
|
|
|
992
992
|
before do
|
|
993
|
-
Person.field :aliased, as: :alias, type: Boolean, overwrite: true
|
|
993
|
+
Person.field :aliased, as: :alias, type: Mongoid::Boolean, overwrite: true
|
|
994
994
|
end
|
|
995
995
|
|
|
996
996
|
it "uses the alias to write the attribute" do
|
|
@@ -33,18 +33,18 @@ describe Mongoid::Inspectable do
|
|
|
33
33
|
expect(inspected).to include("t(test):")
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
it "displays the default discriminator key" do
|
|
36
|
+
it "displays the default discriminator key" do
|
|
37
37
|
expect(inspected).to include(%q,_type: "Person",)
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
context "when using a custom discriminator key" do
|
|
42
42
|
|
|
43
|
-
before do
|
|
43
|
+
before do
|
|
44
44
|
Person.discriminator_key = "dkey"
|
|
45
45
|
end
|
|
46
46
|
|
|
47
|
-
after do
|
|
47
|
+
after do
|
|
48
48
|
Person.discriminator_key = nil
|
|
49
49
|
end
|
|
50
50
|
|
|
@@ -56,7 +56,7 @@ describe Mongoid::Inspectable do
|
|
|
56
56
|
person.inspect
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
it "displays the new discriminator key" do
|
|
59
|
+
it "displays the new discriminator key" do
|
|
60
60
|
expect(inspected).to include(%q,dkey: "Person",)
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -75,5 +75,13 @@ describe Mongoid::Inspectable do
|
|
|
75
75
|
expect(inspected).to include(%q,some_attribute: "foo",)
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
|
+
|
|
79
|
+
context 'when id is unaliased' do
|
|
80
|
+
let(:shirt) { Shirt.new(id: 1, _id: 2) }
|
|
81
|
+
|
|
82
|
+
it 'shows the correct _id and id values' do
|
|
83
|
+
shirt.inspect.should == "#<Shirt _id: 2, color: nil, id: \"1\">"
|
|
84
|
+
end
|
|
85
|
+
end
|
|
78
86
|
end
|
|
79
87
|
end
|
|
@@ -8,7 +8,7 @@ describe Mongoid::Persistable::Deletable do
|
|
|
8
8
|
describe "#delete" do
|
|
9
9
|
|
|
10
10
|
let!(:person) do
|
|
11
|
-
Person.create
|
|
11
|
+
Person.create!
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
context "when deleting a readonly document" do
|
|
@@ -24,6 +24,20 @@ describe Mongoid::Persistable::Deletable do
|
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
+
context 'when deleting a document that was not saved' do
|
|
28
|
+
let(:unsaved_person) { Person.new(id: person.id) }
|
|
29
|
+
|
|
30
|
+
before do
|
|
31
|
+
unsaved_person.delete
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it 'deletes the matching document from the database' do
|
|
35
|
+
lambda do
|
|
36
|
+
person.reload
|
|
37
|
+
end.should raise_error(Mongoid::Errors::DocumentNotFound)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
27
41
|
context "when removing a root document" do
|
|
28
42
|
|
|
29
43
|
let!(:deleted) do
|
|
@@ -259,6 +273,86 @@ describe Mongoid::Persistable::Deletable do
|
|
|
259
273
|
expect(Browser.count).to eq(1)
|
|
260
274
|
end
|
|
261
275
|
end
|
|
276
|
+
|
|
277
|
+
context 'when there are dependent documents' do
|
|
278
|
+
context 'has_one' do
|
|
279
|
+
|
|
280
|
+
context 'dependent: :destroy' do
|
|
281
|
+
let!(:parent) do
|
|
282
|
+
Hole.create!(bolt: Bolt.create!)
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
it 'does not destroy dependent documents' do
|
|
286
|
+
Bolt.count.should == 1
|
|
287
|
+
parent.delete
|
|
288
|
+
Bolt.count.should == 1
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
context 'dependent: :delete_all' do
|
|
293
|
+
let!(:parent) do
|
|
294
|
+
Hole.create!(threadlocker: Threadlocker.create!)
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
it 'does not destroy dependent documents' do
|
|
298
|
+
Threadlocker.count.should == 1
|
|
299
|
+
parent.delete
|
|
300
|
+
Threadlocker.count.should == 1
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
context 'dependent: :restrict_with_exception' do
|
|
305
|
+
let!(:parent) do
|
|
306
|
+
Hole.create!(sealer: Sealer.create!)
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
it 'does not destroy dependent documents' do
|
|
310
|
+
Sealer.count.should == 1
|
|
311
|
+
parent.delete
|
|
312
|
+
Sealer.count.should == 1
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
context 'has_many' do
|
|
318
|
+
|
|
319
|
+
context 'dependent: :destroy' do
|
|
320
|
+
let!(:parent) do
|
|
321
|
+
Hole.create!(nuts: [Nut.create!])
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
it 'does not destroy dependent documents' do
|
|
325
|
+
Nut.count.should == 1
|
|
326
|
+
parent.delete
|
|
327
|
+
Nut.count.should == 1
|
|
328
|
+
end
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
context 'dependent: :delete_all' do
|
|
332
|
+
let!(:parent) do
|
|
333
|
+
Hole.create!(washers: [Washer.create!])
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
it 'does not destroy dependent documents' do
|
|
337
|
+
Washer.count.should == 1
|
|
338
|
+
parent.delete
|
|
339
|
+
Washer.count.should == 1
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
context 'dependent: :restrict_with_exception' do
|
|
344
|
+
let!(:parent) do
|
|
345
|
+
Hole.create!(spacers: [Spacer.create!])
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
it 'does not destroy dependent documents' do
|
|
349
|
+
Spacer.count.should == 1
|
|
350
|
+
parent.delete
|
|
351
|
+
Spacer.count.should == 1
|
|
352
|
+
end
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
end
|
|
262
356
|
end
|
|
263
357
|
|
|
264
358
|
describe "#delete_all" do
|
|
@@ -337,5 +431,85 @@ describe Mongoid::Persistable::Deletable do
|
|
|
337
431
|
end
|
|
338
432
|
end
|
|
339
433
|
end
|
|
434
|
+
|
|
435
|
+
context 'when there are dependent documents' do
|
|
436
|
+
context 'has_one' do
|
|
437
|
+
|
|
438
|
+
context 'dependent: :destroy' do
|
|
439
|
+
let!(:parent) do
|
|
440
|
+
Hole.create!(bolt: Bolt.create!)
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
it 'does not destroy dependent documents' do
|
|
444
|
+
Bolt.count.should == 1
|
|
445
|
+
Hole.delete_all
|
|
446
|
+
Bolt.count.should == 1
|
|
447
|
+
end
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
context 'dependent: :delete_all' do
|
|
451
|
+
let!(:parent) do
|
|
452
|
+
Hole.create!(threadlocker: Threadlocker.create!)
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
it 'does not destroy dependent documents' do
|
|
456
|
+
Threadlocker.count.should == 1
|
|
457
|
+
Hole.delete_all
|
|
458
|
+
Threadlocker.count.should == 1
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
context 'dependent: :restrict_with_exception' do
|
|
463
|
+
let!(:parent) do
|
|
464
|
+
Hole.create!(sealer: Sealer.create!)
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
it 'does not destroy dependent documents' do
|
|
468
|
+
Sealer.count.should == 1
|
|
469
|
+
Hole.delete_all
|
|
470
|
+
Sealer.count.should == 1
|
|
471
|
+
end
|
|
472
|
+
end
|
|
473
|
+
end
|
|
474
|
+
|
|
475
|
+
context 'has_many' do
|
|
476
|
+
|
|
477
|
+
context 'dependent: :destroy' do
|
|
478
|
+
let!(:parent) do
|
|
479
|
+
Hole.create!(nuts: [Nut.create!])
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
it 'does not destroy dependent documents' do
|
|
483
|
+
Nut.count.should == 1
|
|
484
|
+
Hole.delete_all
|
|
485
|
+
Nut.count.should == 1
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
context 'dependent: :delete_all' do
|
|
490
|
+
let!(:parent) do
|
|
491
|
+
Hole.create!(washers: [Washer.create!])
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
it 'does not destroy dependent documents' do
|
|
495
|
+
Washer.count.should == 1
|
|
496
|
+
Hole.delete_all
|
|
497
|
+
Washer.count.should == 1
|
|
498
|
+
end
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
context 'dependent: :restrict_with_exception' do
|
|
502
|
+
let!(:parent) do
|
|
503
|
+
Hole.create!(spacers: [Spacer.create!])
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
it 'does not destroy dependent documents' do
|
|
507
|
+
Spacer.count.should == 1
|
|
508
|
+
Hole.delete_all
|
|
509
|
+
Spacer.count.should == 1
|
|
510
|
+
end
|
|
511
|
+
end
|
|
512
|
+
end
|
|
513
|
+
end
|
|
340
514
|
end
|
|
341
515
|
end
|