Sha256: dc5b26f5087be2f16134db84fed8ee8256679e02b2978cf65e7514444a90b9aa

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 KB

Contents

module Isomorfeus
  module Operation
    module Mixin
      def procedure(gherkin_text)
        feature_line = gherkin_text.include?('Operation: ') ? '' : "Operation: #{self.name}\n"
        scenario_line = feature_line == '' || gherkin_text.include?('Procedure: ') ? '' : "  Procedure: #{self.name} executing\n"
        @procedure = feature_line + scenario_line + gherkin_text
      end

      def gherkin
        @gherkin ||= Isomorfeus::Operation::Gherkin.parse(@procedure)
      end

      def ensure_steps
        @ensure_steps ||= []
      end

      def failure_steps
        @failure_steps ||= []
      end

      def steps
        @steps ||= []
      end

      def First(regular_expression, &block)
        raise "#{self}: First already defined, can only be defined once!" if @first_defined
        @first_defined = true
        steps << [regular_expression, block]
      end

      def Given(regular_expression, &block)
        steps << [regular_expression, block]
      end
      alias :And :Given
      alias :Then :Given
      alias :When :Given

      def Finally(regular_expression, &block)
        raise "#{self}: Finally already defined, can only be defined once!" if @finally_defined
        @finally_defined = true
        steps << [regular_expression, block]
      end

      def Ensure(regular_expression, &block)
        ensure_steps << [regular_expression, block]
      end

      def Failed(regular_expression, &block)
        failure_steps << [regular_expression, block]
      end
      alias :If_failing :Failed
      alias :When_failing :Failed
      alias :If_this_failed :Failed
      alias :If_that_failed :Failed
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
isomorfeus-operation-1.0.0.epsilon1 lib/isomorfeus/operation/mixin.rb
isomorfeus-operation-1.0.0.delta12 lib/isomorfeus/operation/mixin.rb
isomorfeus-operation-1.0.0.delta11 lib/isomorfeus/operation/mixin.rb