Sha256: 99f9f5f657d1c2ac43f14a28edcf8bd0aef93d7976cb77e94ba824970df00bcb
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
require "testable/situation" module Testable module Ready include Situation module ClassMethods def ready_validations if superclass.respond_to?(:ready_validations) superclass.ready_validations + _ready_validations else _ready_validations end end def page_ready(&block) _ready_validations << block end alias page_ready_when page_ready def _ready_validations @_ready_validations ||= [] end end attr_accessor :ready, :ready_error def self.included(caller) caller.extend(ClassMethods) end def when_ready(&_block) already_marked_ready = ready no_ready_check_possible unless block_given? self.ready = ready? not_ready_validation(ready_error || 'NO REASON PROVIDED') unless ready yield self ensure self.ready = already_marked_ready end def ready? self.ready_error = nil return true if ready ready_validations_pass? end def ready_validations_pass? self.class.ready_validations.all? do |validation| passed, message = instance_eval(&validation) self.ready_error = message if message && !passed passed end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
testable-0.3.0 | lib/testable/ready.rb |