class Tengu::ItBlock

Attributes

description[R]
expectations[R]

Public Class Methods

new(describe_block, description, block) click to toggle source
# File lib/tengu/it_block.rb, line 11
def initialize(describe_block, description, block)
  @describe_block = describe_block
  @description = description
  @block = block
  @success = true
  @pending = false
  @expectations = []
  @error = nil
end

Public Instance Methods

errored?() click to toggle source
# File lib/tengu/it_block.rb, line 32
def errored?
  @error
end
pending?() click to toggle source
# File lib/tengu/it_block.rb, line 42
def pending?
  @pending
end
run(listeners = []) click to toggle source
# File lib/tengu/it_block.rb, line 21
def run(listeners = [])
  @listeners = listeners
  begin
    instance_eval(&@block)
  rescue Exception => e
    @error = e
    @success = false
  end
  notify(@listeners)
end
success?() click to toggle source
# File lib/tengu/it_block.rb, line 36
def success?
  unless pending? || errored?
    @expectations.all? { |expectation| expectation.success? }
  end
end

Private Instance Methods

allow(object) click to toggle source
# File lib/tengu/it_block.rb, line 48
def allow(object)
  Allow.new(@listeners, object)
end
double(identifier = nil, args = {}) click to toggle source
# File lib/tengu/it_block.rb, line 56
def double(identifier = nil, args = {})
  Double.new(identifier, args)
end
expect(object) click to toggle source
# File lib/tengu/it_block.rb, line 82
def expect(object)
  expectation = Expectation.new(object)
  @expectations << expectation
  expectation
end
method_missing(method, *args, &block) click to toggle source
# File lib/tengu/it_block.rb, line 88
def method_missing(method, *args, &block)
  @describe_block.send(method, *args, &block)
end
notify(listeners) click to toggle source
# File lib/tengu/it_block.rb, line 60
def notify(listeners)
  listeners.each do |listener|
    listener.notify(success_state, self)
    listener.notify(:finished_case, self)
  end
end
pending() click to toggle source
# File lib/tengu/it_block.rb, line 77
def pending
  @success = false
  @pending = true
end
receive(message) click to toggle source
# File lib/tengu/it_block.rb, line 52
def receive(message)
  Receiver.new(message)
end
success_state() click to toggle source
# File lib/tengu/it_block.rb, line 67
def success_state
  if pending?
    :pending
  elsif success?
    :success
  else
    :failure
  end
end