active_model_serializers 0.8.3 → 0.10.15

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.
Files changed (97) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +726 -6
  3. data/{MIT-LICENSE.txt → MIT-LICENSE} +3 -2
  4. data/README.md +194 -545
  5. data/lib/action_controller/serialization.rb +53 -38
  6. data/lib/active_model/serializable_resource.rb +13 -0
  7. data/lib/active_model/serializer/adapter/attributes.rb +17 -0
  8. data/lib/active_model/serializer/adapter/base.rb +20 -0
  9. data/lib/active_model/serializer/adapter/json.rb +17 -0
  10. data/lib/active_model/serializer/adapter/json_api.rb +17 -0
  11. data/lib/active_model/serializer/adapter/null.rb +17 -0
  12. data/lib/active_model/serializer/adapter.rb +26 -0
  13. data/lib/active_model/serializer/array_serializer.rb +14 -0
  14. data/lib/active_model/serializer/association.rb +73 -0
  15. data/lib/active_model/serializer/attribute.rb +27 -0
  16. data/lib/active_model/serializer/belongs_to_reflection.rb +13 -0
  17. data/lib/active_model/serializer/collection_serializer.rb +99 -0
  18. data/lib/active_model/serializer/concerns/caching.rb +305 -0
  19. data/lib/active_model/serializer/error_serializer.rb +16 -0
  20. data/lib/active_model/serializer/errors_serializer.rb +34 -0
  21. data/lib/active_model/serializer/field.rb +92 -0
  22. data/lib/active_model/serializer/fieldset.rb +33 -0
  23. data/lib/active_model/serializer/has_many_reflection.rb +12 -0
  24. data/lib/active_model/serializer/has_one_reflection.rb +9 -0
  25. data/lib/active_model/serializer/lazy_association.rb +99 -0
  26. data/lib/active_model/serializer/link.rb +23 -0
  27. data/lib/active_model/serializer/lint.rb +152 -0
  28. data/lib/active_model/serializer/null.rb +19 -0
  29. data/lib/active_model/serializer/reflection.rb +212 -0
  30. data/lib/active_model/serializer/version.rb +7 -0
  31. data/lib/active_model/serializer.rb +354 -442
  32. data/lib/active_model_serializers/adapter/attributes.rb +36 -0
  33. data/lib/active_model_serializers/adapter/base.rb +85 -0
  34. data/lib/active_model_serializers/adapter/json.rb +23 -0
  35. data/lib/active_model_serializers/adapter/json_api/deserialization.rb +215 -0
  36. data/lib/active_model_serializers/adapter/json_api/error.rb +98 -0
  37. data/lib/active_model_serializers/adapter/json_api/jsonapi.rb +51 -0
  38. data/lib/active_model_serializers/adapter/json_api/link.rb +85 -0
  39. data/lib/active_model_serializers/adapter/json_api/meta.rb +39 -0
  40. data/lib/active_model_serializers/adapter/json_api/pagination_links.rb +94 -0
  41. data/lib/active_model_serializers/adapter/json_api/relationship.rb +106 -0
  42. data/lib/active_model_serializers/adapter/json_api/resource_identifier.rb +68 -0
  43. data/lib/active_model_serializers/adapter/json_api.rb +535 -0
  44. data/lib/active_model_serializers/adapter/null.rb +11 -0
  45. data/lib/active_model_serializers/adapter.rb +100 -0
  46. data/lib/active_model_serializers/callbacks.rb +57 -0
  47. data/lib/active_model_serializers/deprecate.rb +56 -0
  48. data/lib/active_model_serializers/deserialization.rb +17 -0
  49. data/lib/active_model_serializers/json_pointer.rb +16 -0
  50. data/lib/active_model_serializers/logging.rb +124 -0
  51. data/lib/active_model_serializers/lookup_chain.rb +82 -0
  52. data/lib/active_model_serializers/model.rb +132 -0
  53. data/lib/active_model_serializers/railtie.rb +62 -0
  54. data/lib/active_model_serializers/register_jsonapi_renderer.rb +80 -0
  55. data/lib/active_model_serializers/serializable_resource.rb +84 -0
  56. data/lib/active_model_serializers/serialization_context.rb +41 -0
  57. data/lib/active_model_serializers/test/schema.rb +140 -0
  58. data/lib/active_model_serializers/test/serializer.rb +127 -0
  59. data/lib/active_model_serializers/test.rb +9 -0
  60. data/lib/active_model_serializers.rb +49 -81
  61. data/lib/generators/rails/USAGE +6 -0
  62. data/lib/generators/rails/resource_override.rb +12 -0
  63. data/lib/generators/rails/serializer_generator.rb +38 -0
  64. data/lib/generators/rails/templates/serializer.rb.erb +8 -0
  65. data/lib/grape/active_model_serializers.rb +18 -0
  66. data/lib/grape/formatters/active_model_serializers.rb +34 -0
  67. data/lib/grape/helpers/active_model_serializers.rb +19 -0
  68. data/lib/tasks/rubocop.rake +60 -0
  69. metadata +240 -51
  70. data/.gitignore +0 -18
  71. data/.travis.yml +0 -28
  72. data/DESIGN.textile +0 -586
  73. data/Gemfile +0 -4
  74. data/Gemfile.edge +0 -9
  75. data/Rakefile +0 -18
  76. data/active_model_serializers.gemspec +0 -24
  77. data/bench/perf.rb +0 -43
  78. data/cruft.md +0 -19
  79. data/lib/active_model/array_serializer.rb +0 -104
  80. data/lib/active_model/serializer/associations.rb +0 -233
  81. data/lib/active_model/serializers/version.rb +0 -5
  82. data/lib/active_record/serializer_override.rb +0 -16
  83. data/lib/generators/resource_override.rb +0 -13
  84. data/lib/generators/serializer/USAGE +0 -9
  85. data/lib/generators/serializer/serializer_generator.rb +0 -42
  86. data/lib/generators/serializer/templates/serializer.rb +0 -19
  87. data/test/array_serializer_test.rb +0 -75
  88. data/test/association_test.rb +0 -592
  89. data/test/caching_test.rb +0 -96
  90. data/test/generators_test.rb +0 -85
  91. data/test/no_serialization_scope_test.rb +0 -34
  92. data/test/serialization_scope_name_test.rb +0 -67
  93. data/test/serialization_test.rb +0 -392
  94. data/test/serializer_support_test.rb +0 -51
  95. data/test/serializer_test.rb +0 -1465
  96. data/test/test_fakes.rb +0 -217
  97. data/test/test_helper.rb +0 -32
