class Shoegaze::Implementation
Attributes
scenarios[R]
Public Class Methods
new(mock_class, mock_double, scope, method_name, &block)
click to toggle source
# File lib/shoegaze/implementation.rb, line 5 def initialize(mock_class, mock_double, scope, method_name, &block) @_mock_class = mock_class @_mock_double = mock_double @_scope = scope @_method_name = method_name @scenarios = {} self.instance_eval(&block) end
Public Instance Methods
default(&block)
click to toggle source
Defines the default scenario for the implementation
@param block [Block] Shoegaze::Scenario
implementation expressed in a block @return [Scenario] the created scenario
example:
default do datasource do # ... end end
# File lib/shoegaze/implementation.rb, line 46 def default(&block) @scenarios[:default] = scenario = Scenario.new(@_method_name, &block) scenario_orchestrator = Scenario::Orchestrator.new(@_mock_class, @_mock_double, @_scope, @_method_name) # NOTE: we can't use RSpec mock methods here because :default is called outside of a # test scope. so we have added some :default_scenario* methods instead @_mock_double.add_default_scenario(@_method_name, proc do |*args, &datasource_block| scenario_orchestrator.with(*args).execute_scenario(scenario, &datasource_block) end) scenario end
scenario(scenario_name, &block)
click to toggle source
Defines a named scenario for the implementation
@param name [Symbol] name of the scenario @param block [Block] Shoegaze::Scenario
implementation expressed in a block @return [Scenario] the created scenario
example:
scenario :success do datasource do # ... end end
# File lib/shoegaze/implementation.rb, line 29 def scenario(scenario_name, &block) @scenarios[scenario_name] = Scenario.new(@_method_name, &block) end
Private Instance Methods
defining_method()
click to toggle source
# File lib/shoegaze/implementation.rb, line 62 def defining_method case @_scope when :class :define_singleton_method when :instance :define_method end end