cheap_ams 0.10.5 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +49 -0
- data/.rubocop_todo.yml +315 -0
- data/.simplecov +99 -0
- data/.travis.yml +8 -0
- data/Gemfile +10 -1
- data/README.md +4 -16
- data/Rakefile +29 -2
- data/cheap_ams.gemspec +3 -2
- data/docs/README.md +1 -0
- data/docs/general/configuration_options.md +11 -0
- data/lib/action_controller/serialization.rb +2 -2
- data/lib/active_model/serializable_resource.rb +0 -2
- data/lib/active_model/serializer/adapter/fragment_cache.rb +3 -4
- data/lib/active_model/serializer/adapter/json/fragment_cache.rb +0 -2
- data/lib/active_model/serializer/adapter/json.rb +0 -1
- data/lib/active_model/serializer/adapter/json_api/fragment_cache.rb +2 -4
- data/lib/active_model/serializer/adapter/json_api.rb +87 -93
- data/lib/active_model/serializer/adapter.rb +4 -4
- data/lib/active_model/serializer/array_serializer.rb +11 -12
- data/lib/active_model/serializer/association.rb +0 -1
- data/lib/active_model/serializer/fieldset.rb +2 -4
- data/lib/active_model/serializer/lint.rb +2 -4
- data/lib/active_model/serializer/version.rb +1 -1
- data/lib/active_model/serializer.rb +0 -25
- data/lib/active_model_serializers.rb +0 -1
- data/lib/generators/serializer/serializer_generator.rb +7 -7
- data/lib/generators/serializer/templates/{serializer.rb → serializer.rb.erb} +0 -0
- data/lib/tasks/rubocop.rake +0 -0
- data/test/action_controller/adapter_selector_test.rb +3 -3
- data/test/action_controller/explicit_serializer_test.rb +9 -9
- data/test/action_controller/json_api/linked_test.rb +28 -28
- data/test/action_controller/json_api/pagination_test.rb +24 -24
- data/test/action_controller/serialization_test.rb +73 -79
- data/test/adapter/fragment_cache_test.rb +2 -2
- data/test/adapter/json/belongs_to_test.rb +4 -4
- data/test/adapter/json/collection_test.rb +15 -15
- data/test/adapter/json/has_many_test.rb +5 -5
- data/test/adapter/json_api/belongs_to_test.rb +37 -37
- data/test/adapter/json_api/collection_test.rb +22 -23
- data/test/adapter/json_api/has_many_embed_ids_test.rb +2 -2
- data/test/adapter/json_api/has_many_explicit_serializer_test.rb +4 -4
- data/test/adapter/json_api/has_many_test.rb +25 -25
- data/test/adapter/json_api/has_one_test.rb +10 -10
- data/test/adapter/json_api/json_api_test.rb +6 -7
- data/test/adapter/json_api/linked_test.rb +69 -69
- data/test/adapter/json_api/pagination_links_test.rb +8 -8
- data/test/adapter/json_api/resource_type_config_test.rb +14 -14
- data/test/adapter/json_test.rb +7 -7
- data/test/adapter_test.rb +2 -2
- data/test/array_serializer_test.rb +11 -7
- data/test/capture_warnings.rb +8 -7
- data/test/fixtures/active_record.rb +0 -1
- data/test/fixtures/poro.rb +7 -12
- data/test/generators/scaffold_controller_generator_test.rb +1 -2
- data/test/generators/serializer_generator_test.rb +10 -10
- data/test/lint_test.rb +0 -7
- data/test/serializers/adapter_for_test.rb +0 -1
- data/test/serializers/associations_test.rb +4 -4
- data/test/serializers/attribute_test.rb +7 -7
- data/test/serializers/attributes_test.rb +8 -14
- data/test/serializers/cache_test.rb +8 -7
- data/test/serializers/fieldset_test.rb +3 -4
- data/test/serializers/meta_test.rb +23 -23
- data/test/serializers/root_test.rb +1 -3
- data/test/serializers/serializer_for_test.rb +1 -1
- data/test/support/serialization_testing.rb +13 -0
- data/test/support/simplecov.rb +6 -0
- data/test/support/stream_capture.rb +2 -2
- data/test/test_helper.rb +14 -2
- metadata +13 -6
- data/test/serializers/urls_test.rb +0 -26
@@ -53,94 +53,94 @@ module ActiveModel
|
|
53
53
|
expected = {
|
54
54
|
data: [
|
55
55
|
{
|
56
|
-
id:
|
57
|
-
type:
|
56
|
+
id: '10',
|
57
|
+
type: 'posts',
|
58
58
|
attributes: {
|
59
|
-
title:
|
60
|
-
body:
|
59
|
+
title: 'Hello!!',
|
60
|
+
body: 'Hello, world!!'
|
61
61
|
},
|
62
62
|
relationships: {
|
63
|
-
comments: { data: [
|
64
|
-
blog: { data: { type:
|
65
|
-
author: { data: { type:
|
63
|
+
comments: { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] },
|
64
|
+
blog: { data: { type: 'blogs', id: '999' } },
|
65
|
+
author: { data: { type: 'authors', id: '1' } }
|
66
66
|
}
|
67
67
|
},
|
68
68
|
{
|
69
|
-
id:
|
70
|
-
type:
|
69
|
+
id: '20',
|
70
|
+
type: 'posts',
|
71
71
|
attributes: {
|
72
|
-
title:
|
73
|
-
body:
|
72
|
+
title: 'New Post',
|
73
|
+
body: 'Body'
|
74
74
|
},
|
75
75
|
relationships: {
|
76
76
|
comments: { data: [] },
|
77
|
-
blog: { data: { type:
|
78
|
-
author: { data: { type:
|
77
|
+
blog: { data: { type: 'blogs', id: '999' } },
|
78
|
+
author: { data: { type: 'authors', id: '2' } }
|
79
79
|
}
|
80
80
|
}
|
81
81
|
],
|
82
82
|
included: [
|
83
83
|
{
|
84
|
-
id:
|
85
|
-
type:
|
84
|
+
id: '1',
|
85
|
+
type: 'comments',
|
86
86
|
attributes: {
|
87
|
-
body:
|
87
|
+
body: 'ZOMG A COMMENT'
|
88
88
|
},
|
89
89
|
relationships: {
|
90
|
-
post: { data: { type:
|
90
|
+
post: { data: { type: 'posts', id: '10' } },
|
91
91
|
author: { data: nil }
|
92
92
|
}
|
93
93
|
}, {
|
94
|
-
id:
|
95
|
-
type:
|
94
|
+
id: '2',
|
95
|
+
type: 'comments',
|
96
96
|
attributes: {
|
97
|
-
body:
|
97
|
+
body: 'ZOMG ANOTHER COMMENT',
|
98
98
|
},
|
99
99
|
relationships: {
|
100
|
-
post: { data: { type:
|
100
|
+
post: { data: { type: 'posts', id: '10' } },
|
101
101
|
author: { data: nil }
|
102
102
|
}
|
103
103
|
}, {
|
104
|
-
id:
|
105
|
-
type:
|
104
|
+
id: '1',
|
105
|
+
type: 'authors',
|
106
106
|
attributes: {
|
107
|
-
name:
|
107
|
+
name: 'Steve K.'
|
108
108
|
},
|
109
109
|
relationships: {
|
110
|
-
posts: { data: [
|
110
|
+
posts: { data: [{ type: 'posts', id: '10' }, { type: 'posts', id: '30' }] },
|
111
111
|
roles: { data: [] },
|
112
|
-
bio: { data: { type:
|
112
|
+
bio: { data: { type: 'bios', id: '1' } }
|
113
113
|
}
|
114
114
|
}, {
|
115
|
-
id:
|
116
|
-
type:
|
115
|
+
id: '1',
|
116
|
+
type: 'bios',
|
117
117
|
attributes: {
|
118
|
-
content:
|
118
|
+
content: 'AMS Contributor',
|
119
119
|
rating: nil
|
120
120
|
},
|
121
121
|
relationships: {
|
122
|
-
author: { data: { type:
|
122
|
+
author: { data: { type: 'authors', id: '1' } }
|
123
123
|
}
|
124
124
|
}, {
|
125
|
-
id:
|
126
|
-
type:
|
125
|
+
id: '2',
|
126
|
+
type: 'authors',
|
127
127
|
attributes: {
|
128
|
-
name:
|
128
|
+
name: 'Tenderlove'
|
129
129
|
},
|
130
130
|
relationships: {
|
131
|
-
posts: { data: [
|
131
|
+
posts: { data: [{ type: 'posts', id: '20' }] },
|
132
132
|
roles: { data: [] },
|
133
|
-
bio: { data: { type:
|
133
|
+
bio: { data: { type: 'bios', id: '2' } }
|
134
134
|
}
|
135
135
|
}, {
|
136
|
-
id:
|
137
|
-
type:
|
136
|
+
id: '2',
|
137
|
+
type: 'bios',
|
138
138
|
attributes: {
|
139
139
|
rating: nil,
|
140
|
-
content:
|
140
|
+
content: 'Rails Contributor',
|
141
141
|
},
|
142
142
|
relationships: {
|
143
|
-
author: { data: { type:
|
143
|
+
author: { data: { type: 'authors', id: '2' } }
|
144
144
|
}
|
145
145
|
}
|
146
146
|
]
|
@@ -162,39 +162,39 @@ module ActiveModel
|
|
162
162
|
|
163
163
|
expected = [
|
164
164
|
{
|
165
|
-
id:
|
166
|
-
type:
|
165
|
+
id: '1',
|
166
|
+
type: 'authors',
|
167
167
|
attributes: {
|
168
|
-
name:
|
168
|
+
name: 'Steve K.'
|
169
169
|
},
|
170
170
|
relationships: {
|
171
|
-
posts: { data: [
|
171
|
+
posts: { data: [{ type: 'posts', id: '10' }, { type: 'posts', id: '30' }] },
|
172
172
|
roles: { data: [] },
|
173
|
-
bio: { data: { type:
|
173
|
+
bio: { data: { type: 'bios', id: '1' } }
|
174
174
|
}
|
175
175
|
}, {
|
176
|
-
id:
|
177
|
-
type:
|
176
|
+
id: '10',
|
177
|
+
type: 'posts',
|
178
178
|
attributes: {
|
179
|
-
title:
|
180
|
-
body:
|
179
|
+
title: 'Hello!!',
|
180
|
+
body: 'Hello, world!!'
|
181
181
|
},
|
182
182
|
relationships: {
|
183
|
-
comments: { data: [
|
184
|
-
blog: { data: { type:
|
185
|
-
author: { data: { type:
|
183
|
+
comments: { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] },
|
184
|
+
blog: { data: { type: 'blogs', id: '999' } },
|
185
|
+
author: { data: { type: 'authors', id: '1' } }
|
186
186
|
}
|
187
187
|
}, {
|
188
|
-
id:
|
189
|
-
type:
|
188
|
+
id: '30',
|
189
|
+
type: 'posts',
|
190
190
|
attributes: {
|
191
|
-
title:
|
192
|
-
body:
|
191
|
+
title: 'Yet Another Post',
|
192
|
+
body: 'Body'
|
193
193
|
},
|
194
194
|
relationships: {
|
195
195
|
comments: { data: [] },
|
196
|
-
blog: { data: { type:
|
197
|
-
author: { data: { type:
|
196
|
+
blog: { data: { type: 'blogs', id: '999' } },
|
197
|
+
author: { data: { type: 'authors', id: '1' } }
|
198
198
|
}
|
199
199
|
}
|
200
200
|
]
|
@@ -229,21 +229,21 @@ module ActiveModel
|
|
229
229
|
|
230
230
|
expected = [
|
231
231
|
{
|
232
|
-
id:
|
233
|
-
type:
|
232
|
+
id: '10',
|
233
|
+
type: 'posts',
|
234
234
|
attributes: {
|
235
|
-
title:
|
236
|
-
body:
|
235
|
+
title: 'Hello!!',
|
236
|
+
body: 'Hello, world!!'
|
237
237
|
},
|
238
238
|
relationships: {
|
239
239
|
comments: {
|
240
|
-
data: [{type:
|
240
|
+
data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }]
|
241
241
|
},
|
242
242
|
blog: {
|
243
|
-
data: {type:
|
243
|
+
data: { type: 'blogs', id: '999' }
|
244
244
|
},
|
245
245
|
author: {
|
246
|
-
data: {type:
|
246
|
+
data: { type: 'authors', id: '1' }
|
247
247
|
}
|
248
248
|
}
|
249
249
|
}
|
@@ -262,14 +262,14 @@ module ActiveModel
|
|
262
262
|
|
263
263
|
expected = {
|
264
264
|
data: {
|
265
|
-
id:
|
266
|
-
type:
|
265
|
+
id: '10',
|
266
|
+
type: 'posts',
|
267
267
|
attributes: {
|
268
|
-
title:
|
269
|
-
body:
|
268
|
+
title: 'Hello!!',
|
269
|
+
body: 'Hello, world!!'
|
270
270
|
},
|
271
271
|
relationships: {
|
272
|
-
comments: { data: [
|
272
|
+
comments: { data: [{ type: 'comments', id: '1' }, { type: 'comments', id: '2' }] },
|
273
273
|
author: { data: nil }
|
274
274
|
}
|
275
275
|
}
|
@@ -20,9 +20,9 @@ module ActiveModel
|
|
20
20
|
]
|
21
21
|
end
|
22
22
|
|
23
|
-
def mock_request(query_parameters={}, original_url=URI)
|
23
|
+
def mock_request(query_parameters = {}, original_url = URI)
|
24
24
|
context = Minitest::Mock.new
|
25
|
-
context.expect(:original_url, original_url
|
25
|
+
context.expect(:original_url, original_url)
|
26
26
|
context.expect(:query_parameters, query_parameters)
|
27
27
|
@options = {}
|
28
28
|
@options[:context] = context
|
@@ -42,17 +42,17 @@ module ActiveModel
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def data
|
45
|
-
{ data:[
|
46
|
-
{ id:
|
47
|
-
{ id:
|
48
|
-
{ id:
|
45
|
+
{ data: [
|
46
|
+
{ id: '1', type: 'profiles', attributes: { name: 'Name 1', description: 'Description 1' } },
|
47
|
+
{ id: '2', type: 'profiles', attributes: { name: 'Name 2', description: 'Description 2' } },
|
48
|
+
{ id: '3', type: 'profiles', attributes: { name: 'Name 3', description: 'Description 3' } }
|
49
49
|
]
|
50
50
|
}
|
51
51
|
end
|
52
52
|
|
53
53
|
def links
|
54
54
|
{
|
55
|
-
links:{
|
55
|
+
links: {
|
56
56
|
self: "#{URI}?page%5Bnumber%5D=2&page%5Bsize%5D=1",
|
57
57
|
first: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
|
58
58
|
prev: "#{URI}?page%5Bnumber%5D=1&page%5Bsize%5D=1",
|
@@ -74,7 +74,7 @@ module ActiveModel
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def expected_response_with_pagination_links_and_additional_params
|
77
|
-
new_links = links[:links].each_with_object({}) {|(key, value), hash| hash[key] = "#{value}&test=test" }
|
77
|
+
new_links = links[:links].each_with_object({}) { |(key, value), hash| hash[key] = "#{value}&test=test" }
|
78
78
|
{}.tap do |hash|
|
79
79
|
hash[:data] = [data.values.flatten.second]
|
80
80
|
hash.merge! links: new_links
|
@@ -21,35 +21,35 @@ module ActiveModel
|
|
21
21
|
@comment.author = nil
|
22
22
|
@post.author = @author
|
23
23
|
@anonymous_post.author = nil
|
24
|
-
@blog = Blog.new(id: 1, name:
|
24
|
+
@blog = Blog.new(id: 1, name: 'My Blog!!')
|
25
25
|
@blog.writer = @author
|
26
26
|
@blog.articles = [@post, @anonymous_post]
|
27
27
|
@author.posts = []
|
28
28
|
end
|
29
29
|
|
30
30
|
def with_jsonapi_resource_type type
|
31
|
-
old_type = ActiveModel::Serializer.config
|
32
|
-
ActiveModel::Serializer.config
|
31
|
+
old_type = ActiveModel::Serializer.config.jsonapi_resource_type
|
32
|
+
ActiveModel::Serializer.config.jsonapi_resource_type = type
|
33
33
|
yield
|
34
34
|
ensure
|
35
|
-
ActiveModel::Serializer.config
|
35
|
+
ActiveModel::Serializer.config.jsonapi_resource_type = old_type
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_config_plural
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
with_adapter :json_api do
|
40
|
+
with_jsonapi_resource_type :plural do
|
41
|
+
hash = ActiveModel::SerializableResource.new(@comment).serializable_hash
|
42
|
+
assert_equal('comments', hash[:data][:type])
|
43
|
+
end
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_config_singular
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
with_adapter :json_api do
|
49
|
+
with_jsonapi_resource_type :singular do
|
50
|
+
hash = ActiveModel::SerializableResource.new(@comment).serializable_hash
|
51
|
+
assert_equal('comment', hash[:data][:type])
|
52
|
+
end
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
data/test/adapter/json_test.rb
CHANGED
@@ -14,7 +14,7 @@ module ActiveModel
|
|
14
14
|
@first_comment.post = @post
|
15
15
|
@second_comment.post = @post
|
16
16
|
@post.author = @author
|
17
|
-
@blog = Blog.new(id: 1, name:
|
17
|
+
@blog = Blog.new(id: 1, name: 'My Blog!!')
|
18
18
|
@post.blog = @blog
|
19
19
|
|
20
20
|
@serializer = PostSerializer.new(@post)
|
@@ -23,8 +23,8 @@ module ActiveModel
|
|
23
23
|
|
24
24
|
def test_has_many
|
25
25
|
assert_equal([
|
26
|
-
{id: 1, body: 'ZOMG A COMMENT'},
|
27
|
-
{id: 2, body: 'ZOMG ANOTHER COMMENT'}
|
26
|
+
{ id: 1, body: 'ZOMG A COMMENT' },
|
27
|
+
{ id: 2, body: 'ZOMG ANOTHER COMMENT' }
|
28
28
|
], @adapter.serializable_hash[:post][:comments])
|
29
29
|
end
|
30
30
|
|
@@ -34,11 +34,11 @@ module ActiveModel
|
|
34
34
|
|
35
35
|
assert_equal({
|
36
36
|
id: 1,
|
37
|
-
reviews: [{id: 1, body:
|
38
|
-
{id: 2, body:
|
37
|
+
reviews: [{ id: 1, body: 'ZOMG A COMMENT' },
|
38
|
+
{ id: 2, body: 'ZOMG ANOTHER COMMENT' }
|
39
39
|
],
|
40
|
-
writer: {id: 1, name:
|
41
|
-
site: {id: 1, name:
|
40
|
+
writer: { id: 1, name: 'Steve K.' },
|
41
|
+
site: { id: 1, name: 'My Blog!!' }
|
42
42
|
}, adapter.serializable_hash[:post])
|
43
43
|
end
|
44
44
|
end
|
data/test/adapter_test.rb
CHANGED
@@ -35,12 +35,12 @@ module ActiveModel
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_create_adapter_with_override
|
38
|
-
adapter = ActiveModel::Serializer::Adapter.create(@serializer, { adapter: :json_api})
|
38
|
+
adapter = ActiveModel::Serializer::Adapter.create(@serializer, { adapter: :json_api })
|
39
39
|
assert_equal ActiveModel::Serializer::Adapter::JsonApi, adapter.class
|
40
40
|
end
|
41
41
|
|
42
42
|
def test_inflected_adapter_class_for_known_adapter
|
43
|
-
ActiveSupport::Inflector.inflections(:en){|inflect| inflect.acronym 'API' }
|
43
|
+
ActiveSupport::Inflector.inflections(:en) { |inflect| inflect.acronym 'API' }
|
44
44
|
klass = ActiveModel::Serializer::Adapter.adapter_class(:json_api)
|
45
45
|
|
46
46
|
ActiveSupport::Inflector.inflections.acronyms.clear
|
@@ -7,14 +7,18 @@ module ActiveModel
|
|
7
7
|
@comment = Comment.new
|
8
8
|
@post = Post.new
|
9
9
|
@resource = build_named_collection @comment, @post
|
10
|
-
@serializer = ArraySerializer.new(@resource, {some: :options})
|
10
|
+
@serializer = ArraySerializer.new(@resource, { some: :options })
|
11
11
|
end
|
12
12
|
|
13
13
|
def build_named_collection(*resource)
|
14
|
-
resource.define_singleton_method(:name){ 'MeResource' }
|
14
|
+
resource.define_singleton_method(:name) { 'MeResource' }
|
15
15
|
resource
|
16
16
|
end
|
17
17
|
|
18
|
+
def test_has_object_reader_serializer_interface
|
19
|
+
assert_equal @serializer.object, @resource
|
20
|
+
end
|
21
|
+
|
18
22
|
def test_respond_to_each
|
19
23
|
assert_respond_to @serializer, :each
|
20
24
|
end
|
@@ -32,17 +36,17 @@ module ActiveModel
|
|
32
36
|
end
|
33
37
|
|
34
38
|
def test_serializer_option_not_passed_to_each_serializer
|
35
|
-
serializers = ArraySerializer.new([@post], {serializer: PostSerializer}).to_a
|
39
|
+
serializers = ArraySerializer.new([@post], { serializer: PostSerializer }).to_a
|
36
40
|
|
37
41
|
refute serializers.first.custom_options.key?(:serializer)
|
38
42
|
end
|
39
43
|
|
40
44
|
def test_meta_and_meta_key_attr_readers
|
41
|
-
meta_content = {meta:
|
45
|
+
meta_content = { meta: 'the meta', meta_key: 'the meta key' }
|
42
46
|
@serializer = ArraySerializer.new([@comment, @post], meta_content)
|
43
47
|
|
44
|
-
assert_equal @serializer.meta,
|
45
|
-
assert_equal @serializer.meta_key,
|
48
|
+
assert_equal @serializer.meta, 'the meta'
|
49
|
+
assert_equal @serializer.meta_key, 'the meta key'
|
46
50
|
end
|
47
51
|
|
48
52
|
def test_root_default
|
@@ -73,7 +77,7 @@ module ActiveModel
|
|
73
77
|
|
74
78
|
def test_json_key_with_resource_with_nil_name_and_no_serializers
|
75
79
|
resource = []
|
76
|
-
resource.define_singleton_method(:name){ nil }
|
80
|
+
resource.define_singleton_method(:name) { nil }
|
77
81
|
serializer = ArraySerializer.new(resource)
|
78
82
|
assert_equal serializer.json_key, nil
|
79
83
|
end
|
data/test/capture_warnings.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
# https://raw.githubusercontent.com/metric_fu/metric_fu/master/spec/capture_warnings.rb
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'tempfile'
|
3
|
+
require 'fileutils'
|
4
4
|
|
5
5
|
class CaptureWarnings
|
6
6
|
def initialize(fail_on_warnings = true)
|
7
7
|
@fail_on_warnings = fail_on_warnings
|
8
|
-
@stderr_file = Tempfile.new(
|
8
|
+
@stderr_file = Tempfile.new('app.stderr')
|
9
9
|
@app_root ||= Dir.pwd
|
10
|
-
@output_dir = File.join(app_root,
|
10
|
+
@output_dir = File.join(app_root, 'tmp')
|
11
11
|
FileUtils.mkdir_p(output_dir)
|
12
|
-
@bundle_dir = File.join(app_root,
|
12
|
+
@bundle_dir = File.join(app_root, 'bundle')
|
13
13
|
end
|
14
14
|
|
15
15
|
def before_tests
|
@@ -40,9 +40,9 @@ class CaptureWarnings
|
|
40
40
|
end
|
41
41
|
|
42
42
|
if other_warnings.any?
|
43
|
-
File.write(File.join(output_dir,
|
43
|
+
File.write(File.join(output_dir, 'warnings.txt'), other_warnings.join("\n") << "\n")
|
44
44
|
puts
|
45
|
-
puts
|
45
|
+
puts 'Non-app warnings written to tmp/warnings.txt'
|
46
46
|
puts
|
47
47
|
end
|
48
48
|
|
@@ -53,5 +53,6 @@ class CaptureWarnings
|
|
53
53
|
end
|
54
54
|
|
55
55
|
private
|
56
|
+
|
56
57
|
attr_reader :stderr_file, :app_root, :output_dir, :bundle_dir, :fail_on_warnings
|
57
58
|
end
|
data/test/fixtures/poro.rb
CHANGED
@@ -7,7 +7,7 @@ class Model
|
|
7
7
|
@_model_name ||= ActiveModel::Name.new(self)
|
8
8
|
end
|
9
9
|
|
10
|
-
def initialize(hash={})
|
10
|
+
def initialize(hash = {})
|
11
11
|
@attributes = hash
|
12
12
|
end
|
13
13
|
|
@@ -59,8 +59,6 @@ end
|
|
59
59
|
class ProfileSerializer < ActiveModel::Serializer
|
60
60
|
attributes :name, :description
|
61
61
|
|
62
|
-
urls :posts, :comments
|
63
|
-
|
64
62
|
def arguments_passed_in?
|
65
63
|
options[:my_options] == :accessible
|
66
64
|
end
|
@@ -68,8 +66,6 @@ end
|
|
68
66
|
|
69
67
|
class ProfilePreviewSerializer < ActiveModel::Serializer
|
70
68
|
attributes :name
|
71
|
-
|
72
|
-
urls :posts, :comments
|
73
69
|
end
|
74
70
|
|
75
71
|
Post = Class.new(Model)
|
@@ -83,7 +79,7 @@ Location = Class.new(Model)
|
|
83
79
|
Place = Class.new(Model)
|
84
80
|
Tag = Class.new(Model)
|
85
81
|
VirtualValue = Class.new(Model)
|
86
|
-
Comment
|
82
|
+
Comment = Class.new(Model) do
|
87
83
|
# Uses a custom non-time-based cache key
|
88
84
|
def cache_key
|
89
85
|
"#{self.class.name.downcase}/#{self.id}"
|
@@ -94,16 +90,15 @@ module Spam; end
|
|
94
90
|
Spam::UnrelatedLink = Class.new(Model)
|
95
91
|
|
96
92
|
PostSerializer = Class.new(ActiveModel::Serializer) do
|
97
|
-
cache key:'post', expires_in: 0.1, skip_digest: true
|
93
|
+
cache key: 'post', expires_in: 0.1, skip_digest: true
|
98
94
|
attributes :id, :title, :body
|
99
95
|
|
100
96
|
has_many :comments
|
101
97
|
belongs_to :blog
|
102
98
|
belongs_to :author
|
103
|
-
url :comments
|
104
99
|
|
105
100
|
def blog
|
106
|
-
Blog.new(id: 999, name:
|
101
|
+
Blog.new(id: 999, name: 'Custom blog')
|
107
102
|
end
|
108
103
|
|
109
104
|
def custom_options
|
@@ -133,7 +128,7 @@ CommentSerializer = Class.new(ActiveModel::Serializer) do
|
|
133
128
|
end
|
134
129
|
|
135
130
|
AuthorSerializer = Class.new(ActiveModel::Serializer) do
|
136
|
-
cache key:'writer', skip_digest: true
|
131
|
+
cache key: 'writer', skip_digest: true
|
137
132
|
attribute :id
|
138
133
|
attribute :name
|
139
134
|
|
@@ -249,8 +244,8 @@ end
|
|
249
244
|
VirtualValueSerializer = Class.new(ActiveModel::Serializer) do
|
250
245
|
attributes :id
|
251
246
|
|
252
|
-
has_many :reviews, virtual_value: [{id: 1}, {id: 2}]
|
253
|
-
has_one :maker, virtual_value: {id: 1}
|
247
|
+
has_many :reviews, virtual_value: [{ id: 1 }, { id: 2 }]
|
248
|
+
has_one :maker, virtual_value: { id: 1 }
|
254
249
|
|
255
250
|
def reviews
|
256
251
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
# require 'active_model/serializer/railtie'
|
3
2
|
|
4
3
|
class ResourceGeneratorTest < Rails::Generators::TestCase
|
5
4
|
destination File.expand_path('../../../tmp/generators', __FILE__)
|
@@ -19,6 +18,6 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
|
|
19
18
|
def copy_routes
|
20
19
|
config_dir = File.join(destination_root, 'config')
|
21
20
|
FileUtils.mkdir_p(config_dir)
|
22
|
-
File.write(File.join(config_dir, 'routes.rb'), 'Rails.application.routes.draw {
|
21
|
+
File.write(File.join(config_dir, 'routes.rb'), 'Rails.application.routes.draw {}')
|
23
22
|
end
|
24
23
|
end
|
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
2
2
|
require 'generators/serializer/serializer_generator'
|
3
3
|
|
4
4
|
class SerializerGeneratorTest < Rails::Generators::TestCase
|
5
|
-
destination File.expand_path(
|
5
|
+
destination File.expand_path('../../../tmp/generators', __FILE__)
|
6
6
|
setup :prepare_destination
|
7
7
|
|
8
8
|
tests Rails::Generators::SerializerGenerator
|
@@ -10,33 +10,33 @@ class SerializerGeneratorTest < Rails::Generators::TestCase
|
|
10
10
|
|
11
11
|
def test_generates_a_serializer
|
12
12
|
run_generator
|
13
|
-
assert_file
|
13
|
+
assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ActiveModel::Serializer/
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_generates_a_namespaced_serializer
|
17
|
-
run_generator [
|
18
|
-
assert_file
|
17
|
+
run_generator ['admin/account']
|
18
|
+
assert_file 'app/serializers/admin/account_serializer.rb', /class Admin::AccountSerializer < ActiveModel::Serializer/
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_uses_application_serializer_if_one_exists
|
22
22
|
Object.const_set(:ApplicationSerializer, Class.new)
|
23
23
|
run_generator
|
24
|
-
assert_file
|
24
|
+
assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < ApplicationSerializer/
|
25
25
|
ensure
|
26
26
|
Object.send :remove_const, :ApplicationSerializer
|
27
27
|
end
|
28
28
|
|
29
29
|
def test_uses_given_parent
|
30
30
|
Object.const_set(:ApplicationSerializer, Class.new)
|
31
|
-
run_generator [
|
32
|
-
assert_file
|
31
|
+
run_generator ['Account', '--parent=MySerializer']
|
32
|
+
assert_file 'app/serializers/account_serializer.rb', /class AccountSerializer < MySerializer/
|
33
33
|
ensure
|
34
34
|
Object.send :remove_const, :ApplicationSerializer
|
35
35
|
end
|
36
36
|
|
37
37
|
def test_generates_attributes_and_associations
|
38
38
|
run_generator
|
39
|
-
assert_file
|
39
|
+
assert_file 'app/serializers/account_serializer.rb' do |serializer|
|
40
40
|
assert_match(/^ attributes :id, :name, :description$/, serializer)
|
41
41
|
assert_match(/^ has_one :business$/, serializer)
|
42
42
|
assert_match(/^end\n*\z/, serializer)
|
@@ -44,8 +44,8 @@ class SerializerGeneratorTest < Rails::Generators::TestCase
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_with_no_attributes_does_not_add_extra_space
|
47
|
-
run_generator [
|
48
|
-
assert_file
|
47
|
+
run_generator ['account']
|
48
|
+
assert_file 'app/serializers/account_serializer.rb' do |content|
|
49
49
|
if RUBY_PLATFORM =~ /mingw/
|
50
50
|
assert_no_match(/\r\n\r\nend/, content)
|
51
51
|
else
|