4
4
5
5
class ActiveModelSerializers ::GrapeTest < Minitest ::Test
6
6
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
7
25
8
26
class GrapeTest < Grape ::API
9
27
format :json
10
28
include Grape ::ActiveModelSerializers
11
29
12
30
resources :grape do
13
31
get '/render' do
14
- render ARModels :: Post . new ( title : 'Dummy Title' , body : 'Lorem Ipsum' )
32
+ render Models . model1
15
33
end
16
34
17
35
get '/render_with_json_api' do
18
- post = ARModels :: Post . new ( title : 'Dummy Title' , body : 'Lorem Ipsum' )
36
+ post = Models . model1
19
37
render post , meta : { page : 1 , total_pages : 2 } , adapter : :json_api
20
38
end
21
39
22
40
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
26
43
end
27
44
end
28
45
end
@@ -34,7 +51,7 @@ def app
34
51
def test_formatter_returns_json
35
52
get '/grape/render'
36
53
37
- post = ARModels :: Post . new ( title : 'Dummy Title' , body : 'Lorem Ipsum' )
54
+ post = Models . model1
38
55
serializable_resource = serializable ( post )
39
56
40
57
assert last_response . ok?
@@ -44,7 +61,7 @@ def test_formatter_returns_json
44
61
def test_render_helper_passes_through_options_correctly
45
62
get '/grape/render_with_json_api'
46
63
47
- post = ARModels :: Post . new ( title : 'Dummy Title' , body : 'Lorem Ipsum' )
64
+ post = Models . model1
48
65
serializable_resource = serializable ( post , serializer : ARModels ::PostSerializer , adapter : :json_api , meta : { page : 1 , total_pages : 2 } )
49
66
50
67
assert last_response . ok?
@@ -54,36 +71,12 @@ def test_render_helper_passes_through_options_correctly
54
71
def test_formatter_handles_arrays
55
72
get '/grape/render_array_with_json_api'
56
73
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 )
85
76
86
77
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
88
81
end
89
82
end
0 commit comments