json_api_ruby 0.1.0 → 0.1.1
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/CHANGELOG.md +7 -0
- data/README.md +0 -1
- data/lib/json_api_ruby/serializer.rb +17 -13
- data/lib/json_api_ruby/version.rb +1 -1
- data/spec/json_api_ruby/serializer_spec.rb +8 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cf3164f2abf635e618957c75eea9210e2964c3e
|
4
|
+
data.tar.gz: f1927eafda56413ca744cc43ac5608344db1af55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6af9abffd2f8321a35ef837a92bcfc8da35bec3685cfda916b0559db0c152bc3e00d80a39f34a5a381736a48af28f9fa15a409e0f85052c6dd30e1dd65c44aaf
|
7
|
+
data.tar.gz: 9e1a89a1741949c212c6833df0e65aa266bfc17630eca272b56f2690a4477e655d68f36442f8d370fc2a1bd7be12cc614f1bdfe3035f1547e0b9e0ad2fd6bd7b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -11,7 +11,7 @@ module JsonApi
|
|
11
11
|
def serialize(object, options = {})
|
12
12
|
options.stringify_keys!
|
13
13
|
# assume it's a collection
|
14
|
-
if object.
|
14
|
+
if !object.nil? && object.respond_to?(:to_a)
|
15
15
|
serializer = CollectionSerializer.new(object, options)
|
16
16
|
else
|
17
17
|
serializer = Serializer.new(object, options)
|
@@ -29,17 +29,21 @@ module JsonApi
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def to_hash
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
included_data
|
40
|
-
|
32
|
+
if @object.nil?
|
33
|
+
serialized = { 'data' => nil }
|
34
|
+
else
|
35
|
+
resource_klass = Resources::Discovery.resource_for_name(@object, resource_class: @resource_class)
|
36
|
+
resource = resource_klass.new(@object, include: @includes)
|
37
|
+
serialized = { 'data' => resource.to_hash }
|
38
|
+
relationships = resource.relationships
|
39
|
+
included_data = assemble_included_data(relationships)
|
40
|
+
|
41
|
+
if included_data.present?
|
42
|
+
included_data.uniq! do |inc_data|
|
43
|
+
inc_data['id'] + inc_data['type']
|
44
|
+
end
|
45
|
+
serialized['included'] = included_data
|
41
46
|
end
|
42
|
-
serialized['included'] = included_data
|
43
47
|
end
|
44
48
|
|
45
49
|
serialized['meta'] = @meta if @meta.present?
|
@@ -82,8 +86,8 @@ module JsonApi
|
|
82
86
|
|
83
87
|
serialized['data'] = data_array
|
84
88
|
|
85
|
-
serialized['meta'] = @meta if @meta
|
86
|
-
serialized['included'] = assemble_included_data(included_resources)
|
89
|
+
serialized['meta'] = @meta if @meta.present?
|
90
|
+
serialized['included'] = assemble_included_data(included_resources) if included_resources.present?
|
87
91
|
|
88
92
|
serialized
|
89
93
|
end
|
@@ -14,6 +14,10 @@ RSpec.describe JsonApi::Serializer do
|
|
14
14
|
JsonApi.serialize(person, resource_class: 'Namespace::OneResource')
|
15
15
|
end
|
16
16
|
|
17
|
+
it 'returns a nil data object for no objects' do
|
18
|
+
expect(JsonApi.serialize(nil)).to eq({'data' => nil})
|
19
|
+
end
|
20
|
+
|
17
21
|
it 'has a top level data object' do
|
18
22
|
expect(serialized_data).to have_data
|
19
23
|
end
|
@@ -58,6 +62,10 @@ RSpec.describe JsonApi::Serializer do
|
|
58
62
|
JsonApi.serialize(people, resource_class: 'Namespace::OneResource')
|
59
63
|
end
|
60
64
|
|
65
|
+
it 'returns an empty data array for no objects' do
|
66
|
+
expect(JsonApi.serialize([])).to eq({'data' => []})
|
67
|
+
end
|
68
|
+
|
61
69
|
it 'serializes the data using the passed-in resource class' do
|
62
70
|
serialized_collection_other_resource_class['data'].each do |serialized|
|
63
71
|
expected_keys = %w(id type links)
|