Module: AMQP::SpecHelper::GroupMethods

Defined in:
lib/amqp-spec/rspec.rb

Overview

Class methods (macros) for any example groups that includes SpecHelper. You can use these methods as macros inside describe/context block.

Instance Method Summary collapse

Instance Method Details

#amqp_after(scope = :each, &block) ⇒ Object

Add after hook that will run inside AMQP connection (AMQP.start loop)

Raises:

  • (ArgumentError)


88
89
90
91
# File 'lib/amqp-spec/rspec.rb', line 88

def amqp_after scope = :each, &block
  raise ArgumentError, "amqp_after only supports :each scope" unless :each == scope
  em_hooks[:amqp_after].unshift block
end

#amqp_before(scope = :each, &block) ⇒ Object

Add before hook that will run inside AMQP connection (AMQP.start loop)

Raises:

  • (ArgumentError)


82
83
84
85
# File 'lib/amqp-spec/rspec.rb', line 82

def amqp_before scope = :each, &block
  raise ArgumentError, "amqp_before only supports :each scope" unless :each == scope
  em_hooks[:amqp_before] << block
end

#default_options(opts = nil) ⇒ Object

Sets/retrieves default AMQP.start options for this example group and its nested groups.



63
64
65
66
67
# File 'lib/amqp-spec/rspec.rb', line 63

def default_options opts=nil
  [:em_defaults] ||= {}
  [:em_defaults][self] ||= (superclass.default_options.dup rescue {})
  [:em_defaults][self] = opts || [:em_defaults][self]
end

#default_timeout(spec_timeout = nil) ⇒ Object

Sets/retrieves default timeout for running evented specs for this example group and its nested groups.



56
57
58
# File 'lib/amqp-spec/rspec.rb', line 56

def default_timeout spec_timeout=nil
  default_options[:spec_timeout] = spec_timeout || default_options[:spec_timeout]
end

#em_after(scope = :each, &block) ⇒ Object

Add after hook that will run inside EM event loop

Raises:

  • (ArgumentError)


76
77
78
79
# File 'lib/amqp-spec/rspec.rb', line 76

def em_after scope = :each, &block
  raise ArgumentError, "em_after only supports :each scope" unless :each == scope
  em_hooks[:em_after].unshift block
end

#em_before(scope = :each, &block) ⇒ Object

Add before hook that will run inside EM event loop

Raises:

  • (ArgumentError)


70
71
72
73
# File 'lib/amqp-spec/rspec.rb', line 70

def em_before scope = :each, &block
  raise ArgumentError, "em_before only supports :each scope" unless :each == scope
  em_hooks[:em_before] << block
end

#em_hooksObject

Collection of evented hooks for THIS example group



94
95
96
97
98
99
100
101
# File 'lib/amqp-spec/rspec.rb', line 94

def em_hooks
  [:em_hooks] ||= {}
  [:em_hooks][self] ||=
      {em_before: (superclass.em_hooks[:em_before].clone rescue []),
       em_after: (superclass.em_hooks[:em_after].clone rescue []),
       amqp_before: (superclass.em_hooks[:amqp_before].clone rescue []),
       amqp_after: (superclass.em_hooks[:amqp_after].clone rescue [])}
end

#metadataObject

Hacking in metadata into RSpec1 to imitate Rspec2’s metadata. Now you can add anything to metadata Hash to pass options into examples and nested groups.



48
49
50
# File 'lib/amqp-spec/rspec.rb', line 48

def 
  @metadata ||= superclass..dup rescue {}
end