Skip to content

Commit 6aa5a4f

Browse files
committed
Control db records created vs. tested against
1 parent 58937f4 commit 6aa5a4f

File tree

1 file changed

+29
-36
lines changed

1 file changed

+29
-36
lines changed

test/grape_test.rb

Lines changed: 29 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,42 @@
44

55
class ActiveModelSerializers::GrapeTest < Minitest::Test
66
include Rack::Test::Methods
7+
module Models
8+
def self.model1
9+
ARModels::Post.new(id: 1, title: 'Dummy Title', body: 'Lorem Ipsum')
10+
end
11+
12+
def self.model2
13+
ARModels::Post.new(id: 2, title: 'Second Dummy Title', body: 'Second Lorem Ipsum')
14+
end
15+
16+
def self.all
17+
@all ||=
18+
begin
19+
model1.save!
20+
model2.save!
21+
ARModels::Post.all
22+
end
23+
end
24+
end
725

826
class GrapeTest < Grape::API
927
format :json
1028
include Grape::ActiveModelSerializers
1129

1230
resources :grape do
1331
get '/render' do
14-
render ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum')
32+
render Models.model1
1533
end
1634

1735
get '/render_with_json_api' do
18-
post = ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum')
36+
post = Models.model1
1937
render post, meta: { page: 1, total_pages: 2 }, adapter: :json_api
2038
end
2139

2240
get '/render_array_with_json_api' do
23-
post = ARModels::Post.create(title: 'Dummy Title', body: 'Lorem Ipsum')
24-
post.dup.save
25-
render ARModels::Post.all, adapter: :json_api
41+
posts = Models.all
42+
render posts, adapter: :json_api
2643
end
2744
end
2845
end
@@ -34,7 +51,7 @@ def app
3451
def test_formatter_returns_json
3552
get '/grape/render'
3653

37-
post = ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum')
54+
post = Models.model1
3855
serializable_resource = serializable(post)
3956

4057
assert last_response.ok?
@@ -44,7 +61,7 @@ def test_formatter_returns_json
4461
def test_render_helper_passes_through_options_correctly
4562
get '/grape/render_with_json_api'
4663

47-
post = ARModels::Post.new(title: 'Dummy Title', body: 'Lorem Ipsum')
64+
post = Models.model1
4865
serializable_resource = serializable(post, serializer: ARModels::PostSerializer, adapter: :json_api, meta: { page: 1, total_pages: 2 })
4966

5067
assert last_response.ok?
@@ -54,36 +71,12 @@ def test_render_helper_passes_through_options_correctly
5471
def test_formatter_handles_arrays
5572
get '/grape/render_array_with_json_api'
5673

57-
expected = {
58-
'data' => [
59-
{
60-
id: '1',
61-
type: 'ar_models_posts',
62-
attributes: {
63-
title: 'Dummy Title',
64-
body: 'Lorem Ipsum'
65-
},
66-
relationships: {
67-
comments: { data: [] },
68-
author: { data: nil }
69-
}
70-
},
71-
{
72-
id: '2',
73-
type: 'ar_models_posts',
74-
attributes: {
75-
title: 'Dummy Title',
76-
body: 'Lorem Ipsum'
77-
},
78-
relationships: {
79-
comments: { data: [] },
80-
author: { data: nil }
81-
}
82-
}
83-
]
84-
}
74+
posts = Models.all
75+
serializable_resource = serializable(posts, adapter: :json_api)
8576

8677
assert last_response.ok?
87-
assert_equal expected.to_json, last_response.body
78+
assert_equal serializable_resource.to_json, last_response.body
79+
ensure
80+
ARModels::Post.delete_all
8881
end
8982
end

0 commit comments

Comments
 (0)