Sha256: 8077228f16294769b227ea520a20a9de5042a7f151579fa24603165c2901a0ef

Contents?: true

Size: 1.35 KB

Versions: 8

Compression:

Stored size: 1.35 KB

Contents

require 'fitting/report/combinations'
require 'fitting/report/combination'
require 'fitting/cover/json_schema'
require 'fitting/cover/json_schema_enum'
require 'fitting/cover/json_schema_one_of'

module Fitting
  module Report
    class Response
      def initialize(response)
        @response = response
        @id = SecureRandom.hex
        @cover = false
      end

      def cover?
        @cover
      end

      def cover!
        @cover = true
      end

      def status
        @response['status'] || @response[:status]
      end

      def body
        @response['body'] || @response[:body]
      end

      attr_reader :id, :tests

      def combinations
        return @combinations if @combinations

        cmbntns = []
        combinations = Fitting::Cover::JSONSchema.new(body).combi +
                       Fitting::Cover::JSONSchemaEnum.new(body).combi +
                       Fitting::Cover::JSONSchemaOneOf.new(body).combi
        if combinations != []
          combinations.map do |combination|
            cmbntns.push(
              Fitting::Report::Combination.new(
                json_schema: combination[0],
                type: combination[1][0],
                combination: combination[1][1]
              )
            )
          end
        end

        @combinations = Fitting::Report::Combinations.new(cmbntns)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
fitting-4.2.1 lib/fitting/report/response.rb
fitting-4.2.0 lib/fitting/report/response.rb
fitting-4.1.0 lib/fitting/report/response.rb
fitting-4.0.4 lib/fitting/report/response.rb
fitting-4.0.3 lib/fitting/report/response.rb
fitting-4.0.2 lib/fitting/report/response.rb
fitting-4.0.1 lib/fitting/report/response.rb
fitting-4.0.0 lib/fitting/report/response.rb