virtus_model 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e85be758bb952a2fbc508008efbe0d244f5af3e2
4
- data.tar.gz: cdad84c5350c981a368abc3f1b308e2e061ceeb9
3
+ metadata.gz: b0cb3157871c8866d19ac88f068076329ee5d9c5
4
+ data.tar.gz: 68f6a26a49f767e902e335b30ef43a4cf5ef01e8
5
5
  SHA512:
6
- metadata.gz: 74bef150dbd2ab9809b3a666d0ff835050956d797f22374ce07045eb412ead50eeb981cadadea23bad4a58728035932adcc7a74141bce794a8a5ffac0072183b
7
- data.tar.gz: f00a3746229a7971a1fad82b64c030097d06f66f5e031dfa72c8448645c11b2e967a3877a850f2570e803c0854349f868c89da15ce3f2c4f560a73c2a5525968
6
+ metadata.gz: d74acfb486d3792660e01ee32423c95c7c10837c775d35e41183325c47b64a637ed712502771cad02c56ba7e6d9c48ec12c49a1d2705071d7d139ef32654cd39
7
+ data.tar.gz: 3ec66545f02ad0aba4a926d6748880a8a3e2ae9221ea0d5c466369574c58e332f89768578ce72ef25c932cd9838a5e67c75c3f3077999d7a0a6c1f25b3938be3
@@ -108,7 +108,7 @@ module VirtusModel
108
108
  self.class.attributes.reduce({}) do |result, name|
109
109
  if model.respond_to?(name)
110
110
  result[name] = model.public_send(name)
111
- elsif model.respond_to?(:[])
111
+ elsif model.respond_to?(:[]) && model.respond_to?(:key?) && model.key?(name)
112
112
  result[name] = model[name]
113
113
  end
114
114
  result
@@ -1,3 +1,3 @@
1
1
  module VirtusModel
2
- VERSION = '0.2.8'.freeze
2
+ VERSION = '0.2.9'.freeze
3
3
  end
@@ -143,8 +143,14 @@ describe VirtusModel::Base do
143
143
 
144
144
  context 'hash' do
145
145
  let(:attributes) { { name: 'test', other: 'test' } }
146
+
146
147
  it { expect(subject.attributes).to include(name: 'test') }
147
148
  it { expect(subject.attributes).not_to include(other: 'test') }
149
+
150
+ it 'does not overwrite omitted fields' do
151
+ expect(subject.assign_attributes({})).to be_a(SimpleModel)
152
+ expect(subject.attributes[:name]).to eq('test')
153
+ end
148
154
  end
149
155
 
150
156
  context 'object' do
@@ -159,9 +165,16 @@ describe VirtusModel::Base do
159
165
  context 'hash' do
160
166
  let(:attributes) { { model: model, models: [model], other: 'test' } }
161
167
  let(:model) { { name: 'test', other: 'test' } }
168
+
162
169
  it { expect(subject.attributes[:model]).to eq(SimpleModel.new(model)) }
163
170
  it { expect(subject.attributes[:models]).to eq([SimpleModel.new(model)]) }
164
171
  it { expect(subject.attributes).not_to include(other: 'test') }
172
+
173
+ it 'does not overwrite omitted fields' do
174
+ expect(subject.assign_attributes(model: nil)).to be_a(ComplexModel)
175
+ expect(subject.attributes[:model]).to be(nil)
176
+ expect(subject.attributes[:models]).to eq([SimpleModel.new(model)])
177
+ end
165
178
  end
166
179
 
167
180
  context 'object' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtus_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Derek Schaefer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-07 00:00:00.000000000 Z
11
+ date: 2017-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  version: '0'
170
170
  requirements: []
171
171
  rubyforge_project:
172
- rubygems_version: 2.5.1
172
+ rubygems_version: 2.6.13
173
173
  signing_key:
174
174
  specification_version: 4
175
175
  summary: VirtusModel = Virtus + ActiveModel