protip 0.30.7 → 0.30.8
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
- data/lib/protip/resource.rb +15 -1
- data/test/unit/protip/resource_test.rb +25 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b700562f8cedc2912054670d12c0c41a5ad3f84
|
4
|
+
data.tar.gz: 0d7570c79be4b391c252482d161aa10acf739fc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42fdc7f6b8a8b18128edae66d2af7d62f7e83ac7556bfd3dd4ebaabe26161daecde74932762f39da43fee776225cc66257240668bbbb16611c6c733f65ac3cfa
|
7
|
+
data.tar.gz: f58984dd3bbc99af11bee730cc577fca94e1623c1b282c17b32ea0f292b7095086835a53f544d641625af5313538d22edd331c993214dc69acc62283b3e62afa
|
data/lib/protip/resource.rb
CHANGED
@@ -302,7 +302,21 @@ module Protip
|
|
302
302
|
keys.each do |key|
|
303
303
|
old_value = old_attributes[key]
|
304
304
|
new_value = message[key]
|
305
|
-
|
305
|
+
begin
|
306
|
+
changed = !(old_value.class == new_value.class && old_value == new_value)
|
307
|
+
rescue TypeError => e
|
308
|
+
|
309
|
+
# Workaround for a protip bug when comparing messages with
|
310
|
+
# nested messages where the left side is non-nil and the
|
311
|
+
# right side is nil.
|
312
|
+
if e.message == 'wrong argument type nil (expected Message)'
|
313
|
+
changed = true
|
314
|
+
else
|
315
|
+
raise e
|
316
|
+
end
|
317
|
+
end
|
318
|
+
|
319
|
+
if changed
|
306
320
|
send "#{key}_will_change!"
|
307
321
|
end
|
308
322
|
end
|
@@ -36,6 +36,12 @@ module Protip::ResourceTest # Namespace for internal constants
|
|
36
36
|
optional :oneof_string1, :string, 12
|
37
37
|
optional :oneof_string2, :string, 13
|
38
38
|
end
|
39
|
+
|
40
|
+
optional :double_nested_message, :message, 14, 'double_nested_message'
|
41
|
+
end
|
42
|
+
|
43
|
+
add_message 'double_nested_message' do
|
44
|
+
optional :nested_message, :message, 1, 'nested_message'
|
39
45
|
end
|
40
46
|
|
41
47
|
add_message 'resource_query' do
|
@@ -57,7 +63,7 @@ module Protip::ResourceTest # Namespace for internal constants
|
|
57
63
|
end
|
58
64
|
pool
|
59
65
|
end
|
60
|
-
%w(nested_message resource_message resource_query action_query action_response).each do |name|
|
66
|
+
%w(nested_message resource_message resource_query action_query action_response double_nested_message).each do |name|
|
61
67
|
let(:"#{name}_class") do
|
62
68
|
pool.lookup(name).msgclass
|
63
69
|
end
|
@@ -563,6 +569,10 @@ module Protip::ResourceTest # Namespace for internal constants
|
|
563
569
|
transformer.stubs(:to_object).
|
564
570
|
with(nested_message_class.new(number: 62), nested_message_field).
|
565
571
|
returns(72)
|
572
|
+
|
573
|
+
transformer.stubs(:to_object).
|
574
|
+
with(double_nested_message_class.any_instance, anything).
|
575
|
+
returns(100)
|
566
576
|
end
|
567
577
|
it 'marks messages as changed if they are changed as Ruby values' do
|
568
578
|
setter.set nested_message: 42
|
@@ -591,6 +601,20 @@ module Protip::ResourceTest # Namespace for internal constants
|
|
591
601
|
refute resource.changed?, 'resource was marked as changed'
|
592
602
|
refute resource.string_changed?, 'field was marked as changed'
|
593
603
|
end
|
604
|
+
|
605
|
+
# Test our workaround for a protobuf bug when comparing
|
606
|
+
# messages with sub-messages that are non-nil on the left,
|
607
|
+
# nil on the right.
|
608
|
+
it 'recognizes when double-nested messages are changed to nil values' do
|
609
|
+
# Initially the field should have its nested message set.
|
610
|
+
resource.message.double_nested_message = double_nested_message_class.new(
|
611
|
+
nested_message: nested_message_class.new(number: 10)
|
612
|
+
)
|
613
|
+
|
614
|
+
# Then give it a field with a nil nested message to
|
615
|
+
# trigger the protobuf bug.
|
616
|
+
setter.set double_nested_message: double_nested_message_class.new
|
617
|
+
end
|
594
618
|
end
|
595
619
|
end
|
596
620
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.30.
|
4
|
+
version: 0.30.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- AngelList
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -266,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
266
|
version: '0'
|
267
267
|
requirements: []
|
268
268
|
rubyforge_project:
|
269
|
-
rubygems_version: 2.
|
269
|
+
rubygems_version: 2.5.1
|
270
270
|
signing_key:
|
271
271
|
specification_version: 4
|
272
272
|
summary: Resources backed by protobuf messages
|