simple_jsonapi 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 +7 -0
- data/.gitignore +10 -0
- data/.rubocop.yml +131 -0
- data/CHANGELOG.md +2 -0
- data/Gemfile +5 -0
- data/Jenkinsfile +92 -0
- data/LICENSE.txt +22 -0
- data/README.md +532 -0
- data/Rakefile +10 -0
- data/lib/simple_jsonapi.rb +112 -0
- data/lib/simple_jsonapi/definition/attribute.rb +45 -0
- data/lib/simple_jsonapi/definition/base.rb +50 -0
- data/lib/simple_jsonapi/definition/concerns/has_links_object.rb +36 -0
- data/lib/simple_jsonapi/definition/concerns/has_meta_object.rb +36 -0
- data/lib/simple_jsonapi/definition/error.rb +70 -0
- data/lib/simple_jsonapi/definition/error_source.rb +29 -0
- data/lib/simple_jsonapi/definition/link.rb +27 -0
- data/lib/simple_jsonapi/definition/meta.rb +27 -0
- data/lib/simple_jsonapi/definition/relationship.rb +60 -0
- data/lib/simple_jsonapi/definition/resource.rb +104 -0
- data/lib/simple_jsonapi/error_serializer.rb +76 -0
- data/lib/simple_jsonapi/errors/bad_request.rb +11 -0
- data/lib/simple_jsonapi/errors/exception_serializer.rb +6 -0
- data/lib/simple_jsonapi/errors/wrapped_error.rb +35 -0
- data/lib/simple_jsonapi/errors/wrapped_error_serializer.rb +35 -0
- data/lib/simple_jsonapi/helpers/exceptions.rb +39 -0
- data/lib/simple_jsonapi/helpers/serializer_inferrer.rb +136 -0
- data/lib/simple_jsonapi/helpers/serializer_methods.rb +36 -0
- data/lib/simple_jsonapi/node/attributes.rb +51 -0
- data/lib/simple_jsonapi/node/base.rb +91 -0
- data/lib/simple_jsonapi/node/data/collection.rb +25 -0
- data/lib/simple_jsonapi/node/data/singular.rb +26 -0
- data/lib/simple_jsonapi/node/document/base.rb +62 -0
- data/lib/simple_jsonapi/node/document/collection.rb +17 -0
- data/lib/simple_jsonapi/node/document/errors.rb +17 -0
- data/lib/simple_jsonapi/node/document/singular.rb +17 -0
- data/lib/simple_jsonapi/node/error.rb +55 -0
- data/lib/simple_jsonapi/node/error_source.rb +40 -0
- data/lib/simple_jsonapi/node/errors.rb +28 -0
- data/lib/simple_jsonapi/node/included.rb +45 -0
- data/lib/simple_jsonapi/node/object_links.rb +40 -0
- data/lib/simple_jsonapi/node/object_meta.rb +40 -0
- data/lib/simple_jsonapi/node/relationship.rb +79 -0
- data/lib/simple_jsonapi/node/relationship_data/base.rb +53 -0
- data/lib/simple_jsonapi/node/relationship_data/collection.rb +32 -0
- data/lib/simple_jsonapi/node/relationship_data/singular.rb +33 -0
- data/lib/simple_jsonapi/node/relationships.rb +60 -0
- data/lib/simple_jsonapi/node/resource/base.rb +21 -0
- data/lib/simple_jsonapi/node/resource/full.rb +49 -0
- data/lib/simple_jsonapi/node/resource/linkage.rb +25 -0
- data/lib/simple_jsonapi/parameters/fields_spec.rb +45 -0
- data/lib/simple_jsonapi/parameters/include_spec.rb +57 -0
- data/lib/simple_jsonapi/parameters/sort_spec.rb +107 -0
- data/lib/simple_jsonapi/serializer.rb +89 -0
- data/lib/simple_jsonapi/version.rb +3 -0
- data/simple_jsonapi.gemspec +29 -0
- data/test/errors/bad_request_test.rb +34 -0
- data/test/errors/error_serializer_test.rb +229 -0
- data/test/errors/exception_serializer_test.rb +25 -0
- data/test/errors/wrapped_error_serializer_test.rb +91 -0
- data/test/errors/wrapped_error_test.rb +44 -0
- data/test/parameters/fields_spec_test.rb +56 -0
- data/test/parameters/include_spec_test.rb +58 -0
- data/test/parameters/sort_spec_test.rb +65 -0
- data/test/resources/attributes_test.rb +109 -0
- data/test/resources/extras_test.rb +70 -0
- data/test/resources/id_and_type_test.rb +76 -0
- data/test/resources/inclusion_test.rb +134 -0
- data/test/resources/links_test.rb +63 -0
- data/test/resources/meta_test.rb +49 -0
- data/test/resources/relationships_test.rb +262 -0
- data/test/resources/sorting_test.rb +79 -0
- data/test/resources/sparse_fieldset_test.rb +160 -0
- data/test/root_objects_test.rb +165 -0
- data/test/test_helper.rb +31 -0
- metadata +235 -0
@@ -0,0 +1,160 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class SparseFieldsetTest < Minitest::Spec
|
4
|
+
class Order < TestModel
|
5
|
+
attr_accessor :customer_name, :description
|
6
|
+
attr_writer :line_items
|
7
|
+
|
8
|
+
def line_items
|
9
|
+
@line_items ||= []
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class LineItem < TestModel
|
14
|
+
attr_accessor :order_id, :product, :quantity
|
15
|
+
end
|
16
|
+
|
17
|
+
class Product < TestModel
|
18
|
+
attr_accessor :name, :price
|
19
|
+
end
|
20
|
+
|
21
|
+
class OrderSerializer < SimpleJsonapi::Serializer
|
22
|
+
attribute :customer_name
|
23
|
+
attribute :description
|
24
|
+
has_many :line_items do
|
25
|
+
data(&:line_items)
|
26
|
+
end
|
27
|
+
has_many :products do
|
28
|
+
data { |o| o.line_items.flat_map(&:product).compact.uniq }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class LineItemSerializer < SimpleJsonapi::Serializer
|
33
|
+
attribute :order_id
|
34
|
+
attribute :quantity
|
35
|
+
has_one :product do
|
36
|
+
data(&:product)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
class ProductSerializer < SimpleJsonapi::Serializer
|
41
|
+
attribute :name
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:order) do
|
45
|
+
Order.new(id: 1, customer_name: "Miguel", description: "10 things", line_items: [line_item])
|
46
|
+
end
|
47
|
+
let(:line_item) do
|
48
|
+
LineItem.new(id: 11, order_id: 1, product: product, quantity: 10)
|
49
|
+
end
|
50
|
+
let(:product) do
|
51
|
+
Product.new(id: 21, name: "Thing", price: 5.99)
|
52
|
+
end
|
53
|
+
|
54
|
+
let(:attributes) { serialized.dig(:data, :attributes) }
|
55
|
+
let(:relationships) { serialized.dig(:data, :relationships) }
|
56
|
+
|
57
|
+
describe "Sparse fieldsets" do
|
58
|
+
describe "for the base resources" do
|
59
|
+
describe "without a fields parameter" do
|
60
|
+
let(:serialized) { SimpleJsonapi.render_resource(order) }
|
61
|
+
|
62
|
+
it "renders all the attributes" do
|
63
|
+
assert_equal [:customer_name, :description], attributes.keys
|
64
|
+
end
|
65
|
+
|
66
|
+
it "renders all the relationships" do
|
67
|
+
assert_equal [:line_items, :products], relationships.keys
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "with fields specified" do
|
72
|
+
let(:serialized) { SimpleJsonapi.render_resource(order, fields: { orders: "customer_name,products" }) }
|
73
|
+
|
74
|
+
it "renders only the requested attributes" do
|
75
|
+
assert_equal [:customer_name], attributes.keys
|
76
|
+
end
|
77
|
+
|
78
|
+
it "renders only the requested relationships" do
|
79
|
+
assert_equal [:products], relationships.keys
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "with an empty list" do
|
84
|
+
let(:serialized) { SimpleJsonapi.render_resource(order, fields: { orders: "" }) }
|
85
|
+
|
86
|
+
it "renders none of the attributes" do
|
87
|
+
refute serialized[:data].key?(:attributes)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "renders none of the relationships" do
|
91
|
+
refute serialized[:data].key?(:relationships)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "for related resources" do
|
97
|
+
let(:included_line_item) do
|
98
|
+
serialized[:included].find { |res| res[:type] == "line_items" }
|
99
|
+
end
|
100
|
+
let(:included_product) do
|
101
|
+
serialized[:included].find { |res| res[:type] == "products" }
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "without a fields parameter" do
|
105
|
+
let(:serialized) do
|
106
|
+
SimpleJsonapi.render_resource(
|
107
|
+
order,
|
108
|
+
include: "line_items,line_items.product",
|
109
|
+
)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "renders all the attributes" do
|
113
|
+
assert_equal [:order_id, :quantity], included_line_item[:attributes].keys
|
114
|
+
end
|
115
|
+
|
116
|
+
it "renders all the relationships" do
|
117
|
+
assert_equal [:product], included_line_item[:relationships].keys
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe "with fields specified" do
|
122
|
+
let(:serialized) do
|
123
|
+
SimpleJsonapi.render_resource(
|
124
|
+
order,
|
125
|
+
include: "line_items,line_items.product",
|
126
|
+
fields: { line_items: "order_id,product", products: "name" },
|
127
|
+
)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "renders only the requested attributes" do
|
131
|
+
assert_equal [:order_id], included_line_item[:attributes].keys
|
132
|
+
assert_equal [:name], included_product[:attributes].keys
|
133
|
+
end
|
134
|
+
|
135
|
+
it "renders only the requested relationships" do
|
136
|
+
assert_equal [:product], included_line_item[:relationships].keys
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
describe "with an empty list" do
|
141
|
+
let(:serialized) do
|
142
|
+
SimpleJsonapi.render_resource(
|
143
|
+
order,
|
144
|
+
include: "line_items,products",
|
145
|
+
fields: { line_items: "", products: "" },
|
146
|
+
)
|
147
|
+
end
|
148
|
+
|
149
|
+
it "renders none of the attributes" do
|
150
|
+
refute included_line_item.key?(:attributes)
|
151
|
+
refute included_product.key?(:attributes)
|
152
|
+
end
|
153
|
+
|
154
|
+
it "renders none of the relationships" do
|
155
|
+
refute included_line_item.key?(:relationships)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,165 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
|
3
|
+
class RootObjectsTest < Minitest::Spec
|
4
|
+
class Order < TestModel
|
5
|
+
end
|
6
|
+
|
7
|
+
class OrderSerializer < SimpleJsonapi::Serializer
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "Root data object" do
|
11
|
+
describe "for a singular resource" do
|
12
|
+
it "is nil when given nil" do
|
13
|
+
serialized = SimpleJsonapi.render_resource(nil)
|
14
|
+
assert_includes serialized.keys, :data
|
15
|
+
assert_nil serialized[:data]
|
16
|
+
end
|
17
|
+
|
18
|
+
it "is an object when given a single object" do
|
19
|
+
serialized = SimpleJsonapi.render_resource(Order.new)
|
20
|
+
assert_instance_of Hash, serialized[:data]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "raises an error when given an array" do
|
24
|
+
ex = assert_raises(SimpleJsonapi::SerializerInferenceError) do
|
25
|
+
SimpleJsonapi.render_resource([Order.new])
|
26
|
+
end
|
27
|
+
assert_match(/Unable to infer serializer for Array/, ex.message)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "for a collection of resources" do
|
32
|
+
it "is an array when given an empty array" do
|
33
|
+
serialized = SimpleJsonapi.render_resources([])
|
34
|
+
assert_instance_of Array, serialized[:data]
|
35
|
+
assert_equal 0, serialized[:data].size
|
36
|
+
end
|
37
|
+
|
38
|
+
it "is an array when given a single object" do
|
39
|
+
serialized = SimpleJsonapi.render_resources(Order.new)
|
40
|
+
assert_instance_of Array, serialized[:data]
|
41
|
+
assert_equal 1, serialized[:data].size
|
42
|
+
end
|
43
|
+
|
44
|
+
it "is an array when given a one-element array" do
|
45
|
+
serialized = SimpleJsonapi.render_resources([Order.new])
|
46
|
+
assert_instance_of Array, serialized[:data]
|
47
|
+
assert_equal 1, serialized[:data].size
|
48
|
+
end
|
49
|
+
|
50
|
+
it "is an array when given a multiple-element array" do
|
51
|
+
serialized = SimpleJsonapi.render_resources([Order.new, Order.new])
|
52
|
+
assert_instance_of Array, serialized[:data]
|
53
|
+
assert_equal 2, serialized[:data].size
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "when rendering errors" do
|
58
|
+
it "is omitted" do
|
59
|
+
serialized = SimpleJsonapi.render_errors([])
|
60
|
+
refute_includes serialized.keys, :data
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "Root errors object" do
|
66
|
+
it "is omitted when given an empty array" do
|
67
|
+
serialized = SimpleJsonapi.render_errors([])
|
68
|
+
refute serialized.key?(:errors)
|
69
|
+
end
|
70
|
+
|
71
|
+
it "is an array when given a single error" do
|
72
|
+
serialized = SimpleJsonapi.render_errors(StandardError.new)
|
73
|
+
assert_instance_of Array, serialized[:errors]
|
74
|
+
assert_equal 1, serialized[:errors].size
|
75
|
+
end
|
76
|
+
|
77
|
+
it "is an array when given an array of errors" do
|
78
|
+
serialized = SimpleJsonapi.render_errors([StandardError.new, StandardError.new])
|
79
|
+
assert_instance_of Array, serialized[:errors]
|
80
|
+
assert_equal 2, serialized[:errors].size
|
81
|
+
end
|
82
|
+
|
83
|
+
it "is omitted when rendering resources" do
|
84
|
+
serialized = SimpleJsonapi.render_resources([])
|
85
|
+
refute serialized.key?(:errors)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe "Root links object" do
|
90
|
+
it "renders links on the document root" do
|
91
|
+
serialized = SimpleJsonapi.render_resource(
|
92
|
+
Order.new,
|
93
|
+
links: {
|
94
|
+
self: {
|
95
|
+
href: "http://www.example.com/api",
|
96
|
+
meta: { count: 10 },
|
97
|
+
},
|
98
|
+
about: "http://www.example.com/about",
|
99
|
+
},
|
100
|
+
)
|
101
|
+
|
102
|
+
assert_equal %i[self about], serialized[:links].keys
|
103
|
+
assert_equal "http://www.example.com/api", serialized.dig(:links, :self, :href)
|
104
|
+
assert_equal 10, serialized.dig(:links, :self, :meta, :count)
|
105
|
+
assert_equal "http://www.example.com/about", serialized.dig(:links, :about)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "omits the links object by default" do
|
109
|
+
serialized = SimpleJsonapi.render_resource(Order.new)
|
110
|
+
refute_includes serialized.keys, :links
|
111
|
+
end
|
112
|
+
|
113
|
+
it "omits the links object if the links param is empty" do
|
114
|
+
serialized = SimpleJsonapi.render_resource(Order.new, links: {})
|
115
|
+
refute_includes serialized.keys, :links
|
116
|
+
end
|
117
|
+
|
118
|
+
it "raises an error if the provided links are not a Hash" do
|
119
|
+
ex = assert_raises(ArgumentError) do
|
120
|
+
SimpleJsonapi.render_resource(Order.new, links: "not a hash")
|
121
|
+
end
|
122
|
+
assert_match(/Expected links to be NilClass or Hash/, ex.message)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "Root meta object" do
|
127
|
+
it "renders meta properties on the document root" do
|
128
|
+
serialized = SimpleJsonapi.render_resource(
|
129
|
+
Order.new,
|
130
|
+
meta: {
|
131
|
+
scalar: "hello world",
|
132
|
+
array: %w[one two three],
|
133
|
+
},
|
134
|
+
)
|
135
|
+
|
136
|
+
assert_equal %i[scalar array], serialized[:meta].keys
|
137
|
+
assert_equal "hello world", serialized.dig(:meta, :scalar)
|
138
|
+
assert_equal %w[one two three], serialized.dig(:meta, :array)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "omits the meta object by default" do
|
142
|
+
serialized = SimpleJsonapi.render_resource(Order.new)
|
143
|
+
refute_includes serialized.keys, :meta
|
144
|
+
end
|
145
|
+
|
146
|
+
it "omits the meta object if the meta param is empty" do
|
147
|
+
serialized = SimpleJsonapi.render_resource(Order.new, meta: {})
|
148
|
+
refute_includes serialized.keys, :meta
|
149
|
+
end
|
150
|
+
|
151
|
+
it "raises an error if the provided meta is not a Hash" do
|
152
|
+
ex = assert_raises(ArgumentError) do
|
153
|
+
SimpleJsonapi.render_resource(Order.new, meta: "not a hash")
|
154
|
+
end
|
155
|
+
assert_match(/Expected meta to be NilClass or Hash/, ex.message)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "Root jsonapi object" do
|
160
|
+
it "is not present" do
|
161
|
+
serialized = SimpleJsonapi.render_resource(Order.new)
|
162
|
+
refute_includes serialized.keys, :jsonapi
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'active_support'
|
4
|
+
ActiveSupport::TestCase.test_order = :random # if we don't set this, active_support gives a warning
|
5
|
+
|
6
|
+
require 'minitest/autorun'
|
7
|
+
require 'minitest/spec'
|
8
|
+
require 'minitest/reporters'
|
9
|
+
require 'mocha/minitest'
|
10
|
+
require 'pry'
|
11
|
+
require 'pp'
|
12
|
+
|
13
|
+
require 'simple_jsonapi'
|
14
|
+
|
15
|
+
if ENV['BUILD_NUMBER']
|
16
|
+
Minitest::Reporters.use!(
|
17
|
+
[MiniTest::Reporters::DefaultReporter.new, MiniTest::Reporters::JUnitReporter.new('test/reports')],
|
18
|
+
ENV,
|
19
|
+
Minitest.backtrace_filter,
|
20
|
+
)
|
21
|
+
else
|
22
|
+
Minitest::Reporters.use!(Minitest::Reporters::SpecReporter.new, ENV, Minitest.backtrace_filter)
|
23
|
+
end
|
24
|
+
|
25
|
+
class TestModel
|
26
|
+
attr_accessor :id
|
27
|
+
|
28
|
+
def initialize(attrs = {})
|
29
|
+
attrs.each { |k, v| send("#{k}=", v) }
|
30
|
+
end
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_jsonapi
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- PatientsLikeMe
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-04-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.10'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-reporters
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: mocha
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: A library for building JSONAPI documents in Ruby.
|
112
|
+
email:
|
113
|
+
- engineers@patientslikeme.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- ".gitignore"
|
119
|
+
- ".rubocop.yml"
|
120
|
+
- CHANGELOG.md
|
121
|
+
- Gemfile
|
122
|
+
- Jenkinsfile
|
123
|
+
- LICENSE.txt
|
124
|
+
- README.md
|
125
|
+
- Rakefile
|
126
|
+
- lib/simple_jsonapi.rb
|
127
|
+
- lib/simple_jsonapi/definition/attribute.rb
|
128
|
+
- lib/simple_jsonapi/definition/base.rb
|
129
|
+
- lib/simple_jsonapi/definition/concerns/has_links_object.rb
|
130
|
+
- lib/simple_jsonapi/definition/concerns/has_meta_object.rb
|
131
|
+
- lib/simple_jsonapi/definition/error.rb
|
132
|
+
- lib/simple_jsonapi/definition/error_source.rb
|
133
|
+
- lib/simple_jsonapi/definition/link.rb
|
134
|
+
- lib/simple_jsonapi/definition/meta.rb
|
135
|
+
- lib/simple_jsonapi/definition/relationship.rb
|
136
|
+
- lib/simple_jsonapi/definition/resource.rb
|
137
|
+
- lib/simple_jsonapi/error_serializer.rb
|
138
|
+
- lib/simple_jsonapi/errors/bad_request.rb
|
139
|
+
- lib/simple_jsonapi/errors/exception_serializer.rb
|
140
|
+
- lib/simple_jsonapi/errors/wrapped_error.rb
|
141
|
+
- lib/simple_jsonapi/errors/wrapped_error_serializer.rb
|
142
|
+
- lib/simple_jsonapi/helpers/exceptions.rb
|
143
|
+
- lib/simple_jsonapi/helpers/serializer_inferrer.rb
|
144
|
+
- lib/simple_jsonapi/helpers/serializer_methods.rb
|
145
|
+
- lib/simple_jsonapi/node/attributes.rb
|
146
|
+
- lib/simple_jsonapi/node/base.rb
|
147
|
+
- lib/simple_jsonapi/node/data/collection.rb
|
148
|
+
- lib/simple_jsonapi/node/data/singular.rb
|
149
|
+
- lib/simple_jsonapi/node/document/base.rb
|
150
|
+
- lib/simple_jsonapi/node/document/collection.rb
|
151
|
+
- lib/simple_jsonapi/node/document/errors.rb
|
152
|
+
- lib/simple_jsonapi/node/document/singular.rb
|
153
|
+
- lib/simple_jsonapi/node/error.rb
|
154
|
+
- lib/simple_jsonapi/node/error_source.rb
|
155
|
+
- lib/simple_jsonapi/node/errors.rb
|
156
|
+
- lib/simple_jsonapi/node/included.rb
|
157
|
+
- lib/simple_jsonapi/node/object_links.rb
|
158
|
+
- lib/simple_jsonapi/node/object_meta.rb
|
159
|
+
- lib/simple_jsonapi/node/relationship.rb
|
160
|
+
- lib/simple_jsonapi/node/relationship_data/base.rb
|
161
|
+
- lib/simple_jsonapi/node/relationship_data/collection.rb
|
162
|
+
- lib/simple_jsonapi/node/relationship_data/singular.rb
|
163
|
+
- lib/simple_jsonapi/node/relationships.rb
|
164
|
+
- lib/simple_jsonapi/node/resource/base.rb
|
165
|
+
- lib/simple_jsonapi/node/resource/full.rb
|
166
|
+
- lib/simple_jsonapi/node/resource/linkage.rb
|
167
|
+
- lib/simple_jsonapi/parameters/fields_spec.rb
|
168
|
+
- lib/simple_jsonapi/parameters/include_spec.rb
|
169
|
+
- lib/simple_jsonapi/parameters/sort_spec.rb
|
170
|
+
- lib/simple_jsonapi/serializer.rb
|
171
|
+
- lib/simple_jsonapi/version.rb
|
172
|
+
- simple_jsonapi.gemspec
|
173
|
+
- test/errors/bad_request_test.rb
|
174
|
+
- test/errors/error_serializer_test.rb
|
175
|
+
- test/errors/exception_serializer_test.rb
|
176
|
+
- test/errors/wrapped_error_serializer_test.rb
|
177
|
+
- test/errors/wrapped_error_test.rb
|
178
|
+
- test/parameters/fields_spec_test.rb
|
179
|
+
- test/parameters/include_spec_test.rb
|
180
|
+
- test/parameters/sort_spec_test.rb
|
181
|
+
- test/resources/attributes_test.rb
|
182
|
+
- test/resources/extras_test.rb
|
183
|
+
- test/resources/id_and_type_test.rb
|
184
|
+
- test/resources/inclusion_test.rb
|
185
|
+
- test/resources/links_test.rb
|
186
|
+
- test/resources/meta_test.rb
|
187
|
+
- test/resources/relationships_test.rb
|
188
|
+
- test/resources/sorting_test.rb
|
189
|
+
- test/resources/sparse_fieldset_test.rb
|
190
|
+
- test/root_objects_test.rb
|
191
|
+
- test/test_helper.rb
|
192
|
+
homepage: https://www.patientslikeme.com
|
193
|
+
licenses:
|
194
|
+
- MIT
|
195
|
+
metadata: {}
|
196
|
+
post_install_message:
|
197
|
+
rdoc_options: []
|
198
|
+
require_paths:
|
199
|
+
- lib
|
200
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
+
requirements:
|
202
|
+
- - ">="
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '0'
|
205
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
206
|
+
requirements:
|
207
|
+
- - ">="
|
208
|
+
- !ruby/object:Gem::Version
|
209
|
+
version: '0'
|
210
|
+
requirements: []
|
211
|
+
rubyforge_project:
|
212
|
+
rubygems_version: 2.5.2
|
213
|
+
signing_key:
|
214
|
+
specification_version: 4
|
215
|
+
summary: A library for building JSONAPI documents in Ruby.
|
216
|
+
test_files:
|
217
|
+
- test/errors/bad_request_test.rb
|
218
|
+
- test/errors/error_serializer_test.rb
|
219
|
+
- test/errors/exception_serializer_test.rb
|
220
|
+
- test/errors/wrapped_error_serializer_test.rb
|
221
|
+
- test/errors/wrapped_error_test.rb
|
222
|
+
- test/parameters/fields_spec_test.rb
|
223
|
+
- test/parameters/include_spec_test.rb
|
224
|
+
- test/parameters/sort_spec_test.rb
|
225
|
+
- test/resources/attributes_test.rb
|
226
|
+
- test/resources/extras_test.rb
|
227
|
+
- test/resources/id_and_type_test.rb
|
228
|
+
- test/resources/inclusion_test.rb
|
229
|
+
- test/resources/links_test.rb
|
230
|
+
- test/resources/meta_test.rb
|
231
|
+
- test/resources/relationships_test.rb
|
232
|
+
- test/resources/sorting_test.rb
|
233
|
+
- test/resources/sparse_fieldset_test.rb
|
234
|
+
- test/root_objects_test.rb
|
235
|
+
- test/test_helper.rb
|