active_model_serializers/benchmarks/serialization_libraries/support/bench_helper.rb
Benjamin Fleischer 919feafa0a Clarify code a bit
2017-10-12 23:38:06 -05:00

67 lines
1.6 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
}
anchor_time = Time.new(2017,7,1).utc
user = User.create(first_name: 'Diana', last_name: 'Prince', birthday: anchor_time, created_at: anchor_time, updated_at: anchor_time)
data_config[:posts].times do
post = Post.create(user_id: user.id, title: 'Some Post', body: 'awesome content', created_at: anchor_time, updated_at: anchor_time)
data_config[:comments_per_post].times do
Comment.create(author: 'me', comment: 'nice blog', post_id: post.id, created_at: anchor_time, updated_at: anchor_time)
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
# protected
def render_data(data, render_gem)
case render_gem
when :ams then render_with_ams(data)
when :jsonapi_rb then render_with_jsonapi_rb(data)
else fail ArgumentError, "Cannot render unknown gem '#{render_gem.inspect}'"
end
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::Renderer.new.render(
data,
include: 'posts.comments',
class: { User: SerializableUser, Post: SerializablePost, Comment: SerializableComment }
)
end
end