Sha256: 433eade2c49052ae65c56bf8a5ee8082567ee1faff7aa12e00d8d3dae32ce293

Contents?: true

Size: 1.14 KB

Versions: 28

Compression:

Stored size: 1.14 KB

Contents

module Pact
   module Consumer

      #TODO: think of a better word than filter
      class InteractionsFilter
         def initialize interactions = []
            @interactions = interactions
         end

         def index_of interaction
            @interactions.find_index{ |i| i.matches_criteria?(description: interaction.description, provider_state: interaction.provider_state)}
         end
      end

      class UpdatableInteractionsFilter < InteractionsFilter

         def << interaction
            if (ndx = index_of(interaction))
               @interactions[ndx] = interaction
            else
               @interactions << interaction
            end
         end

      end

      class DistinctInteractionsFilter < InteractionsFilter

         def << interaction
            if (ndx = index_of(interaction))
               if @interactions[ndx] != interaction
                  raise "Interaction with same description (#{interaction.description}) and provider state (#{interaction.provider_state}) already exists"
               end
            else
               @interactions << interaction
            end
         end
      end

   end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
pact-1.0.7 lib/pact/consumer/interactions_filter.rb
pact-1.0.6 lib/pact/consumer/interactions_filter.rb
pact-1.0.5 lib/pact/consumer/interactions_filter.rb
pact-1.0.4 lib/pact/consumer/interactions_filter.rb
pact-1.0.3 lib/pact/consumer/interactions_filter.rb
pact-1.0.2 lib/pact/consumer/interactions_filter.rb
pact-1.0.1 lib/pact/consumer/interactions_filter.rb
pact-1.0.0 lib/pact/consumer/interactions_filter.rb