Sha256: 06038b0979eeb5e00082806136dc46555d9d515472c01539fff307eaebf90e51

Contents?: true

Size: 1.06 KB

Versions: 6

Compression:

Stored size: 1.06 KB

Contents

require 'fitting/report/responses'

module Fitting
  module Report
    class Action
      def initialize(action)
        @action = action
        @tests = Fitting::Report::Tests.new([])
        @responses = Fitting::Report::Responses.new(@action.responses)
      end

      def method
        @action.method
      end

      def path
        @action.path.to_s
      end

      def responses
        @responses
      end

      def add_test(test)
        @tests.push(test)
      end

      def path_match(find_path)
        regexp =~ find_path
      end

      def regexp
        return @regexp if @regexp

        str = Regexp.escape(path)
        str = str.gsub(/\\{\w+\\}/, '[^&=\/]+')
        str = "\\A#{str}\\z"
        @regexp = Regexp.new(str)
      end

      def tests
        @tests
      end

      def details
        {
            tests_without_responses: @tests.without_responses,
            responses_details: @responses.to_a.map { |r| {method: r.status, tests_size: r.tests.size, json_schema: r.id, combinations: r.details} }
        }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
fitting-2.17.0 lib/fitting/report/action.rb
fitting-2.16.1 lib/fitting/report/action.rb
fitting-2.16.0 lib/fitting/report/action.rb
fitting-2.15.0 lib/fitting/report/action.rb
fitting-2.14.1 lib/fitting/report/action.rb
fitting-2.14.0 lib/fitting/report/action.rb