mirror of
https://github.com/samsonjs/grape-active_model_serializers.git
synced 2026-03-25 08:45:55 +00:00
As in issue #13 an example solution provided by @jrhe an implementation of said feature has been created. As per the discussion in the thread this is only a helper to be able to reach the available options provided in the active_model_serializer gem. usage is as follows: ```ruby get '/some_path' do collection = Collection.all render collection, { meta: { current_page: 5 }, meta_key: :pagination_info } end ``` The return value would be: `{ pagination_info: { current_page: 5 }, collection: [item, item] }` If given without a `meta_key` it would return as: `{ meta: { current_page: 5 }, collection: [item, item] }` Any feedback appreciated. @zph, @olleolleolle and @bjoska
65 lines
1.7 KiB
Ruby
65 lines
1.7 KiB
Ruby
require 'spec_helper'
|
|
require 'support/models/user'
|
|
require 'support/serializers/user_serializer'
|
|
require 'grape-active_model_serializers'
|
|
require 'securerandom'
|
|
|
|
describe '#render' do
|
|
let(:app) { Class.new(Grape::API) }
|
|
|
|
before do
|
|
app.format :json
|
|
app.formatter :json, Grape::Formatter::ActiveModelSerializers
|
|
end
|
|
|
|
def get_resource_with(meta)
|
|
url = "/#{SecureRandom.hex}"
|
|
app.get(url) do
|
|
render User.new(first_name: 'Jeff'), meta
|
|
end
|
|
get url
|
|
JSON.parse last_response.body
|
|
end
|
|
|
|
context 'with meta key' do
|
|
it 'includes meta key and content' do
|
|
result = get_resource_with({ meta: { total: 2 }})
|
|
expect(result).to have_key('meta')
|
|
expect(result.fetch('meta')).to eq({ 'total' => 2 })
|
|
end
|
|
end
|
|
|
|
context 'with a custom meta_key' do
|
|
|
|
it 'includes the custom meta key name' do
|
|
result = get_resource_with({ meta: { total: 2 }, meta_key: :custom_key_name })
|
|
expect(result).to have_key('custom_key_name')
|
|
expect(result.fetch('custom_key_name')).to eq({ 'total' => 2 })
|
|
end
|
|
|
|
it 'ignores a lonely meta_key' do
|
|
result = get_resource_with({ meta_key: :custom_key_name })
|
|
expect(result).not_to have_key('meta')
|
|
expect(result).not_to have_key('custom_key_name')
|
|
end
|
|
end
|
|
|
|
context 'junk keys' do
|
|
|
|
it 'ignores junk keys' do
|
|
result = get_resource_with({ junk_key: { total: 2 } })
|
|
expect(result).not_to have_key('junk_key')
|
|
end
|
|
|
|
it 'ignores empty meta_key' do
|
|
result = get_resource_with({ meta: { total: 2 }, meta_key: nil })
|
|
expect(result).to have_key('meta')
|
|
end
|
|
|
|
it 'ignores empty meta' do
|
|
result = get_resource_with({ meta: nil })
|
|
expect(result).not_to have_key('meta')
|
|
end
|
|
|
|
end
|
|
end
|