protip 0.20.5 → 0.20.6

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: 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