lib/substation/response.rb in substation-0.0.3 vs lib/substation/response.rb in substation-0.0.4

- old
+ new

@@ -1,41 +1,67 @@ module Substation # Base class for action responses # + # The following code illustrates context and serves as setup for all + # instance method doc examples + # + # module App + # class Environment + # def initialize(storage, logger) + # @storage, @logger = storage, logger + # end + # end + # + # class SuccessfulAction + # def self.call(request) + # data = perform_work + # request.success(data) + # end + # end + # + # class FailingAction + # def self.call(request) + # error = perform_work + # request.error(error) + # end + # end + # end + # + # storage = SomeStorageAbstraction.new + # env = App::Environment.new(storage, Logger.new($stdout)) + # dispatcher = Substation::Dispatcher.coerce({ + # :successful_action => { :action => App::SuccessfulAction }, + # :failing_action => { :action => App::FailingAction } + # }, env) + # # @abstract class Response include AbstractType include Equalizer.new(:request, :output) include Adamantium::Flat - # The environment used to return this response + # The application environment used within an action # - # @return [Environment] + # @example # - # @api private + # response = dispatcher.call(:successful_action, :some_input) + # response.env # => env passed to Substation::Dispatcher.coerce(config, env) + # + # @return [Object] + # + # @api public attr_reader :env # The request model instance passed into an action # # @example # - # class SomeUseCase - # def self.call(request) - # data = perform_work - # request.success(data) - # end - # end + # response = dispatcher.call(:successful_action, :some_input) + # response.input # => :some_input # - # env = Substation::Environment.coerce({ - # 'some_use_case' => { 'action' => 'SomeUseCase' } - # }) - # - # response = env.dispatch(:some_use_case, :input) - # response.input # => :input - # # @see Request#input # # @return [Object] # # @api public @@ -43,23 +69,13 @@ # The data wrapped inside an action {Response} # # @example # - # class SomeUseCase - # def self.call(request) - # request.success(:output) - # end - # end + # response = dispatcher.call(:successful_action, :some_input) + # response.output # => data passed to request.success(data) # - # env = Substation::Environment.coerce({ - # 'some_use_case' => { 'action' => 'SomeUseCase' } - # }) - # - # response = env.dispatch(:some_use_case, :input) - # response.output # => :output - # # @return [Object] # # @api public attr_reader :output @@ -88,22 +104,11 @@ # @see Success#success? # @see Failure#success? # # @example # - # class SomeUseCase - # def self.call(request) - # request.success(:data) - # end - # end - # - # env = Substation::Environment.coerce({ - # 'some_use_case' => { 'action' => 'SomeUseCase' } - # }) - # - # response = env.dispatch(:some_use_case, :input) - # response.class # Substation::Response::Success + # response = dispatcher.call(:successful_action, :some_input) # response.success? # => true # # @return [Boolean] # true if successful, false otherwise # @@ -124,21 +129,11 @@ # Tests wether this response was successful # # @example # - # class SomeUseCase - # def self.call(request) - # request.error(:output) - # end - # end - # - # env = Substation::Environment.coerce({ - # 'some_use_case' => { 'action' => 'SomeUseCase' } - # }) - # - # response = env.dispatch(:some_use_case, :input) + # response = dispatcher.call(:failing_action, :some_input) # response.success? # => false # # @return [false] # # @api public @@ -152,20 +147,10 @@ # Tests wether this response was successful # # @example # - # class SomeUseCase - # def self.call(request) - # request.success(:data) - # end - # end - # - # env = Substation::Environment.coerce({ - # 'some_use_case' => { 'action' => 'SomeUseCase' } - # }) - # - # response = env.dispatch(:some_use_case, :input) + # response = dispatcher.call(:successful_action, :some_input) # response.success? # => true # # @return [true] # # @api public