Sha256: 5631ab9a8a636dba42113df0a799f927afcf9711b0a54e8b332be0fbe45234a3
Contents?: true
Size: 1.49 KB
Versions: 2
Compression:
Stored size: 1.49 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 @setups, @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) @parent.bootstrap(a_situation).each do |setup_block| run_setup(a_situation, &setup_block) end if @parent @setups 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) @setups << block run_setup(situation, &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.12 | lib/riot/context.rb |
riot-0.9.11 | lib/riot/context.rb |