Sha256: 17c54818c7ce7fe13dbcc817722858a7b01432fc310b74f83d00740f3f8e7e00

Contents?: true

Size: 1.32 KB

Versions: 3

Compression:

Stored size: 1.32 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 push(actions)
        @actions += actions.to_a
      end

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

      def 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)
            break
          end
        end
      end

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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fitting-3.0.2 lib/fitting/report/actions.rb
fitting-3.0.1 lib/fitting/report/actions.rb
fitting-3.0.0 lib/fitting/report/actions.rb