alchemy-json_api 0.15.0 → 0.20.0
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/app/controllers/alchemy/json_api/pages_controller.rb +1 -0
- data/app/serializers/alchemy/json_api/element_serializer.rb +5 -0
- data/app/serializers/alchemy/json_api/essence_audio_serializer.rb +40 -0
- data/app/serializers/alchemy/json_api/essence_headline_serializer.rb +13 -0
- data/app/serializers/alchemy/json_api/essence_video_serializer.rb +42 -0
- data/app/serializers/alchemy/json_api/ingredient_audio_serializer.rb +40 -0
- data/app/serializers/alchemy/json_api/ingredient_boolean_serializer.rb +11 -0
- data/app/serializers/alchemy/json_api/ingredient_datetime_serializer.rb +11 -0
- data/app/serializers/alchemy/json_api/ingredient_file_serializer.rb +35 -0
- data/app/serializers/alchemy/json_api/ingredient_headline_serializer.rb +13 -0
- data/app/serializers/alchemy/json_api/ingredient_html_serializer.rb +11 -0
- data/app/serializers/alchemy/json_api/ingredient_link_serializer.rb +17 -0
- data/app/serializers/alchemy/json_api/ingredient_node_serializer.rb +35 -0
- data/app/serializers/alchemy/json_api/ingredient_page_serializer.rb +25 -0
- data/app/serializers/alchemy/json_api/ingredient_picture_serializer.rb +60 -0
- data/app/serializers/alchemy/json_api/ingredient_richtext_serializer.rb +18 -0
- data/app/serializers/alchemy/json_api/ingredient_select_serializer.rb +11 -0
- data/app/serializers/alchemy/json_api/ingredient_text_serializer.rb +22 -0
- data/app/serializers/alchemy/json_api/ingredient_video_serializer.rb +42 -0
- data/lib/alchemy/json_api/ingredient_serializer.rb +22 -0
- data/lib/alchemy/json_api/test_support/ingredient_serializer_behaviour.rb +33 -0
- data/lib/alchemy/json_api/version.rb +1 -1
- metadata +21 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3935cd3e895377d3abf8138b854c6aa54148da1a77d7fd7c9942b59a467117d9
         | 
| 4 | 
            +
              data.tar.gz: 9c2c96ba95625c68e186558a5316eedf087d375784026d50ef93a7e4f2e4edec
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: fceba1d386c35489b4145a0becdffccdd4f00614546b15781038df613b5dea27d5dad7104ff00ad2920f52728ddb729f184d40b97542b36d96c2b05b0fb77216
         | 
| 7 | 
            +
              data.tar.gz: f01bfc78e0d1911abf74666a4b8f19a6e0288d287125f0072364263c8450038b4bf6b8a808bdab65ed49c8265fdcdb9db2df883f60674707298e173144e11992
         | 
| @@ -20,6 +20,11 @@ module Alchemy | |
| 20 20 | 
             
                    element.contents.map(&:essence)
         | 
| 21 21 | 
             
                  end
         | 
| 22 22 |  | 
| 23 | 
            +
                  has_many :ingredients,
         | 
| 24 | 
            +
                    serializer: ->(record) do
         | 
| 25 | 
            +
                      "Alchemy::JsonApi::Ingredient#{record.type.demodulize}Serializer".constantize
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 23 28 | 
             
                  has_many :nested_elements, record_type: :element, serializer: self
         | 
| 24 29 | 
             
                end
         | 
| 25 30 | 
             
              end
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/essence_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class EssenceAudioSerializer
         | 
| 8 | 
            +
                  include EssenceSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :autoplay,
         | 
| 12 | 
            +
                    :controls,
         | 
| 13 | 
            +
                    :muted,
         | 
| 14 | 
            +
                    :loop,
         | 
| 15 | 
            +
                  )
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  attribute :ingredient do |essence|
         | 
| 18 | 
            +
                    essence.attachment&.url
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  with_options if: ->(essence) { essence.attachment } do
         | 
| 22 | 
            +
                    attribute :audio_name do |essence|
         | 
| 23 | 
            +
                      essence.attachment.name
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    attribute :audio_file_name do |essence|
         | 
| 27 | 
            +
                      essence.attachment.file_name
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    attribute :audio_mime_type do |essence|
         | 
| 31 | 
            +
                      essence.attachment.file_mime_type
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    attribute :audio_file_size do |essence|
         | 
| 35 | 
            +
                      essence.attachment.file_size
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/essence_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class EssenceVideoSerializer
         | 
| 8 | 
            +
                  include EssenceSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :width,
         | 
| 12 | 
            +
                    :height,
         | 
| 13 | 
            +
                    :allow_fullscreen,
         | 
| 14 | 
            +
                    :autoplay,
         | 
| 15 | 
            +
                    :controls,
         | 
| 16 | 
            +
                    :preload,
         | 
| 17 | 
            +
                  )
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  attribute :ingredient do |essence|
         | 
| 20 | 
            +
                    essence.attachment&.url
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  with_options if: ->(essence) { essence.attachment } do
         | 
| 24 | 
            +
                    attribute :video_name do |essence|
         | 
| 25 | 
            +
                      essence.attachment.name
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    attribute :video_file_name do |essence|
         | 
| 29 | 
            +
                      essence.attachment.file_name
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    attribute :video_mime_type do |essence|
         | 
| 33 | 
            +
                      essence.attachment.file_mime_type
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    attribute :video_file_size do |essence|
         | 
| 37 | 
            +
                      essence.attachment.file_size
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
| @@ -0,0 +1,40 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientAudioSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :autoplay,
         | 
| 12 | 
            +
                    :controls,
         | 
| 13 | 
            +
                    :muted,
         | 
| 14 | 
            +
                    :loop,
         | 
| 15 | 
            +
                  )
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  attribute :value do |ingredient|
         | 
| 18 | 
            +
                    ingredient.attachment&.url
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  with_options if: ->(ingredient) { ingredient.attachment } do
         | 
| 22 | 
            +
                    attribute :audio_name do |ingredient|
         | 
| 23 | 
            +
                      ingredient.attachment.name
         | 
| 24 | 
            +
                    end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    attribute :audio_file_name do |ingredient|
         | 
| 27 | 
            +
                      ingredient.attachment.file_name
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    attribute :audio_mime_type do |ingredient|
         | 
| 31 | 
            +
                      ingredient.attachment.file_mime_type
         | 
| 32 | 
            +
                    end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                    attribute :audio_file_size do |ingredient|
         | 
| 35 | 
            +
                      ingredient.attachment.file_size
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientFileSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attribute :link_title, &:title
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  attribute :value do |ingredient|
         | 
| 13 | 
            +
                    ingredient.attachment&.url
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  with_options if: proc { |ingredient| ingredient.attachment } do
         | 
| 17 | 
            +
                    attribute :attachment_name do |ingredient|
         | 
| 18 | 
            +
                      ingredient.attachment.name
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    attribute :attachment_file_name do |ingredient|
         | 
| 22 | 
            +
                      ingredient.attachment.file_name
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    attribute :attachment_mime_type do |ingredient|
         | 
| 26 | 
            +
                      ingredient.attachment.file_mime_type
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    attribute :attachment_file_size do |ingredient|
         | 
| 30 | 
            +
                      ingredient.attachment.file_size
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientLinkSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :link_class_name,
         | 
| 12 | 
            +
                    :link_target,
         | 
| 13 | 
            +
                    :link_title
         | 
| 14 | 
            +
                  )
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientNodeSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attribute :value do |ingredient|
         | 
| 11 | 
            +
                    ingredient.node&.name
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  belongs_to :node, record_type: :node, serializer: ::Alchemy::JsonApi::NodeSerializer
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  with_options if: proc { |ingredient| ingredient.node } do
         | 
| 17 | 
            +
                    attribute :name do |ingredient|
         | 
| 18 | 
            +
                      ingredient.node.name
         | 
| 19 | 
            +
                    end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                    attribute :link_url do |ingredient|
         | 
| 22 | 
            +
                      ingredient.node.url
         | 
| 23 | 
            +
                    end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                    attribute :link_title do |ingredient|
         | 
| 26 | 
            +
                      ingredient.node.title
         | 
| 27 | 
            +
                    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                    attribute :link_nofollow do |ingredient|
         | 
| 30 | 
            +
                      ingredient.node.nofollow
         | 
| 31 | 
            +
                    end
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
            end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientPageSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attribute :value do |ingredient|
         | 
| 11 | 
            +
                    ingredient.page&.url_path
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  attribute :page_name do |ingredient|
         | 
| 15 | 
            +
                    ingredient.page&.name
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  attribute :page_url do |ingredient|
         | 
| 19 | 
            +
                    ingredient.page&.url_path
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  has_one :page, record_type: :page, serializer: ::Alchemy::JsonApi::PageSerializer
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -0,0 +1,60 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientPictureSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :title,
         | 
| 12 | 
            +
                    :caption,
         | 
| 13 | 
            +
                    :link_class_name,
         | 
| 14 | 
            +
                    :link_title,
         | 
| 15 | 
            +
                    :link_target,
         | 
| 16 | 
            +
                  )
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  attribute :value do |ingredient|
         | 
| 19 | 
            +
                    ingredient.picture&.url
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  attribute :alt_text, &:alt_tag
         | 
| 23 | 
            +
                  attribute :link_url, &:link
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  with_options if: proc { |ingredient| ingredient.picture.present? } do
         | 
| 26 | 
            +
                    attribute :image_dimensions do |ingredient|
         | 
| 27 | 
            +
                      sizes = ingredient.settings[:size]&.split("x", 2)&.map(&:to_i) || [
         | 
| 28 | 
            +
                        ingredient.image_file_width,
         | 
| 29 | 
            +
                        ingredient.image_file_height,
         | 
| 30 | 
            +
                      ]
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                      ratio = ingredient.image_file_width.to_f / ingredient.image_file_height
         | 
| 33 | 
            +
                      width = sizes[0].zero? ? sizes[1] * ratio : sizes[0]
         | 
| 34 | 
            +
                      height = sizes[1].zero? ? sizes[0] / ratio : sizes[1]
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                      {
         | 
| 37 | 
            +
                        width: width,
         | 
| 38 | 
            +
                        height: height,
         | 
| 39 | 
            +
                      }
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    attribute :image_name do |ingredient|
         | 
| 43 | 
            +
                      ingredient.picture.name
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                    attribute :image_file_name do |ingredient|
         | 
| 47 | 
            +
                      ingredient.picture.image_file_name
         | 
| 48 | 
            +
                    end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                    attribute :image_mime_type do |ingredient|
         | 
| 51 | 
            +
                      "image/#{ingredient.picture.image_file_format}"
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    attribute :image_file_size do |ingredient|
         | 
| 55 | 
            +
                      ingredient.picture.image_file_size
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
            end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientRichtextSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :sanitized_body,
         | 
| 12 | 
            +
                    :stripped_body,
         | 
| 13 | 
            +
                  )
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  attribute :body, &:value
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientTextSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :link,
         | 
| 12 | 
            +
                    :link_class_name,
         | 
| 13 | 
            +
                    :link_target,
         | 
| 14 | 
            +
                    :link_title,
         | 
| 15 | 
            +
                  )
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  # maintain compatibility with EssenceText
         | 
| 18 | 
            +
                  attribute :body, &:value
         | 
| 19 | 
            +
                  attribute :link_url, &:link
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "alchemy/json_api/ingredient_serializer"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Alchemy
         | 
| 6 | 
            +
              module JsonApi
         | 
| 7 | 
            +
                class IngredientVideoSerializer
         | 
| 8 | 
            +
                  include IngredientSerializer
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  attributes(
         | 
| 11 | 
            +
                    :width,
         | 
| 12 | 
            +
                    :height,
         | 
| 13 | 
            +
                    :allow_fullscreen,
         | 
| 14 | 
            +
                    :autoplay,
         | 
| 15 | 
            +
                    :controls,
         | 
| 16 | 
            +
                    :preload,
         | 
| 17 | 
            +
                  )
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  attribute :value do |ingredient|
         | 
| 20 | 
            +
                    ingredient.attachment&.url
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  with_options if: ->(ingredient) { ingredient.attachment } do
         | 
| 24 | 
            +
                    attribute :video_name do |ingredient|
         | 
| 25 | 
            +
                      ingredient.attachment.name
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    attribute :video_file_name do |ingredient|
         | 
| 29 | 
            +
                      ingredient.attachment.file_name
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    attribute :video_mime_type do |ingredient|
         | 
| 33 | 
            +
                      ingredient.attachment.file_mime_type
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    attribute :video_file_size do |ingredient|
         | 
| 37 | 
            +
                      ingredient.attachment.file_size
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
                end
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Alchemy
         | 
| 4 | 
            +
              module JsonApi
         | 
| 5 | 
            +
                module IngredientSerializer
         | 
| 6 | 
            +
                  def self.included(klass)
         | 
| 7 | 
            +
                    klass.include JSONAPI::Serializer
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    klass.has_one :element, record_type: :element, serializer: ::Alchemy::JsonApi::ElementSerializer
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    klass.attributes(
         | 
| 12 | 
            +
                      :role,
         | 
| 13 | 
            +
                      :value,
         | 
| 14 | 
            +
                      :created_at,
         | 
| 15 | 
            +
                      :updated_at
         | 
| 16 | 
            +
                    )
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                    klass.attribute :deprecated, &:deprecated?
         | 
| 19 | 
            +
                  end
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            RSpec.shared_examples "an ingredient serializer" do
         | 
| 4 | 
            +
              describe "attributes" do
         | 
| 5 | 
            +
                subject { serializer.serializable_hash[:data][:attributes] }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                it "has the right keys and values" do
         | 
| 8 | 
            +
                  expect(subject).to have_key(:role)
         | 
| 9 | 
            +
                  expect(subject).to have_key(:value)
         | 
| 10 | 
            +
                  expect(subject).to have_key(:created_at)
         | 
| 11 | 
            +
                  expect(subject).to have_key(:updated_at)
         | 
| 12 | 
            +
                  expect(subject[:deprecated]).to be(false)
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                context "a deprecated ingredient" do
         | 
| 16 | 
            +
                  before do
         | 
| 17 | 
            +
                    expect(ingredient).to receive(:deprecated?) { true }
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  it "has deprecated attribute set to true" do
         | 
| 21 | 
            +
                    expect(subject[:deprecated]).to eq(true)
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              describe "relationships" do
         | 
| 27 | 
            +
                subject { serializer.serializable_hash[:data][:relationships] }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                it "has one element" do
         | 
| 30 | 
            +
                  expect(subject[:element]).to eq(data: { id: ingredient.element_id.to_s, type: :element })
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: alchemy-json_api
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.20.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Martin Meyerhoff
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-07-07 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: alchemy_cms
         | 
| @@ -131,9 +131,11 @@ files: | |
| 131 131 | 
             
            - app/controllers/alchemy/json_api/pages_controller.rb
         | 
| 132 132 | 
             
            - app/models/alchemy/json_api/page.rb
         | 
| 133 133 | 
             
            - app/serializers/alchemy/json_api/element_serializer.rb
         | 
| 134 | 
            +
            - app/serializers/alchemy/json_api/essence_audio_serializer.rb
         | 
| 134 135 | 
             
            - app/serializers/alchemy/json_api/essence_boolean_serializer.rb
         | 
| 135 136 | 
             
            - app/serializers/alchemy/json_api/essence_date_serializer.rb
         | 
| 136 137 | 
             
            - app/serializers/alchemy/json_api/essence_file_serializer.rb
         | 
| 138 | 
            +
            - app/serializers/alchemy/json_api/essence_headline_serializer.rb
         | 
| 137 139 | 
             
            - app/serializers/alchemy/json_api/essence_html_serializer.rb
         | 
| 138 140 | 
             
            - app/serializers/alchemy/json_api/essence_link_serializer.rb
         | 
| 139 141 | 
             
            - app/serializers/alchemy/json_api/essence_node_serializer.rb
         | 
| @@ -142,6 +144,21 @@ files: | |
| 142 144 | 
             
            - app/serializers/alchemy/json_api/essence_richtext_serializer.rb
         | 
| 143 145 | 
             
            - app/serializers/alchemy/json_api/essence_select_serializer.rb
         | 
| 144 146 | 
             
            - app/serializers/alchemy/json_api/essence_text_serializer.rb
         | 
| 147 | 
            +
            - app/serializers/alchemy/json_api/essence_video_serializer.rb
         | 
| 148 | 
            +
            - app/serializers/alchemy/json_api/ingredient_audio_serializer.rb
         | 
| 149 | 
            +
            - app/serializers/alchemy/json_api/ingredient_boolean_serializer.rb
         | 
| 150 | 
            +
            - app/serializers/alchemy/json_api/ingredient_datetime_serializer.rb
         | 
| 151 | 
            +
            - app/serializers/alchemy/json_api/ingredient_file_serializer.rb
         | 
| 152 | 
            +
            - app/serializers/alchemy/json_api/ingredient_headline_serializer.rb
         | 
| 153 | 
            +
            - app/serializers/alchemy/json_api/ingredient_html_serializer.rb
         | 
| 154 | 
            +
            - app/serializers/alchemy/json_api/ingredient_link_serializer.rb
         | 
| 155 | 
            +
            - app/serializers/alchemy/json_api/ingredient_node_serializer.rb
         | 
| 156 | 
            +
            - app/serializers/alchemy/json_api/ingredient_page_serializer.rb
         | 
| 157 | 
            +
            - app/serializers/alchemy/json_api/ingredient_picture_serializer.rb
         | 
| 158 | 
            +
            - app/serializers/alchemy/json_api/ingredient_richtext_serializer.rb
         | 
| 159 | 
            +
            - app/serializers/alchemy/json_api/ingredient_select_serializer.rb
         | 
| 160 | 
            +
            - app/serializers/alchemy/json_api/ingredient_text_serializer.rb
         | 
| 161 | 
            +
            - app/serializers/alchemy/json_api/ingredient_video_serializer.rb
         | 
| 145 162 | 
             
            - app/serializers/alchemy/json_api/language_serializer.rb
         | 
| 146 163 | 
             
            - app/serializers/alchemy/json_api/node_serializer.rb
         | 
| 147 164 | 
             
            - app/serializers/alchemy/json_api/page_serializer.rb
         | 
| @@ -149,7 +166,9 @@ files: | |
| 149 166 | 
             
            - lib/alchemy/json_api.rb
         | 
| 150 167 | 
             
            - lib/alchemy/json_api/engine.rb
         | 
| 151 168 | 
             
            - lib/alchemy/json_api/essence_serializer.rb
         | 
| 169 | 
            +
            - lib/alchemy/json_api/ingredient_serializer.rb
         | 
| 152 170 | 
             
            - lib/alchemy/json_api/test_support/essence_serializer_behaviour.rb
         | 
| 171 | 
            +
            - lib/alchemy/json_api/test_support/ingredient_serializer_behaviour.rb
         | 
| 153 172 | 
             
            - lib/alchemy/json_api/version.rb
         | 
| 154 173 | 
             
            - lib/tasks/alchemy/json_api_tasks.rake
         | 
| 155 174 | 
             
            homepage: https://github.com/AlchemyCMS/alchemy-json_api
         |