freddy-jruby 0.7.2 → 1.0.0

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: 4d8614a6a2bc844445d26bf035b0ecdbd5c2e12d
4
- data.tar.gz: c64f8114a61bd258bef376c4927110b338041d44
3
+ metadata.gz: b7a6fe168fade15285ff62a57414a7f67efb3534
4
+ data.tar.gz: 47c18f83c774fa3f37841f231ab8ec78c59aa3cb
5
5
  SHA512:
6
- metadata.gz: 648e9031be023cab9fdce260b27925331444c8ca35d4dd8321d06df494f3f0f5730f0df68b54e1f9fcf667691ef311c669260da35b99bab2f9d408aa885bba67
7
- data.tar.gz: a1d06a5f8361ea94c18b698a035bf643bc9858b4541de331bad0a670b2f17051c458bb1383d877c8afbcabe2a78c9f0502c9d279a7dc7b080c7113268c816d68
6
+ metadata.gz: 00fe0fe90d0026846bb90787b9bc7d4caf7f778d975b28ab65d1fb8ed79df4b01d03a76404e6c501f131ac88d9d7ecc71c8ce62698d3fe2cf10dce5876a5d9d2
7
+ data.tar.gz: 36e5b3b91f48020d01ff263cb7ddf0344c2a9523c4a29b458f5fc801a530a274eeb82401831ae7a36a0634cb8a8e8eba4315fb5a3d80f97af3da3bd3ddbcf2f1
data/freddy.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  else
9
9
  spec.name = "freddy"
10
10
  end
11
- spec.version = '0.7.2'
11
+ spec.version = '1.0.0'
12
12
  spec.authors = ["Salemove TechMovers"]
13
13
  spec.email = ["techmovers@salemove.com"]
14
14
  spec.description = %q{Messaging API}
@@ -27,7 +27,7 @@ class Freddy
27
27
  end
28
28
 
29
29
  def self.dump(payload)
30
- Oj.dump(payload, mode: :compat)
30
+ Oj.dump(payload, mode: :compat, time_format: :xmlschema)
31
31
  end
32
32
  end
33
33
 
@@ -39,7 +39,21 @@ class Freddy
39
39
  end
40
40
 
41
41
  def self.dump(payload)
42
- JSON.dump(payload)
42
+ JSON.dump(serialize_time_objects(payload))
43
+ end
44
+
45
+ def self.serialize_time_objects(object)
46
+ if object.is_a?(Hash)
47
+ object.reduce({}) do |hash, (key, value)|
48
+ hash.merge(key => serialize_time_objects(value))
49
+ end
50
+ elsif object.is_a?(Array)
51
+ object.map(&method(:serialize_time_objects))
52
+ elsif object.is_a?(Time) || object.is_a?(Date)
53
+ object.iso8601
54
+ else
55
+ object
56
+ end
43
57
  end
44
58
  end
45
59
  end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Freddy::Payload do
4
+ describe '#dump' do
5
+ it 'serializes time objects as iso8601 format strings' do
6
+ expect(dump(time: Time.utc(2016, 1, 4, 20, 18)))
7
+ .to eq('{"time":"2016-01-04T20:18:00Z"}')
8
+ end
9
+
10
+ it 'serializes time objects in an array as iso8601 format strings' do
11
+ expect(dump(time: [Time.utc(2016, 1, 4, 20, 18)]))
12
+ .to eq('{"time":["2016-01-04T20:18:00Z"]}')
13
+ end
14
+
15
+ it 'serializes time objects in a nested hash as iso8601 format strings' do
16
+ expect(dump(x: {time: Time.utc(2016, 1, 4, 20, 18)}))
17
+ .to eq('{"x":{"time":"2016-01-04T20:18:00Z"}}')
18
+ end
19
+
20
+ it 'serializes date objects as iso8601 format strings' do
21
+ expect(dump(date: Date.new(2016, 1, 4)))
22
+ .to eq('{"date":"2016-01-04"}')
23
+ end
24
+
25
+ it 'serializes date objects in an array as iso8601 format strings' do
26
+ expect(dump(date: [Date.new(2016, 1, 4)]))
27
+ .to eq('{"date":["2016-01-04"]}')
28
+ end
29
+
30
+ it 'serializes date objects in a nested hash as iso8601 format strings' do
31
+ expect(dump(x: {date: Date.new(2016, 1, 4)}))
32
+ .to eq('{"x":{"date":"2016-01-04"}}')
33
+ end
34
+
35
+ it 'serializes datetime objects as iso8601 format strings' do
36
+ expect(dump(datetime: DateTime.new(2016, 1, 4, 20, 18)))
37
+ .to eq('{"datetime":"2016-01-04T20:18:00+00:00"}')
38
+ end
39
+
40
+ it 'serializes datetime objects in an array as iso8601 format strings' do
41
+ expect(dump(datetime: [DateTime.new(2016, 1, 4, 20, 18)]))
42
+ .to eq('{"datetime":["2016-01-04T20:18:00+00:00"]}')
43
+ end
44
+
45
+ it 'serializes datetime objects in a nested hash as iso8601 format strings' do
46
+ expect(dump(x: {datetime: DateTime.new(2016, 1, 4, 20, 18)}))
47
+ .to eq('{"x":{"datetime":"2016-01-04T20:18:00+00:00"}}')
48
+ end
49
+
50
+ def dump(payload)
51
+ described_class.dump(payload)
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: freddy-jruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Salemove TechMovers
@@ -124,6 +124,7 @@ files:
124
124
  - spec/freddy/error_response_spec.rb
125
125
  - spec/freddy/freddy_spec.rb
126
126
  - spec/freddy/message_handler_spec.rb
127
+ - spec/freddy/payload_spec.rb
127
128
  - spec/freddy/responder_handler_spec.rb
128
129
  - spec/freddy/sync_response_container_spec.rb
129
130
  - spec/integration/concurrency_spec.rb
@@ -160,6 +161,7 @@ test_files:
160
161
  - spec/freddy/error_response_spec.rb
161
162
  - spec/freddy/freddy_spec.rb
162
163
  - spec/freddy/message_handler_spec.rb
164
+ - spec/freddy/payload_spec.rb
163
165
  - spec/freddy/responder_handler_spec.rb
164
166
  - spec/freddy/sync_response_container_spec.rb
165
167
  - spec/integration/concurrency_spec.rb