simple_jsonapi 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|