diff --git a/lib/zero/controller.rb b/lib/zero/controller.rb index f77bf44..b9568cd 100644 --- a/lib/zero/controller.rb +++ b/lib/zero/controller.rb @@ -11,16 +11,17 @@ module Zero new(env).response end - # set the class to use for responses - accept_options :response + # set the renderer to use for rendering + def self.renderer=(renderer) + @@renderer = renderer + end - # set a class to use for requests - accept_options :request + # returns the defined renderer + def self.renderer + @@renderer + end - # set the renderer to use in the controller - accept_options :renderer - - # the renderer which can be used to render templates + # returns the current renderer attr_reader :renderer # initialize the controller @@ -29,8 +30,8 @@ module Zero # renderer, request and response. # @param env [Hash] a rack compatible environment def initialize(env) - @request = self.class.request.new(env) - @response = self.class.response.new + @request = Zero::Request.new(env) + @response = Zero::Response.new @renderer = self.class.renderer end diff --git a/spec/unit/zero/controller/call_spec.rb b/spec/unit/zero/controller/call_spec.rb index 44c4d7b..3231b7d 100644 --- a/spec/unit/zero/controller/call_spec.rb +++ b/spec/unit/zero/controller/call_spec.rb @@ -6,13 +6,11 @@ describe Zero::Controller, '.call' do let(:env) { EnvGenerator.get('/foo') } before :each do - object.renderer(Object.new) - object.response(Zero::Response) - object.request(Zero::Request) + object.renderer = Object.new end it "returns a response" do - subject.should be_respond_to(:to_a) + subject.should respond_to(:to_a) end it "returns an object with the first element being a status" do @@ -26,18 +24,4 @@ describe Zero::Controller, '.call' do r = Zero::Request.new(env) expect(r.params['foo']).to eq('bar') end - - context "with the response" do - let(:response_class) { mock } - before :each do - object.response(response_class) - response_class.should_receive(:new).and_return(Zero::Response.new) - end - - after :each do - Zero::Controller.response(nil) - end - - it { subject } - end end diff --git a/spec/unit/zero/controller/render_spec.rb b/spec/unit/zero/controller/render_spec.rb index 843f237..0228524 100644 --- a/spec/unit/zero/controller/render_spec.rb +++ b/spec/unit/zero/controller/render_spec.rb @@ -4,22 +4,17 @@ describe Zero::Controller, '#render' do let(:object) { create_controller } subject { object.new(env) } - before do - object.request(Zero::Request) - object.response(Zero::Response) - end - let(:env) { EnvGenerator.get('/foo') } let(:renderer) { mock } let(:template) { '/foo' } before :each do - object.renderer(renderer) + object.renderer = renderer renderer.should_receive(:render).with(template, kind_of(Zero::Request::AcceptType), subject) end after :each do - Zero::Controller.renderer(nil) + Zero::Controller.renderer = nil end it { subject.render(template) } diff --git a/spec/unit/zero/controller/renderer_spec.rb b/spec/unit/zero/controller/renderer_spec.rb index e4a712e..c7d1769 100644 --- a/spec/unit/zero/controller/renderer_spec.rb +++ b/spec/unit/zero/controller/renderer_spec.rb @@ -4,14 +4,8 @@ describe Zero::Controller, '#renderer' do subject { create_controller } let(:renderer) { Object.new } - before do - subject.response(Zero::Response) - subject.request(Zero::Request) - end - it 'returns the set renderer' do - subject.renderer(renderer) - p subject.renderer + subject.renderer = renderer expect(subject.new({}).renderer).to be(renderer) end end