mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
67 lines
1.6 KiB
Ruby
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
|