Sha256: 53616e23429292f5c3920043337e72cf8ead1358932297e6b8f69b044f13bd07

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

require 'fitting/report/action'

module Fitting
  module Report
    class Actions
      def initialize(actions)
        @actions = []
        actions.to_a.map do |action|
          @actions.push(Fitting::Report::Action.new(action))
        end
      end

      def to_a
        @actions
      end

      def join(tests)
        tests.to_a.map do |test|
          if is_there_a_suitable_action?(test)
            cram_into_the_appropriate_action(test)
            test.mark_action
          end
        end
      end

      def is_there_a_suitable_action?(test)
        @actions.map do |action|
          return true if test.method == action.method && action.path_match(test.path)
        end

        false
      end

      def cram_into_the_appropriate_action(test)
        @actions.map do |action|
          if test.method == action.method && action.path_match(test.path)
            action.add_test(test)
            return
          end
        end
      end

      def details(prefix)
        {
            tests_without_actions: prefix.tests.without_actions,
            actions_details: @actions.map { |a| {method: a.method, path: a.path, tests_size: a.tests.size, responses: a.details} }
        }
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fitting-2.17.0 lib/fitting/report/actions.rb
fitting-2.16.1 lib/fitting/report/actions.rb
fitting-2.16.0 lib/fitting/report/actions.rb