Sha256: c67e137e310e04b280b84fb77209f641f5a7c90e9db158243f74e4169992b90a

Contents?: true

Size: 1.3 KB

Versions: 3

Compression:

Stored size: 1.3 KB

Contents

module Fitting
  class Statistics
    class List
      def initialize(coverage, max_response_path, depth)
        @coverage = coverage
        @max_response_path = max_response_path
        @depth = depth
      end

      def to_s
        list_sort.inject([]) do |res, request|
          res.push("#{request.method}\t#{request.path}#{responses_stat(request)}")
        end.join("\n")
      end

      def list_sort
        @coverage.sort do |first, second|
          first.path.to_s <=> second.path.to_s
        end
      end

      def responses_stat(request)
        tab = "\t" * ((@max_response_path - request.path.to_s.size / 8) + 3)
        tab + request.responses.to_a.each_with_object([]) do |response, res|
          response_stat(response, res)
        end.join(' ')
      end

      private

      def response_stat(response, res)
        response.json_schemas.map do |json_schema|
          json_schema_stat(res, json_schema, response)
        end
      end

      def json_schema_stat(res, json_schema, response)
        if @depth == 'valid'
          if json_schema.bodies == []
            res.push("✖ #{response.status}")
          else
            res.push("✔ #{response.status}")
          end
        else
          res.push("#{json_schema.cover}% #{response.status}")
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fitting-2.7.2 lib/fitting/statistics/list.rb
fitting-2.7.1 lib/fitting/statistics/list.rb
fitting-2.7.0 lib/fitting/statistics/list.rb