Sha256: 8a4d1c10d2ba84fac51b69ad90cc9c0cf4fd5367386f0d52ecb9e006baf67b87

Contents?: true

Size: 1.24 KB

Versions: 15

Compression:

Stored size: 1.24 KB

Contents

module Gurke
  module DSL
    def step(pattern, method_name = nil, opts = {}, &block)
      if method_name.is_a?(Hash) && opts.empty?
        method_name, opts = nil, method_name
      end

      if method_name && block_given?
        raise ArgumentError.new <<-EOF.strip
          You can either specify a method name or given a block, not both.
        EOF
      end

      _define_step(pattern, method_name, opts, &block)
    end

    def _define_step(pattern, method_name, opts, &block)
      step = StepDefinition.new(pattern, opts)

      define_method("match: #{step.method_name}") do |name, s = nil|
        step.match(name, s)
      end

      if block_given?
        define_method("#{step.method_name}", &block)
      elsif method_name
        alias_method "#{step.method_name}", method_name
      end
    end

    # rubocop:disable MethodName
    def Given(pattern, method_name = nil, opts = {}, &block)
      step pattern, method_name, opts.merge(type: :given), &block
    end

    def When(pattern, method_name = nil, opts = {}, &block)
      step pattern, method_name, opts.merge(type: :when), &block
    end

    def Then(pattern, method_name = nil, opts = {}, &block)
      step pattern, method_name, opts.merge(type: :then), &block
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
gurke-2.4.2 lib/gurke/dsl.rb
gurke-2.4.1 lib/gurke/dsl.rb
gurke-2.4.0 lib/gurke/dsl.rb
gurke-2.3.0 lib/gurke/dsl.rb
gurke-2.2.2 lib/gurke/dsl.rb
gurke-2.2.1 lib/gurke/dsl.rb
gurke-2.1.0 lib/gurke/dsl.rb
gurke-2.0.3 lib/gurke/dsl.rb
gurke-2.0.2 lib/gurke/dsl.rb
gurke-2.0.1 lib/gurke/dsl.rb
gurke-2.0.0 lib/gurke/dsl.rb
gurke-2.0.0.dev.1.b25 lib/gurke/dsl.rb
gurke-2.0.0.dev.1.b24 lib/gurke/dsl.rb
gurke-2.0.0.dev.1.b23 lib/gurke/dsl.rb
gurke-2.0.0.dev.1.b22 lib/gurke/dsl.rb