active_model_serializers 0.8.0 → 0.10.12

Sign up to get free protection for your applications and to get access to all the features.
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