protip 0.20.5 → 0.20.6

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: cdaba74e3426217913cecb429128773ec0f99a11
4
- data.tar.gz: f6b4e4a12759c456d03cc03b46370e50da93936b
3
+ metadata.gz: aefcea9ce37ffdc3bd5efcbea6aee568e3118715
4
+ data.tar.gz: 278db3d2ee173853e20822fb91ccb3c5b1640ae0
5
5
  SHA512:
6
- metadata.gz: 0e52cd22f6aa297ccce908a0493f6c3bc579c71f65c2324e1254d672aef4f1e14af34c098e473c7320d45a237e83eb6035bf6c8200bb4799cf513ee3fe63f22e
7
- data.tar.gz: 84212878c954c59a44d1eeca73c554138848da69ce075187b170e7630a3294380ba15cd03b447193d85f14026f47b02492f75ccee6712506fe6dd460dfe2aa9e
6
+ metadata.gz: 641d74e159b5c2faf1ee52e4c8bdf6de21a4ad4ab4c5da88c2b8945bb7c82dab79f6b511e85204dede81357be84399b3f3358e1865242d83ad10059723bca4cd
7
+ data.tar.gz: 44b654905cf19cc006452765fc5d1920841710bbc48c1a93c6c89525d8bdddf4edfd09a905b384b1c7ebc2a32bbc4898c3bf1cacb2c08281255a862cedbb8e45
@@ -59,17 +59,29 @@ module Protip
59
59
  }
60
60
 
61
61
  ## Standard wrappers
62
- %w(Int64 Int32 UInt64 UInt32 Double Float String Bytes).each do |type|
62
+ {
63
+ Int64: :to_i,
64
+ Int32: :to_i,
65
+ UInt64: :to_i,
66
+ UInt32: :to_i,
67
+ Double: :to_f,
68
+ Float: :to_f,
69
+ String: :to_s,
70
+ Bytes: nil,
71
+ }.each do |type, conversion|
63
72
  @conversions["google.protobuf.#{type}Value"] = {
64
73
  to_object: ->(message, field) { message.value },
65
74
  to_message: lambda do |value, message_class, field|
66
- message_class.new value: value
75
+ message_class.new value: (conversion ? value.public_send(conversion) : value)
67
76
  end
68
77
  }
69
78
  @conversions["protip.messages.Repeated#{type}"] = {
70
79
  to_object: ->(message, field) { message.values.to_a.freeze },
71
80
  to_message: lambda do |value, message_class, field|
72
- message_class.new values: (value.is_a?(Enumerable) ? value : [value])
81
+ values = (value.is_a?(Enumerable) ? value : [value]).map do |v|
82
+ conversion ? v.public_send(conversion) : v
83
+ end
84
+ message_class.new values: values
73
85
  end
74
86
  }
75
87
  end
@@ -228,6 +228,28 @@ describe Protip::StandardConverter do
228
228
  end
229
229
  end
230
230
 
231
+ it 'converts wrapper types when set as a non-native type' do
232
+ # Convert from string
233
+ {
234
+ integer_value => integer_types,
235
+ float_value => float_types,
236
+ bool_value => bool_types,
237
+ }.each do |value, message_types|
238
+ message_types.each do |message_class|
239
+ assert_equal message_class.new(value: value), converter.to_message(value.to_s, message_class, field)
240
+ end
241
+ end
242
+
243
+ # Convert from integer
244
+ {
245
+ '4' => string_types,
246
+ }.each do |value, message_types|
247
+ message_types.each do |message_class|
248
+ assert_equal message_class.new(value: value), converter.to_message(value.to_i, message_class, field)
249
+ end
250
+ end
251
+ end
252
+
231
253
  it 'converts repeated types when set with a scalar value' do
232
254
  {
233
255
  integer_value => repeated_integer_types,
@@ -242,6 +264,29 @@ describe Protip::StandardConverter do
242
264
  end
243
265
  end
244
266
 
267
+ it 'converts repeated types when set with a non-native scalar type' do
268
+ # Convert from string
269
+ {
270
+ integer_value => repeated_integer_types,
271
+ float_value => repeated_float_types,
272
+ bool_value => repeated_bool_types,
273
+ }.each do |value, message_types|
274
+ message_types.each do |message_class|
275
+ assert_equal message_class.new(values: [value]), converter.to_message(value.to_s, message_class, field)
276
+ end
277
+ end
278
+
279
+ # Convert from integer
280
+ {
281
+ '4' => repeated_string_types,
282
+ }.each do |value, message_types|
283
+ message_types.each do |message_class|
284
+ assert_equal message_class.new(values: [value]), converter.to_message(value.to_i, message_class, field)
285
+ end
286
+ end
287
+
288
+ end
289
+
245
290
  it 'converts repeated types when set with an enumerable value' do
246
291
  {
247
292
  integer_value => repeated_integer_types,
@@ -258,6 +303,33 @@ describe Protip::StandardConverter do
258
303
  end
259
304
  end
260
305
 
306
+ it 'converts repeated types when set with a non-native enumerable type' do
307
+ # Convert from string
308
+ {
309
+ integer_value => repeated_integer_types,
310
+ float_value => repeated_float_types,
311
+ bool_value => repeated_bool_types,
312
+ }.each do |value, message_types|
313
+ message_types.each do |message_class|
314
+ assert_equal message_class.new(values: [value, value]), converter.to_message(
315
+ [value.to_s, value.to_s], message_class, field
316
+ )
317
+ end
318
+ end
319
+
320
+ # Convert from integer
321
+ {
322
+ '4' => repeated_string_types,
323
+ }.each do |value, message_types|
324
+ message_types.each do |message_class|
325
+ assert_equal message_class.new(values: [value, value]), converter.to_message(
326
+ [value.to_i, value.to_i], message_class, field
327
+ )
328
+ end
329
+ end
330
+
331
+ end
332
+
261
333
  it 'converts dates' do
262
334
  date = ::Date.new(2012, 5, 7)
263
335
  assert_equal 7, date.day # Sanity check argument order
@@ -427,4 +499,4 @@ describe Protip::StandardConverter do
427
499
 
428
500
  end
429
501
 
430
- end
502
+ 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.20.5
4
+ version: 0.20.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - AngelList
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-25 00:00:00.000000000 Z
11
+ date: 2016-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel