class Pact::Provider::State::ProviderState
Attributes
Public Class Methods
Source
# File lib/pact/provider/state/provider_state.rb, line 74 def initialize name, namespace, &block @name = name @namespace = namespace @set_up_defined = false @tear_down_defined = false @no_op_defined = false end
Public Instance Methods
Source
# File lib/pact/provider/state/provider_state.rb, line 101 def finalize validate end
Source
# File lib/pact/provider/state/provider_state.rb, line 91 def no_op self.register_no_op end
Source
# File lib/pact/provider/state/provider_state.rb, line 96 def register ProviderStates.register(namespaced(name), self) self end
Source
# File lib/pact/provider/state/provider_state.rb, line 115 def register_no_op @no_op_defined = true end
Source
# File lib/pact/provider/state/provider_state.rb, line 105 def register_set_up &block @set_up_block = block @set_up_defined = true end
Source
# File lib/pact/provider/state/provider_state.rb, line 110 def register_tear_down &block @tear_down_block = block @tear_down_defined = true end
Source
# File lib/pact/provider/state/provider_state.rb, line 83 def set_up &block self.register_set_up(&block) end
Source
# File lib/pact/provider/state/provider_state.rb, line 87 def tear_down &block self.register_tear_down(&block) end
Private Instance Methods
Source
# File lib/pact/provider/state/provider_state.rb, line 147 def error_message_for_extra_block block_name "Provider state \"#{name}\" has been defined as a no_op but it also has a #{block_name} block. Please remove one or the other." end
Source
# File lib/pact/provider/state/provider_state.rb, line 159 def include_provider_state_configured_modules # Doing this at runtime means the order of the Pact configuration block # and the provider state declarations doesn't matter. # Using include ProviderStateConfiguredModules on the class doesn't seem to work - # modules dynamically added to ProviderStateConfiguredModules don't seem to be # included in the including class. self.extend(ProviderStateConfiguredModules) unless self.singleton_class.ancestors.include?(ProviderStateConfiguredModules) end
Source
# File lib/pact/provider/state/provider_state.rb, line 151 def namespaced(name) if namespace.empty? name else "#{namespace}.#{name}" end end
Source
# File lib/pact/provider/state/provider_state.rb, line 137 def validate if no_op_defined && set_up_defined raise error_message_for_extra_block 'set_up' elsif no_op_defined && tear_down_defined raise error_message_for_extra_block 'tear_down' elsif !(no_op_defined || set_up_defined || tear_down_defined) raise "Please provide a set_up or tear_down block for provider state \"#{name}\". If there is no data to set up or tear down, you can use \"no_op\" instead." end end