diff options
| author | Stormwind <stormwind@stormwinds-page.de> | 2012-11-23 18:10:27 +0100 | 
|---|---|---|
| committer | Stormwind <stormwind@stormwinds-page.de> | 2012-11-23 18:10:27 +0100 | 
| commit | 1b96ebb36d4cb41e33e877b15b865332aaca8fa5 (patch) | |
| tree | 06577d14c7757f0d0abb810184b81c72cad36077 | |
| parent | a2e6c299cd15b8335441e3b5ba07fe95256f3a2d (diff) | |
| parent | 495d8f650302d5226cd677b062891ea9021483d5 (diff) | |
Merge remote-tracking branch 'origin/master'
| -rw-r--r-- | lib/zero/controller.rb | 14 | ||||
| -rw-r--r-- | lib/zero/renderer.rb | 52 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 12 | ||||
| -rw-r--r-- | spec/unit/controller/call_spec.rb | 14 | 
4 files changed, 68 insertions, 24 deletions
| diff --git a/lib/zero/controller.rb b/lib/zero/controller.rb index 3c3af8c..5784aa0 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(Rack::Request.new(env)).response +      new(Zero::Request.new(env)).response      end      # initialize the controller @@ -20,7 +20,17 @@ module Zero      # build the response and return it      # @return Response a rack conform response      def response -      raise NotImplementedError.new("Not Implemented in ${__FILE__}") +      process if respond_to?(:process) +      render +      @response +    end + +    def process +      raise NotImplementedError.new("'render' not implemented in #{self.class}") +    end + +    def process +      raise NotImplementedError.new("'render' not implemented in #{self.class}")      end    end  end diff --git a/lib/zero/renderer.rb b/lib/zero/renderer.rb index 740d156..40a9bed 100644 --- a/lib/zero/renderer.rb +++ b/lib/zero/renderer.rb @@ -14,30 +14,32 @@ module Zero    # The call to #render will return the String representation of the template    # with all data given.    class Renderer -    # set a base path for template search -    # @param path [String] the path to the template base dir -    def self.template_path=(path) -      @@path = path + '/' -    end +    class << self +      # set a base path for template search +      # @param path [String] the path to the template base dir +      def template_path=(path) +        @@path = path + '/' +      end -    # save a mapping hash for the type -    # -    # With that it is possible to map long and complex contant types to simpler -    # representations. These get then used in the finding process for the best -    # fitting template. -    # -    # @example -    #   Zero::Renderer.map = {'text/html' => 'html'} -    # -    # @param map [Hash] maps the content type to a simple representation -    def self.type_map=(map) -      @@map = map -    end +      # save a mapping hash for the type +      # +      # With that it is possible to map long and complex contant types to simpler +      # representations. These get then used in the finding process for the best +      # fitting template. +      # +      # @example +      #   Zero::Renderer.map = {'text/html' => 'html'} +      # +      # @param map [Hash] maps the content type to a simple representation +      def type_map=(map) +        @@map = map +      end -    # returns the type map -    # @return [Hash] the mapping for types -    def self.type_map -      @@map ||= {} +      # returns the type map +      # @return [Hash] the mapping for types +      def type_map +        @@map ||= {} +      end      end      # take the path and render the template within the context @@ -72,6 +74,12 @@ module Zero        raise FileNotFoundError.new("Template '#{template_path}' not found!")      end +    # @see transform +    # @api private +    def transform(string) +      self.class.transform(string) +    end +      # transform a type into a simpler representation      # @api private      # @param string [String] the original type name diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 154faf4..909e1e8 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,18 @@ +unless RUBY_ENGINE == 'rbx' then +  require 'simplecov' +  SimpleCov.start do +    add_filter '_spec.rb' +  end +end +  require 'rack'  require 'zero/all' +class SpecController < Zero::Controller +  def process; end +  def render; @response = [200, {'Content-Type' => 'text/html'}, ['foo']]; end +end +  class SpecApp    attr_reader :env diff --git a/spec/unit/controller/call_spec.rb b/spec/unit/controller/call_spec.rb new file mode 100644 index 0000000..af6f719 --- /dev/null +++ b/spec/unit/controller/call_spec.rb @@ -0,0 +1,14 @@ +require 'spec_helper' + +describe Zero::Controller, '.call' do +  subject { SpecController.call(env) } +  let(:env) { EnvGenerator.get('/foo') } + +  it "returns a response" do +    subject.should be_respond_to(:to_a) +  end + +  it "returns an object with the first element being a status" do +    subject[0].should be_kind_of(Numeric) +  end +end | 
