mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
62 lines
1.2 KiB
Ruby
62 lines
1.2 KiB
Ruby
module BenchHelper
|
|
module_function
|
|
|
|
def clear_data
|
|
Comment.delete_all
|
|
Post.delete_all
|
|
User.delete_all
|
|
end
|
|
|
|
def seed_data
|
|
data_config = {
|
|
comments_per_post: 2,
|
|
posts: 20
|
|
}
|
|
|
|
u = User.create(first_name: 'Diana', last_name: 'Prince', birthday: 3000.years.ago)
|
|
|
|
data_config[:posts].times do
|
|
p = Post.create(user_id: u.id, title: 'Some Post', body: 'awesome content')
|
|
data_config[:comments_per_post].times do
|
|
Comment.create(author: 'me', comment: 'nice blog', post_id: p.id)
|
|
end
|
|
end
|
|
end
|
|
|
|
def test_render(render_gem)
|
|
render_data(
|
|
User.first,
|
|
render_gem
|
|
)
|
|
end
|
|
|
|
def test_manual_eagerload(render_gem)
|
|
render_data(
|
|
User.includes(posts: [:comments]).first,
|
|
render_gem
|
|
)
|
|
end
|
|
|
|
def render_data(data, render_gem)
|
|
return render_with_ams(data) if render_gem == :ams
|
|
|
|
render_with_jsonapi_rb(data)
|
|
end
|
|
|
|
def render_with_ams(data)
|
|
ActiveModelSerializers::SerializableResource.new(
|
|
data,
|
|
include: 'posts.comments',
|
|
adapter: :json_api
|
|
).as_json
|
|
end
|
|
|
|
def render_with_jsonapi_rb(data)
|
|
JSONAPI::Serializable::SuccessRenderer.new.render(
|
|
data,
|
|
include: 'posts.comments',
|
|
class: SerializableUser
|
|
)
|
|
end
|
|
end
|