active_model_serializers 0.8.0 → 0.10.12

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