active_model_serializers/benchmarks/serialization_libraries/support/bench_helper.rb
2017-10-12 15:25:41 -05:00

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