onsi 1.1.0 → 1.2.0

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