mongoid 5.1.3 → 5.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b4fed172bb6af11ba2b149b79f186088e927654b
4
- data.tar.gz: 5a773064e7b4e5b53b299763cc224376e1c2b982
3
+ metadata.gz: 79c4a036b0cdf460779fe1d838cd9c47fefa997a
4
+ data.tar.gz: f9eccd20ec1cf43dc5696e9f28b66ac1511b92cb
5
5
  SHA512:
6
- metadata.gz: c0acac4c15262c18ada59b3297588f8ad173f9a3729ecb8b2bbffdb43276549c7e9f7ea94856141c7dde36c028964373d3a27e7bba21990fb8958f6051931b0a
7
- data.tar.gz: 70a79115a1c45102070577281ad7664b89a34a284c14bb08a6b79af4bd385d544c4f9bce177b9babedfb13734dcfd480e1c2ca7e9676b5b405a77ed21e588788
6
+ metadata.gz: 373ef0d42a812e2bd55b9f0c84fb4c40ef0720821127ad615b9fe1f30a15273dbe68126bb0e5c4981af9fbb30f90c51ba0dfba2dfae7738db75e3d128398acee
7
+ data.tar.gz: ea57593ae912660e765caaa3effce3b3355944fb77859ad8d52166b8f6ab8a6b013f2d01380ebb513ec67b4606040f2cd912894459558c8f7bc305d50349d673
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -259,7 +259,7 @@ module Mongoid
259
259
  if field && field.localized?
260
260
  selection.key?("#{name}.#{::I18n.locale}")
261
261
  else
262
- selection.keys.collect { |k| k.partition('.').first }.include?(name)
262
+ selection.key?(name) || selection.keys.collect { |k| k.partition('.').first }.include?(name)
263
263
  end
264
264
  end
265
265
 
@@ -294,8 +294,7 @@ module Mongoid
294
294
  if block_given?
295
295
  super(&block)
296
296
  else
297
- field = field.to_sym
298
- criteria.only(field).map(&field.to_proc)
297
+ criteria.pluck(field)
299
298
  end
300
299
  end
301
300
 
@@ -45,7 +45,7 @@ module Mongoid
45
45
  # @since 3.0.22
46
46
  def clone_document
47
47
  attrs = as_document.__deep_copy__
48
- process_localized_attributes(attrs)
48
+ process_localized_attributes(self, attrs)
49
49
  attrs
50
50
  end
51
51
 
@@ -60,12 +60,23 @@ module Mongoid
60
60
  # @param [ Hash ] attrs The attributes.
61
61
  #
62
62
  # @since 3.0.20
63
- def process_localized_attributes(attrs)
64
- localized_fields.keys.each do |name|
63
+ def process_localized_attributes(klass, attrs)
64
+ klass.localized_fields.keys.each do |name|
65
65
  if value = attrs.delete(name)
66
66
  attrs["#{name}_translations"] = value
67
67
  end
68
68
  end
69
+ klass.embedded_relations.each do |_, metadata|
70
+ next unless attrs.present? && attrs[metadata.key].present?
71
+
72
+ if metadata.macro == :embeds_many
73
+ attrs[metadata.key].each do |attr|
74
+ process_localized_attributes(metadata.klass, attr)
75
+ end
76
+ else
77
+ process_localized_attributes(metadata.klass, attrs[metadata.key])
78
+ end
79
+ end
69
80
  end
70
81
  end
71
82
  end
@@ -77,10 +77,10 @@ module Mongoid
77
77
  # @since 3.0.0
78
78
  def lookup(object)
79
79
  locale = ::I18n.locale
80
- if fallbacks? && ::I18n.respond_to?(:fallbacks)
80
+ if value = object[locale.to_s]
81
+ value
82
+ elsif fallbacks? && ::I18n.respond_to?(:fallbacks)
81
83
  object[::I18n.fallbacks[locale].map(&:to_s).find{ |loc| object.has_key?(loc) }]
82
- else
83
- object[locale.to_s]
84
84
  end
85
85
  end
86
86
  end
@@ -23,9 +23,11 @@ module Mongoid
23
23
  prepare_atomic_operation do |ops|
24
24
  process_atomic_operations(setters) do |field, value|
25
25
  process_attribute(field.to_s, value)
26
- ops[atomic_attribute_name(field)] = attributes[field]
26
+ unless relations.include?(field.to_s)
27
+ ops[atomic_attribute_name(field)] = attributes[field]
28
+ end
27
29
  end
28
- { "$set" => ops }
30
+ { "$set" => ops } unless ops.empty?
29
31
  end
30
32
  end
31
33
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module Mongoid
3
- VERSION = "5.1.3"
3
+ VERSION = "5.1.4"
4
4
  end
@@ -38,6 +38,42 @@ describe Mongoid::Attributes do
38
38
  it "does not raise an error" do
39
39
  expect(from_db.desc).to eq("test")
40
40
  end
41
+
42
+ context "accessing via []" do
43
+
44
+ it "does not raise an error" do
45
+ expect(from_db["desc"]).to eq("en" => "test")
46
+ end
47
+ end
48
+
49
+ context "when calling only on a sub-document" do
50
+
51
+ let(:title) {"Executive"}
52
+ let(:city) {"NYC"}
53
+ let!(:agent) do
54
+ agent = Agent.new(:title => title)
55
+ agent.build_address(:city => city)
56
+ agent.save()
57
+ agent
58
+ end
59
+ let(:from_db) do
60
+ Agent.only(:title, "address.city").first
61
+ end
62
+
63
+ context "when the field is in the only" do
64
+
65
+ it "does not raise an error" do
66
+ expect(from_db.address.city).to eq(city)
67
+ end
68
+ end
69
+
70
+ context "accessing via []" do
71
+
72
+ it "does not raise an error" do
73
+ expect(from_db["address.city"]).to eq(city)
74
+ end
75
+ end
76
+ end
41
77
  end
42
78
 
43
79
  context 'when the attribute is a hash field' do
@@ -86,6 +122,15 @@ describe Mongoid::Attributes do
86
122
  from_db.title
87
123
  }.to raise_error(ActiveModel::MissingAttributeError)
88
124
  end
125
+
126
+ context "accessing via []" do
127
+
128
+ it "raises an error" do
129
+ expect {
130
+ from_db["title"]
131
+ }.to raise_error(ActiveModel::MissingAttributeError)
132
+ end
133
+ end
89
134
  end
90
135
 
91
136
  context "when excluding with without" do
@@ -1003,11 +1003,6 @@ describe Mongoid::Contextual::Mongo do
1003
1003
 
1004
1004
  context "when passed the symbol field name" do
1005
1005
 
1006
- it "limits query to that field" do
1007
- expect(criteria).to receive(:only).with(:name).and_call_original
1008
- context.map(:name)
1009
- end
1010
-
1011
1006
  it "performs mapping" do
1012
1007
  expect(context.map(:name)).to eq ["Depeche Mode", "New Order"]
1013
1008
  end
@@ -20,7 +20,7 @@ describe Mongoid::Copyable do
20
20
  end
21
21
 
22
22
  let!(:address) do
23
- person.addresses.build(street: "Bond")
23
+ person.addresses.build(street: "Bond", name: "Bond")
24
24
  end
25
25
 
26
26
  let!(:name) do
@@ -93,6 +93,7 @@ describe Mongoid::Copyable do
93
93
  I18n.enforce_available_locales = false
94
94
  I18n.locale = 'pt_BR'
95
95
  person.desc = "descrição"
96
+ person.addresses.first.name = "descrição"
96
97
  person.save
97
98
  end
98
99
 
@@ -122,6 +123,16 @@ describe Mongoid::Copyable do
122
123
  I18n.locale = :fr
123
124
  expect(copy.desc).to be_nil
124
125
  end
126
+
127
+ it 'sets embedded translations' do
128
+ I18n.locale = 'pt_BR'
129
+ expect(copy.addresses.first.name).to eq("descrição")
130
+ end
131
+
132
+ it 'sets embedded english version' do
133
+ I18n.locale = :en
134
+ expect(copy.addresses.first.name).to eq("Bond")
135
+ end
125
136
  end
126
137
 
127
138
  context "when cloning a loaded document" do
@@ -174,6 +174,21 @@ describe Mongoid::Fields::Localized do
174
174
  expect(value).to be_nil
175
175
  end
176
176
  end
177
+
178
+ context 'when fallbacks are empty' do
179
+
180
+ before do
181
+ ::I18n.fallbacks[:de] = [ ]
182
+ end
183
+
184
+ let(:value) do
185
+ field.demongoize({ 'de' => 'testen' })
186
+ end
187
+
188
+ it "returns the value" do
189
+ expect(value).to eq('testen')
190
+ end
191
+ end
177
192
  end
178
193
  end
179
194
  end
@@ -134,6 +134,35 @@ describe Mongoid::Persistable::Settable do
134
134
 
135
135
  it_behaves_like "a settable embedded document"
136
136
  end
137
+
138
+ context 'when the field is a relation' do
139
+
140
+ let(:person) do
141
+ Person.create
142
+ end
143
+
144
+ let(:pet) do
145
+ Animal.new(name: "somepet")
146
+ end
147
+
148
+ let(:home_phone) do
149
+ Phone.new(number: "555-555-5555")
150
+ end
151
+
152
+ let(:office_phone) do
153
+ Phone.new(number: "666-666-6666")
154
+ end
155
+
156
+ it "should persist changes of embeds_one field" do
157
+ person.set(pet: pet)
158
+ expect(person.reload.pet).to eq(pet)
159
+ end
160
+
161
+ it "should persist changes of embeds_many fields" do
162
+ person.set({ phone_numbers: [home_phone, office_phone].map { |p| p.as_document} })
163
+ expect(person.reload.phone_numbers).to eq([home_phone, office_phone])
164
+ end
165
+ end
137
166
  end
138
167
  end
139
168
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.3
4
+ version: 5.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -30,7 +30,7 @@ cert_chain:
30
30
  ZIvvwAhgCjVW5QCi2I1noxXLmtZ3XDawWu8kaGtu8giHXcwL3941m8hvFZ/Wr9Yi
31
31
  JvcXJt2a4/JvwnIs2hmKuyfhZmB9HEE5wQQaCMnnC14=
32
32
  -----END CERTIFICATE-----
33
- date: 2016-04-21 00:00:00.000000000 Z
33
+ date: 2016-08-12 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: activemodel
@@ -811,7 +811,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
811
811
  version: 1.3.6
812
812
  requirements: []
813
813
  rubyforge_project: mongoid
814
- rubygems_version: 2.4.5.1
814
+ rubygems_version: 2.5.1
815
815
  signing_key:
816
816
  specification_version: 4
817
817
  summary: Elegant Persistence in Ruby for MongoDB.
metadata.gz.sig CHANGED
Binary file