onsi 1.1.0 → 1.2.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
  SHA256:
3
- metadata.gz: 638533886ab71bbcb08509a8fc97847bf8758780f57ec9cd447b7d2e238f2004
4
- data.tar.gz: 752a3904540d06b5e633440a4e953da4d2df53697bb3d2581c4a513ed575ecbb
3
+ metadata.gz: 125362cc7e8b37e2a01878974ca1f8df845d5ae6235fb09571c939ea4ef0dbef
4
+ data.tar.gz: 1453b4fd3d2cc8f4f55c5a8862e3dedcf8caec1e866438cc9b125ef8e9897b21
5
5
  SHA512:
6
- metadata.gz: 6cdd245d7d1b287869aade512beb827527912054c1d633db3b4adb05d374c1c1bcdeff39014e47a885bddabc3d8f0c304768d204b90b29b21a7822925c382fa8
7
- data.tar.gz: d164bbedc0824ed6b2650c7994f58167f8c44dc515731b8562de55701479be8f14f63ab18f237b17bcc06f091920f6a1690ff487a83864ef318e10f5423f92d3
6
+ metadata.gz: 3f46696980dcffe537154b596eae1783b56fbbc85e6ec789e616878e89a455519c291f5450ece97fe002554b52ef72e23b479a74137a1c3d617d6c1d4ecd3965
7
+ data.tar.gz: 9ccd840a50e92d321f62fdd304a225d771ab2c298880c506f0b684f68c6a9c201348dcd294161dedceaab3207798283741ab10f797f86b4e0bf590a2ce58ab9b
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # Version 1.2.0
2
+
3
+ ## Released February 23, 2019
4
+
5
+ ###
6
+
7
+ - Feat: Allow setting a different primary id attribute.
8
+
9
+ ---
10
+
1
11
  # Version 1.1.0
2
12
 
3
13
  ## Released February 23, 2019
@@ -8,6 +18,8 @@
8
18
 
9
19
  - Feat: Allow Params to parse included relationships
10
20
 
21
+ ---
22
+
11
23
  # Version 1.0.1
12
24
 
13
25
  ## Released November 21, 2018
@@ -16,6 +28,8 @@
16
28
 
17
29
  - Fix for nested complex attributes.
18
30
 
31
+ ---
32
+
19
33
  # Version 1.0.0
20
34
 
21
35
  ## Released November 15, 2018
data/lib/onsi/model.rb CHANGED
@@ -48,8 +48,8 @@ module Onsi
48
48
  #
49
49
  # @param block [Block] The block. Called on an instance
50
50
  # of {Onsi::Model::ModelRenderer}
51
- def api_render(version, &block)
52
- api_renderer(version).instance_exec(&block)
51
+ def api_render(version, id: :id, &block)
52
+ api_renderer(version, id).instance_exec(&block)
53
53
  end
54
54
 
55
55
  ##
@@ -63,12 +63,12 @@ module Onsi
63
63
  #
64
64
  # @raise [Onsi::Errors::UnknownVersionError] If the version isn't defined
65
65
  # and the for_render param is true.
66
- def api_renderer(version, for_render: false)
66
+ def api_renderer(version, id, for_render: false)
67
67
  @api_renderer ||= {}
68
68
  if for_render
69
69
  raise Errors::UnknownVersionError.new(self, version) if @api_renderer[version].nil?
70
70
  else
71
- @api_renderer[version] ||= ModelRenderer.new
71
+ @api_renderer[version] ||= ModelRenderer.new(id)
72
72
  end
73
73
  @api_renderer[version]
74
74
  end
@@ -91,11 +91,16 @@ module Onsi
91
91
  # The default date-time format for a rendered Date and Time. (ISO-8601)
92
92
  DATETIME_FORMAT = '%Y-%m-%dT%H:%M:%SZ'.freeze
93
93
 
94
+ ##
95
+ # The name of the id attribute on the model
96
+ attr_reader :id_attr
97
+
94
98
  ##
95
99
  # Create a new ModelRenderer
96
100
  #
97
101
  # @private
98
- def initialize
102
+ def initialize(id_attr)
103
+ @id_attr = id_attr
99
104
  @attributes = {}
100
105
  @relationships = {}
101
106
  @metadata = {}
data/lib/onsi/resource.rb CHANGED
@@ -154,7 +154,7 @@ module Onsi
154
154
  def as_json(_opts = {})
155
155
  {}.tap do |root|
156
156
  root[TYPE_KEY] = type
157
- root[ID_KEY] = object.id.to_s
157
+ root[ID_KEY] = object_id
158
158
  root[ATTRIBUTES_KEY] = generate_attributes
159
159
  append_relationships(root)
160
160
  append_meta(root)
@@ -189,8 +189,13 @@ module Onsi
189
189
  end
190
190
  end
191
191
 
192
+ def object_id
193
+ attr = object.class.api_renderer(version, nil, for_render: true).id_attr
194
+ object.send(attr).to_s
195
+ end
196
+
192
197
  def type
193
- object.class.api_renderer(version, for_render: true).type || object.class.name.underscore
198
+ object.class.api_renderer(version, nil, for_render: true).type || object.class.name.underscore
194
199
  end
195
200
 
196
201
  def append_relationships(root)
@@ -216,15 +221,15 @@ module Onsi
216
221
  end
217
222
 
218
223
  def generate_attributes
219
- object.class.api_renderer(version, for_render: true).render_attributes(object)
224
+ object.class.api_renderer(version, nil, for_render: true).render_attributes(object)
220
225
  end
221
226
 
222
227
  def generate_relationships
223
- object.class.api_renderer(version, for_render: true).render_relationships(object)
228
+ object.class.api_renderer(version, nil, for_render: true).render_relationships(object)
224
229
  end
225
230
 
226
231
  def generate_metadata
227
- object.class.api_renderer(version, for_render: true).render_metadata(object)
232
+ object.class.api_renderer(version, nil, for_render: true).render_metadata(object)
228
233
  end
229
234
 
230
235
  def generate_includes
data/lib/onsi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Onsi
2
2
  ##
3
3
  # The current version of Onsi
4
- VERSION = '1.1.0'.freeze
4
+ VERSION = '1.2.0'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onsi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maddie Schipper
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-02-23 00:00:00.000000000 Z
11
+ date: 2019-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable