Sha256: ba81706cc58d72dbd6359a7b07d29384efabdbb1f85fc8289eb3c49477dce18c

Contents?: true

Size: 1.32 KB

Versions: 21

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module WCC::Contentful::Test::Attributes
  DEFAULTS = {
    String: 'test',
    Int: 0,
    Float: 0.0,
    DateTime: Time.at(0).to_s,
    Boolean: false,
    Json: ->(_f) { {} },
    Coordinates: ->(_f) { {} },
    Asset: ->(f) {
             WCC::Contentful::Link.new(
               "fake-#{f.name}-#{SecureRandom.urlsafe_base64[1..6]}",
               :Asset
             ).raw
           },
    Link: ->(f) {
            WCC::Contentful::Link.new(
              "fake-#{f.name}-#{SecureRandom.urlsafe_base64[1..6]}",
              :Link
            ).raw
          }
  }.freeze

  class << self
    def [](key)
      DEFAULTS[key]
    end

    ##
    # Get a hash of default values for all attributes unique to the given Contentful model.
    def defaults(const)
      const.content_type_definition.fields.each_with_object({}) do |(name, f), h|
        h[name.to_sym] = h[name.underscore.to_sym] = default_value(f)
      end
    end

    ##
    # Gets the default value for a contentful IndexedRepresentation::Field.
    # This comes from the 'content_type_definition' of a contentful model class.
    def default_value(field)
      return [] if field.array
      return unless field.required

      val = DEFAULTS[field.type]
      return val.call(field) if val.respond_to?(:call)

      val
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
wcc-contentful-1.7.2 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.7.1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.7.0 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.6.2 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.6.1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.6.0 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.5.1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.5.0 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.5.0.rc1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.4.0 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.4.0.rc3 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.4.0.rc2 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.3.2 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.4.0.rc1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.3.1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.3.0 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.2.1 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.2.0 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.1.2 lib/wcc/contentful/test/attributes.rb
wcc-contentful-1.1.1 lib/wcc/contentful/test/attributes.rb