data/test/test_fakes.rb DELETED
@@ -1,217 +0,0 @@
1
- class BasicActiveModel
2
- include ActiveModel::Serializers::JSON
3
- def initialize(hash = {})
4
- @attributes = hash
5
- end
6
-
7
- def serializable_hash(*)
8
- @attributes
9
- end
10
-
11
- def method_missing(method)
12
- if @attributes.key? method
13
- @attributes[method]
14
- else
15
- raise NoMethodError
16
- end
17
- end
18
- end
19
-
20
- class BasicSerializer < ActiveModel::Serializer
21
- attributes :name
22
- end
23
-
24
- class Model
25
- def initialize(hash={})
26
- @attributes = hash
27
- end
28
-
29
- def read_attribute_for_serialization(name)
30
- @attributes[name]
31
- end
32
-
33
- def as_json(*)
34
- { :model => "Model" }
35
- end
36
- end
37
-
38
- class User
39
- include ActiveModel::SerializerSupport
40
-
41
- attr_accessor :superuser
42
-
43
- def initialize(hash={})
44
- @attributes = hash.merge(:first_name => "Jose", :last_name => "Valim", :password => "oh noes yugive my password")
45
- end
46
-
47
- def read_attribute_for_serialization(name)
48
- @attributes[name]
49
- end
50
-
51
- def super_user?
52
- @superuser
53
- end
54
- end
55
-
56
- class Post < Model
57
- def initialize(attributes)
58
- super(attributes)
59
- self.comments ||= []
60
- self.comments_disabled = false
61
- self.author = nil
62
- end
63
-
64
- attr_accessor :comments, :comments_disabled, :author
65
- def active_model_serializer; PostSerializer; end
66
- end
67
-
68
- class Comment < Model
69
- def active_model_serializer; CommentSerializer; end
70
- end
71
-
72
- class UserSerializer < ActiveModel::Serializer
73
- attributes :first_name, :last_name
74
-
75
- def serializable_hash
76
- attributes.merge(:ok => true).merge(options[:scope])
77
- end
78
- end
79
-
80
- class UserAttributesWithKeySerializer < ActiveModel::Serializer
81
- attributes :first_name => :f_name, :last_name => :l_name
82
-
83
- def serializable_hash
84
- attributes.merge(:ok => true).merge(options[:scope])
85
- end
86
- end
87
-
88
- class UserAttributesWithSomeKeySerializer < ActiveModel::Serializer
89
- attributes :first_name, :last_name => :l_name
90
-
91
- def serializable_hash
92
- attributes.merge(:ok => true).merge(options[:scope])
93
- end
94
- end
95
-
96
- class UserAttributesWithUnsymbolizableKeySerializer < ActiveModel::Serializer
97
- attributes :first_name, :last_name => :"last-name"
98
-
99
- def serializable_hash
100
- attributes.merge(:ok => true).merge(options[:scope])
101
- end
102
- end
103
-
104
- class DefaultUserSerializer < ActiveModel::Serializer
105
- attributes :first_name, :last_name
106
- end
107
-
108
- class MyUserSerializer < ActiveModel::Serializer
109
- attributes :first_name, :last_name
110
-
111
- def serializable_hash
112
- hash = attributes
113
- hash = hash.merge(:super_user => true) if object.super_user?
114
- hash
115
- end
116
- end
117
-
118
- class CommentSerializer
119
- def initialize(comment, options={})
120
- @object = comment
121
- end
122
-
123
- attr_reader :object
124
-
125
- def serializable_hash
126
- { :title => @object.read_attribute_for_serialization(:title) }
127
- end
128
-
129
- def as_json(options=nil)
130
- options ||= {}
131
- if options[:root] == false
132
- serializable_hash
133
- else
134
- { :comment => serializable_hash }
135
- end
136
- end
137
- end
138
-
139
- class PostSerializer < ActiveModel::Serializer
140
- attributes :title, :body
141
- has_many :comments, :serializer => CommentSerializer
142
- end
143
-
144
- class PostWithConditionalCommentsSerializer < ActiveModel::Serializer
145
- root :post
146
- attributes :title, :body
147
- has_many :comments, :serializer => CommentSerializer
148
-
149
- def include_associations!
150
- include! :comments unless object.comments_disabled
151
- end
152
- end
153
-
154
- class PostWithMultipleConditionalsSerializer < ActiveModel::Serializer
155
- root :post
156
- attributes :title, :body, :author
157
- has_many :comments, :serializer => CommentSerializer
158
-
159
- def include_comments?
160
- !object.comments_disabled
161
- end
162
-
163
- def include_author?
164
- scope.super_user?
165
- end
166
- end
167
-
168
- class Blog < Model
169
- attr_accessor :author
170
- end
171
-
172
- class AuthorSerializer < ActiveModel::Serializer
173
- attributes :first_name, :last_name
174
- end
175
-
176
- class BlogSerializer < ActiveModel::Serializer
177
- has_one :author, :serializer => AuthorSerializer
178
- end
179
-
180
- class BlogWithRootSerializer < BlogSerializer
181
- root true
182
- end
183
-
184
- class CustomPostSerializer < ActiveModel::Serializer
185
- attributes :title
186
- end
187
-
188
- class CustomBlog < Blog
189
- attr_accessor :public_posts, :public_user
190
- end
191
-
192
- class CustomBlogSerializer < ActiveModel::Serializer
193
- has_many :public_posts, :key => :posts, :serializer => PostSerializer
194
- has_one :public_user, :key => :user, :serializer => UserSerializer
195
- end
196
-
197
- class SomeSerializer < ActiveModel::Serializer
198
- attributes :some
199
- end
200
-
201
- class SomeObject < Struct.new(:some)
202
- end
203
-
204
- # Set up some classes for polymorphic testing
205
- class Attachment < Model
206
- def attachable
207
- @attributes[:attachable]
208
- end
209
-
210
- def readable
211
- @attributes[:readable]
212
- end
213
-
214
- def edible
215
- @attributes[:edible]
216
- end
217
- end
data/test/test_helper.rb DELETED
@@ -1,32 +0,0 @@
1
- require "rubygems"
2
- require "bundler/setup"
3
-
4
- require "pry"
5
-
6
- require "active_model_serializers"
7
- require "active_support/json"
8
- require "minitest/autorun"
9
-
10
- require 'rails'
11
-
12
- module TestHelper
13
- Routes = ActionDispatch::Routing::RouteSet.new
14
- Routes.draw do
15
- resource :hypermedia
16
- get ':controller(/:action(/:id))'
17
- get ':controller(/:action)'
18
- end
19
-
20
- ActionController::Base.send :include, Routes.url_helpers
21
- ActiveModel::Serializer.send :include, Routes.url_helpers
22
- end
23
-
24
- ActiveSupport::TestCase.class_eval do
25
- setup do
26
- @routes = ::TestHelper::Routes
27
- end
28
- end
29
-
30
- class Object
31
- undef_method :id if respond_to?(:id)
32
- end