active_model_serializers/benchmarks/serialization_libraries/support/bench_helper.rb
Benjamin Fleischer 5d3ecb2f16 Consistent records
2017-10-12 23:37:34 -05:00

63 lines
1.5 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
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::Renderer.new.render(
data,
include: 'posts.comments',
class: { User: SerializableUser, Post: SerializablePost, Comment: SerializableComment }
)
end
end