class Specifier::Context
Defines a context that can be deeply nested (evaluates from oldest to newest in ancestry).
Usage:
let "..." do # ... end it "..." do # ... end describe "..." do end
Attributes
children[RW]
description[RW]
parent[RW]
Public Class Methods
new(description, &block)
click to toggle source
# File lib/specifier/context.rb, line 33 def initialize(description, &block) @description = description @block = block @children = [] @examples = [] @definitions = [] end
setup(description, parent = nil, &block)
click to toggle source
# File lib/specifier/context.rb, line 23 def self.setup(description, parent = nil, &block) context = new(description, &block) if parent context.parent = parent parent.children << context end context.instance_eval(&block) context end
Public Instance Methods
describe(description, &block)
click to toggle source
# File lib/specifier/context.rb, line 41 def describe(description, &block) self.class.setup(description, self, &block) end
it(description, &block)
click to toggle source
# File lib/specifier/context.rb, line 51 def it(description, &block) example = Example.new(description, &block) @examples << example example end
let(name, &block)
click to toggle source
# File lib/specifier/context.rb, line 45 def let(name, &block) definition = Definition.new(name, &block) @definitions << definition definition end
run()
click to toggle source
# File lib/specifier/context.rb, line 57 def run Specifier.formatter.context(self) do @examples.each do |example| world = Specifier::World.new setup(world) result = example.run(world) Specifier.formatter.record(example, result) end @children.each(&:run) end end
setup(world)
click to toggle source
# File lib/specifier/context.rb, line 69 def setup(world) parent&.setup(world) @definitions.each do |definition| definition.define(world) end end