Skip to content

Commit 6aca043

Browse files
committed
add getter for @inclusion_field
1 parent 2b24efc commit 6aca043

File tree

3 files changed

+62
-2
lines changed

3 files changed

+62
-2
lines changed

lib/api_helper/includable.rb

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,24 @@ def set_inclusion_field(resource, field, id_field, resource_name: nil,
310310
}
311311
end
312312

313+
# Getter for the data of includable fields
314+
#
315+
# Params:
316+
#
317+
# +resource+::
318+
# +Symbol+ the resource name of inclusion data to retrieve
319+
#
320+
def inclusion_field(resource = nil)
321+
# act as a traditional getter if no parameters specified
322+
if resource.blank?
323+
@inclusion_field ||= ActiveSupport::HashWithIndifferentAccess.new
324+
325+
# returns the inclusion array if an specific resource is passed in
326+
else
327+
inclusion_field[resource] || []
328+
end
329+
end
330+
313331
# Returns the description of the 'include' URL parameter
314332
def self.include_param_desc(example: nil, default: nil)
315333
if default.present?
@@ -327,7 +345,7 @@ def self.include_param_desc(example: nil, default: nil)
327345

328346
included do
329347
if defined? helper_method
330-
helper_method :inclusion, :set_inclusion, :set_inclusion_field
348+
helper_method :inclusion, :set_inclusion, :set_inclusion_field, :inclusion_field
331349
end
332350
end
333351
end

lib/api_helper/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module APIHelper
2-
VERSION = "0.0.7"
2+
VERSION = "0.0.8"
33
end

spec/api_helper/rails/includable_spec.rb

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,48 @@ def index
178178
})
179179
end
180180
end
181+
182+
describe "inclusion_field" do
183+
it "get the properties of includable fields" do
184+
# These methods are normally called in the view
185+
controller.set_inclusion_field :post, :comments, :comment_ids,
186+
resource_name: :comment,
187+
resources_url: '/comments'
188+
controller.set_inclusion_field :post, :author, :author_id,
189+
resource_name: :user,
190+
resources_url: '/users'
191+
192+
expect(controller.inclusion_field).to \
193+
eq('post' => {
194+
'comments' => {
195+
'field' => :comments,
196+
'id_field' => :comment_ids,
197+
'resource_name' => :comment,
198+
'resources_url' => '/comments'
199+
},
200+
'author' => {
201+
'field' => :author,
202+
'id_field' => :author_id,
203+
'resource_name' => :user,
204+
'resources_url' => '/users'
205+
}
206+
})
207+
208+
expect(controller.inclusion_field(:post)).to \
209+
eq('comments' => {
210+
'field' => :comments,
211+
'id_field' => :comment_ids,
212+
'resource_name' => :comment,
213+
'resources_url' => '/comments'
214+
},
215+
'author' => {
216+
'field' => :author,
217+
'id_field' => :author_id,
218+
'resource_name' => :user,
219+
'resources_url' => '/users'
220+
})
221+
end
222+
end
181223
end
182224
end
183225
end if defined?(Rails)

0 commit comments

Comments
 (0)