diff --git a/test/grape_test.rb b/test/grape_test.rb index 746e246e..4195196d 100644 --- a/test/grape_test.rb +++ b/test/grape_test.rb @@ -4,6 +4,24 @@ require 'grape/active_model_serializers' class ActiveModelSerializers::GrapeTest < Minitest::Test include Rack::Test::Methods + module Models + def self.model1 + ARModels::Post.new(id: 1, title: 'Dummy Title', body: 'Lorem Ipsum') + end + + def self.model2 + ARModels::Post.new(id: 2, title: 'Second Dummy Title', body: 'Second Lorem Ipsum') + end + + def self.all + @all ||= + begin + model1.save! + model2.save! + ARModels::Post.all + end + end + end class GrapeTest < Grape::API format :json @@ -11,18 +29,17 @@ class ActiveModelSerializers::GrapeTest < Minitest::Test resources :grape do get '/render' do - render ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum') + render Models.model1 end get '/render_with_json_api' do - post = ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum') + post = Models.model1 render post, meta: { page: 1, total_pages: 2 }, adapter: :json_api end get '/render_array_with_json_api' do - post = ARModels::Post.create(title: 'Dummy Title', body: 'Lorem Ipsum') - post.dup.save - render ARModels::Post.all, adapter: :json_api + posts = Models.all + render posts, adapter: :json_api end end end @@ -34,7 +51,7 @@ class ActiveModelSerializers::GrapeTest < Minitest::Test def test_formatter_returns_json get '/grape/render' - post = ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum') + post = Models.model1 serializable_resource = serializable(post) assert last_response.ok? @@ -44,7 +61,7 @@ class ActiveModelSerializers::GrapeTest < Minitest::Test def test_render_helper_passes_through_options_correctly get '/grape/render_with_json_api' - post = ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum') + post = Models.model1 serializable_resource = serializable(post, serializer: ARModels::PostSerializer, adapter: :json_api, meta: { page: 1, total_pages: 2 }) assert last_response.ok? @@ -54,36 +71,12 @@ class ActiveModelSerializers::GrapeTest < Minitest::Test def test_formatter_handles_arrays get '/grape/render_array_with_json_api' - expected = { - 'data' => [ - { - id: '1', - type: 'ar_models_posts', - attributes: { - title: 'Dummy Title', - body: 'Lorem Ipsum' - }, - relationships: { - comments: { data: [] }, - author: { data: nil } - } - }, - { - id: '2', - type: 'ar_models_posts', - attributes: { - title: 'Dummy Title', - body: 'Lorem Ipsum' - }, - relationships: { - comments: { data: [] }, - author: { data: nil } - } - } - ] - } + posts = Models.all + serializable_resource = serializable(posts, adapter: :json_api) assert last_response.ok? - assert_equal expected.to_json, last_response.body + assert_equal serializable_resource.to_json, last_response.body + ensure + ARModels::Post.delete_all end end