Sha256: 1fe57df2ceee040b18e2b8e52de59fea6881615bc445f64c52ec5fc4f304d0fe

Contents?: true

Size: 852 Bytes

Versions: 2

Compression:

Stored size: 852 Bytes

Contents

# frozen_string_literal: true

require 'api-tester/definition/fields/field'

module ApiTester
  # Class used for defining array fields
  class ArrayField < Field
    attr_accessor :fields

    def initialize(name:, required: false, has_key: true)
      super name: name, required: required, has_key: has_key
      self.fields = []
    end

    def with_field(new_field)
      fields << new_field
      self
    end

    def subfields?
      true
    end

    def type
      'array'
    end

    def default
      return [] if fields.size.zero?

      obj = {}
      fields.each do |field|
        obj[field.name] = field.default
      end
      [obj]
    end

    def negative_boundary_values
      super +
        [
          'string',
          123,
          0,
          1,
          true,
          false,
          {}
        ]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
api-tester-1.1.3 lib/api-tester/definition/fields/array_field.rb
api-tester-1.1.2 lib/api-tester/definition/fields/array_field.rb