diff options
| -rw-r--r-- | lib/zero/controller.rb | 21 | ||||
| -rw-r--r-- | spec/unit/controller/renderer_spec.rb | 4 | 
2 files changed, 18 insertions, 7 deletions
| diff --git a/lib/zero/controller.rb b/lib/zero/controller.rb index 17d9b3f..febb23e 100644 --- a/lib/zero/controller.rb +++ b/lib/zero/controller.rb @@ -7,7 +7,7 @@ module Zero    class Controller      # initialize a new instance of the controller and call response on it      def self.call(env) -      new(Zero::Request.new(env)).response +      new(env).response      end      # set the class to use for responses @@ -20,6 +20,16 @@ module Zero        @@response ||= Zero::Response      end +    # set a class to use for requests +    def self.request=(request_class) +      @@request = request_class +    end + +    # return the set request class +    def self.request +      @@request ||= Zero::Request +    end +      # set the renderer to use in the controller      def self.renderer=(renderer)        @@renderer = renderer @@ -35,10 +45,11 @@ module Zero      # initialize the controller      # -    # At initialization `@request`, `@response` and `@renderer` are set. -    # @param request [Request] a request object -    def initialize(request) -      @request  = request +    # This creates a new controller instance using the defined classes of +    # renderer, request and response. +    # @param env [Hash] a rack compatible environment +    def initialize(env) +      @request  = self.class.request.new(env)        @response = self.class.response        @renderer = self.class.renderer      end diff --git a/spec/unit/controller/renderer_spec.rb b/spec/unit/controller/renderer_spec.rb index c840f23..21664ec 100644 --- a/spec/unit/controller/renderer_spec.rb +++ b/spec/unit/controller/renderer_spec.rb @@ -3,9 +3,9 @@ require 'spec_helper'  describe Zero::Controller, '#renderer' do    subject { Zero::Controller }    let(:renderer) { Object.new } -   +    it 'returns the set renderer' do      subject.renderer = renderer -    expect(subject.new(Object.new).renderer).to be(renderer) +    expect(subject.new({}).renderer).to be(renderer)    end  end | 
