test/benchmark/fixtures.rb in active_model_serializers-0.10.0 vs test/benchmark/fixtures.rb in active_model_serializers-0.10.1

- old
+ new

@@ -1,168 +1,168 @@ Rails.configuration.serializers = [] -class AuthorSerializer < ActiveModel::Serializer +class HasOneRelationshipSerializer < ActiveModel::Serializer attributes :id, :first_name, :last_name - has_many :posts, embed: :ids + has_many :primary_resources, embed: :ids has_one :bio end -Rails.configuration.serializers << AuthorSerializer +Rails.configuration.serializers << HasOneRelationshipSerializer -class BlogSerializer < ActiveModel::Serializer +class VirtualAttributeSerializer < ActiveModel::Serializer attributes :id, :name end -Rails.configuration.serializers << BlogSerializer +Rails.configuration.serializers << VirtualAttributeSerializer -class CommentSerializer < ActiveModel::Serializer - attributes :id, :body, :updated_at +class HasManyRelationshipSerializer < ActiveModel::Serializer + attributes :id, :body - belongs_to :post - belongs_to :author + belongs_to :primary_resource + belongs_to :has_one_relationship end -Rails.configuration.serializers << CommentSerializer +Rails.configuration.serializers << HasManyRelationshipSerializer -class PostSerializer < ActiveModel::Serializer +class PrimaryResourceSerializer < ActiveModel::Serializer attributes :id, :title, :body - has_many :comments, serializer: CommentSerializer - belongs_to :blog, serializer: BlogSerializer - belongs_to :author, serializer: AuthorSerializer + has_many :has_many_relationships, serializer: HasManyRelationshipSerializer + belongs_to :virtual_attribute, serializer: VirtualAttributeSerializer + belongs_to :has_one_relationship, serializer: HasOneRelationshipSerializer - link(:post_authors) { 'https://example.com/post_authors' } + link(:primary_resource_has_one_relationships) { 'https://example.com/primary_resource_has_one_relationships' } meta do { rating: 5, favorite_count: 10 } end - def blog - Blog.new(id: 999, name: 'Custom blog') + def virtual_attribute + VirtualAttribute.new(id: 999, name: 'Free-Range Virtual Attribute') end end -Rails.configuration.serializers << PostSerializer +Rails.configuration.serializers << PrimaryResourceSerializer -class CachingAuthorSerializer < AuthorSerializer +class CachingHasOneRelationshipSerializer < HasOneRelationshipSerializer cache key: 'writer', skip_digest: true end -Rails.configuration.serializers << CachingAuthorSerializer +Rails.configuration.serializers << CachingHasOneRelationshipSerializer -class CachingCommentSerializer < CommentSerializer +class CachingHasManyRelationshipSerializer < HasManyRelationshipSerializer cache expires_in: 1.day, skip_digest: true end -Rails.configuration.serializers << CachingCommentSerializer +Rails.configuration.serializers << CachingHasManyRelationshipSerializer # see https://github.com/rails-api/active_model_serializers/pull/1690/commits/68715b8f99bc29677e8a47bb3f305f23c077024b#r60344532 -class CachingPostSerializer < ActiveModel::Serializer - cache key: 'post', expires_in: 0.1, skip_digest: true +class CachingPrimaryResourceSerializer < ActiveModel::Serializer + cache key: 'primary_resource', expires_in: 0.1, skip_digest: true attributes :id, :title, :body - belongs_to :blog, serializer: BlogSerializer - belongs_to :author, serializer: CachingAuthorSerializer - has_many :comments, serializer: CachingCommentSerializer + belongs_to :virtual_attribute, serializer: VirtualAttributeSerializer + belongs_to :has_one_relationship, serializer: CachingHasOneRelationshipSerializer + has_many :has_many_relationships, serializer: CachingHasManyRelationshipSerializer - link(:post_authors) { 'https://example.com/post_authors' } + link(:primary_resource_has_one_relationships) { 'https://example.com/primary_resource_has_one_relationships' } meta do { rating: 5, favorite_count: 10 } end - def blog - Blog.new(id: 999, name: 'Custom blog') + def virtual_attribute + VirtualAttribute.new(id: 999, name: 'Free-Range Virtual Attribute') end end -Rails.configuration.serializers << CachingPostSerializer +Rails.configuration.serializers << CachingPrimaryResourceSerializer -class FragmentCachingAuthorSerializer < AuthorSerializer +class FragmentCachingHasOneRelationshipSerializer < HasOneRelationshipSerializer cache key: 'writer', only: [:first_name, :last_name], skip_digest: true end -Rails.configuration.serializers << FragmentCachingAuthorSerializer +Rails.configuration.serializers << FragmentCachingHasOneRelationshipSerializer -class FragmentCachingCommentSerializer < CommentSerializer - cache expires_in: 1.day, except: [:updated_at], skip_digest: true +class FragmentCachingHasManyRelationshipSerializer < HasManyRelationshipSerializer + cache expires_in: 1.day, except: [:body], skip_digest: true end -Rails.configuration.serializers << CachingCommentSerializer +Rails.configuration.serializers << CachingHasManyRelationshipSerializer # see https://github.com/rails-api/active_model_serializers/pull/1690/commits/68715b8f99bc29677e8a47bb3f305f23c077024b#r60344532 -class FragmentCachingPostSerializer < ActiveModel::Serializer - cache key: 'post', expires_in: 0.1, skip_digest: true +class FragmentCachingPrimaryResourceSerializer < ActiveModel::Serializer + cache key: 'primary_resource', expires_in: 0.1, skip_digest: true attributes :id, :title, :body - belongs_to :blog, serializer: BlogSerializer - belongs_to :author, serializer: FragmentCachingAuthorSerializer - has_many :comments, serializer: FragmentCachingCommentSerializer + belongs_to :virtual_attribute, serializer: VirtualAttributeSerializer + belongs_to :has_one_relationship, serializer: FragmentCachingHasOneRelationshipSerializer + has_many :has_many_relationships, serializer: FragmentCachingHasManyRelationshipSerializer - link(:post_authors) { 'https://example.com/post_authors' } + link(:primary_resource_has_one_relationships) { 'https://example.com/primary_resource_has_one_relationships' } meta do { rating: 5, favorite_count: 10 } end - def blog - Blog.new(id: 999, name: 'Custom blog') + def virtual_attribute + VirtualAttribute.new(id: 999, name: 'Free-Range Virtual Attribute') end end -Rails.configuration.serializers << FragmentCachingPostSerializer +Rails.configuration.serializers << FragmentCachingPrimaryResourceSerializer if ENV['ENABLE_ACTIVE_RECORD'] == 'true' require 'active_record' ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') ActiveRecord::Schema.define do self.verbose = false - create_table :blogs, force: true do |t| + create_table :virtual_attributes, force: true do |t| t.string :name t.timestamps null: false end - create_table :authors, force: true do |t| + create_table :has_one_relationships, force: true do |t| t.string :first_name t.string :last_name t.timestamps null: false end - create_table :posts, force: true do |t| + create_table :primary_resources, force: true do |t| t.string :title t.text :body - t.references :author - t.references :blog + t.references :has_one_relationship + t.references :virtual_attribute t.timestamps null: false end - create_table :comments, force: true do |t| + create_table :has_many_relationships, force: true do |t| t.text :body - t.references :author - t.references :post + t.references :has_one_relationship + t.references :primary_resource t.timestamps null: false end end - class Comment < ActiveRecord::Base - belongs_to :author - belongs_to :post + class HasManyRelationship < ActiveRecord::Base + belongs_to :has_one_relationship + belongs_to :primary_resource end - class Author < ActiveRecord::Base - has_many :posts - has_many :comments + class HasOneRelationship < ActiveRecord::Base + has_many :primary_resources + has_many :has_many_relationships end - class Post < ActiveRecord::Base - has_many :comments - belongs_to :author - belongs_to :blog + class PrimaryResource < ActiveRecord::Base + has_many :has_many_relationships + belongs_to :has_one_relationship + belongs_to :virtual_attribute end - class Blog < ActiveRecord::Base - has_many :posts + class VirtualAttribute < ActiveRecord::Base + has_many :primary_resources end else # ActiveModelSerializers::Model is a convenient # serializable class to inherit from when making # serializable non-activerecord objects. @@ -199,21 +199,21 @@ attributes[key] end end end - class Comment < BenchmarkModel - attr_accessor :id, :body, :updated_at + class HasManyRelationship < BenchmarkModel + attr_accessor :id, :body end - class Author < BenchmarkModel - attr_accessor :id, :first_name, :last_name, :posts + class HasOneRelationship < BenchmarkModel + attr_accessor :id, :first_name, :last_name, :primary_resources end - class Post < BenchmarkModel - attr_accessor :id, :title, :body, :comments, :blog, :author + class PrimaryResource < BenchmarkModel + attr_accessor :id, :title, :body, :has_many_relationships, :virtual_attribute, :has_one_relationship end - class Blog < BenchmarkModel + class VirtualAttribute < BenchmarkModel attr_accessor :id, :name end end