Sha256: e1c035b366b67cecae18c2b98d0a18d369a1a42f7c09a1dbec23706da5992974
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
module Riot class Context # The protein attr_reader :description, :assertions, :situation def initialize(description, reporter, parent=nil, &context_block) @description, @reporter, @parent = description, reporter, parent @assertions = [] @situation = Situation.new bootstrap(@situation) instance_eval(&context_block) if block_given? # running the context report end # Walk it out. Call setup from parent first def bootstrap(a_situation) run_setup(a_situation, &@parent.bootstrap(a_situation)) if @parent @setup end def report assertions.each { |assertion| @reporter.process_assertion(assertion) } end def to_s; @to_s ||= [@parent.to_s, @description].join(' ').strip; end # DSLee stuff def setup(&block) run_setup(situation, &(@setup = block)) end def context(description, &block) Context.new(description, @reporter, self, &block); end def asserts(what, &block) add_assertion("asserts #{what}", &block); end def should(what, &block) add_assertion("should #{what}", &block); end def topic; asserts("topic") { topic }; end private def add_assertion(what, &block) (assertions << Assertion.new("#{to_s} #{what}", @situation, &block)).last end def run_setup(a_situation, &setup_block) a_situation.topic = a_situation.instance_eval(&setup_block) if setup_block end end # Context end # Riot
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
riot-0.9.10 | lib/riot/context.rb |
riot-0.9.9 | lib/riot/context.rb |