Module: Remarkable::Pending
- Defined in:
- lib/remarkable/pending.rb
Class Method Summary collapse
-
.extended(base) ⇒ Object
We cannot put the alias method in the module because it’s a Ruby 1.8 bug coderrr.wordpress.com/2008/03/28/alias_methodmodule-bug-in-ruby-18/.
Instance Method Summary collapse
-
#example_with_pending(description = nil, options = {}, backtrace = nil, &implementation) ⇒ Object
:nodoc:.
-
#pending(*args, &block) ⇒ Object
Adds a pending block to your specs.
Class Method Details
.extended(base) ⇒ Object
We cannot put the alias method in the module because it’s a Ruby 1.8 bug coderrr.wordpress.com/2008/03/28/alias_methodmodule-bug-in-ruby-18/
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/remarkable/pending.rb', line 8 def self.extended(base) #:nodoc: if base.respond_to?(:example) class << base alias_method :example_without_pending, :example alias_method :example, :example_with_pending alias :it :example alias :specify :example end end end |
Instance Method Details
#example_with_pending(description = nil, options = {}, backtrace = nil, &implementation) ⇒ Object
:nodoc:
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/remarkable/pending.rb', line 49 def example_with_pending(description=nil, ={}, backtrace=nil, &implementation) #:nodoc: if block_given? && @_pending_group pending_caller = caller.detect{ |c| c !~ /method_missing'/ } pending_description = @_pending_group_description pending_block = if @_pending_group_execute proc{ pending(pending_description){ self.instance_eval(&implementation) } } else proc{ pending(pending_description) } end example_without_pending(description, , backtrace || pending_caller, &pending_block) else example_without_pending(description, , backtrace || caller(0)[1], &implementation) end end |
#pending(*args, &block) ⇒ Object
Adds a pending block to your specs.
Examples
pending 'create manager resource' do
should_have_one :manager
should_validate_associated :manager
end
By default, it executes the examples inside the pending block. So as soon as you add the has_one :manager relationship to your model, your specs will say that this was already fixed and there is no need to be treated as pending. To disable this behavior, you can give :execute => false:
pending 'create manager resource', :execute => false
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/remarkable/pending.rb', line 35 def pending(*args, &block) = { :execute => true }.merge(args.) @_pending_group = true @_pending_group_description = args.first || "TODO" @_pending_group_execute = .delete(:execute) self.instance_eval(&block) @_pending_group = false @_pending_group_description = nil @_pending_group_execute = nil end |