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 +4 -4
- data/freddy.gemspec +1 -1
- data/lib/freddy/payload.rb +16 -2
- data/spec/freddy/payload_spec.rb +54 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7a6fe168fade15285ff62a57414a7f67efb3534
|
4
|
+
data.tar.gz: 47c18f83c774fa3f37841f231ab8ec78c59aa3cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00fe0fe90d0026846bb90787b9bc7d4caf7f778d975b28ab65d1fb8ed79df4b01d03a76404e6c501f131ac88d9d7ecc71c8ce62698d3fe2cf10dce5876a5d9d2
|
7
|
+
data.tar.gz: 36e5b3b91f48020d01ff263cb7ddf0344c2a9523c4a29b458f5fc801a530a274eeb82401831ae7a36a0634cb8a8e8eba4315fb5a3d80f97af3da3bd3ddbcf2f1
|
data/freddy.gemspec
CHANGED
data/lib/freddy/payload.rb
CHANGED
@@ -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.
|
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
|