From 2a1499479a4317b8cccf7f8c12804165f39675b5 Mon Sep 17 00:00:00 2001 From: Gibheer Date: Mon, 26 Nov 2012 20:07:37 +0100 Subject: specs for rendering --- spec/spec_helper.rb | 10 ++++++++++ spec/unit/renderer/render_spec.rb | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 spec/unit/renderer/render_spec.rb diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5aae9a9..8a0c7f5 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,8 +5,18 @@ SimpleCov.start do end require 'rack' +require 'erb' +require 'tilt' require 'zero/all' +class SpecTemplateContext + attr_accessor :name + + def initialize(name) + @name = name + end +end + class SpecController < Zero::Controller def process; end def render; @response = [200, {'Content-Type' => 'text/html'}, ['foo']]; end diff --git a/spec/unit/renderer/render_spec.rb b/spec/unit/renderer/render_spec.rb new file mode 100644 index 0000000..6bb7801 --- /dev/null +++ b/spec/unit/renderer/render_spec.rb @@ -0,0 +1,34 @@ +require 'spec_helper' + +describe Zero::Renderer, '#render' do + subject { Zero::Renderer.new(template_path) } + let(:template_path) { 'foo' } + let(:file_list) { ['./foo/welcome/index.html.erb'] } + + shared_examples_for 'the rendering' do + before :each do + subject.stub(:search_files).and_return(file_list) + subject.stub(:template).and_return(Tilt[:erb].new {template} ) + end + + it "renders the template" do + subject.render('welcome/index', 'text/html', binding).should eq(result) + end + end + + context 'a simple template' do + let(:template) { 'success' } + let(:binding) { Object.new } + let(:result) { template } + + it_behaves_like 'the rendering' + end + + context 'a complex template' do + let(:template) { 'success <%= name %>' } + let(:binding) { SpecTemplateContext.new('bar') } + let(:result) { 'success bar' } + + it_behaves_like 'the rendering' + end +end -- cgit v1.2.3-70-g09d2