Sha256: 21bde8b7f7f609e65a94e2a0a75cf38a99531658f8d5204706fa0a027a955d63

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

module OpalSpec
  class ExampleGroup
    @example_groups = []
    def self.example_groups
      @example_groups
    end

    @stack = []
    def self.create desc, block
      group = self.new desc, @stack.last
      @example_groups << group

      @stack << group
      group.instance_eval &block
      @stack.pop
    end

    def initialize desc, parent
      @desc     = desc.to_s
      @parent   = parent
      @examples = []

      @before_hooks = []
      @after_hooks  = []
    end

    def it desc, &block
      @examples << Example.new(self, desc, block)
    end

    def it_behaves_like(*objs)
    end

    def before type = :each, &block
      raise "unsupported before type: #{type}" unless type == :each
      @before_hooks << block
    end

    def after type = :each, &block
      raise "unsupported after type: #{type}" unless type == :each
      @after_hooks << block
    end

    def before_hooks
      @parent ? @parent.before_hooks + @before_hooks : @before_hooks
    end

    def after_hooks
      @parent ? @parent.after_hooks + @after_hooks : @after_hooks
    end

    def run runner
      runner.example_group_started self
      @examples.each { |example| example.run runner }
      runner.example_group_finished self
    end

    def description
      @parent ? "#{@parent.description} #{@desc}" : @desc
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
opal-spec-0.0.3 lib/opal/spec/example_group.rb