Changeset 1225

Show
Ignore:
Timestamp:
12/09/07 22:46:33 (1 year ago)
Author:
mikem836
Message:

default templates - fix for #371

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • ruport/trunk/lib/ruport/formatter.rb

    r1224 r1225  
    188188    # Returns the template currently set for this formatter. 
    189189    def template 
    190       Template[options.template] 
     190      Template[options.template] rescue nil || Template[:default] 
    191191    end 
    192192 
  • ruport/trunk/lib/ruport/formatter/template.rb

    r1195 r1225  
    167167    templates[label] or raise Ruport::Formatter::TemplateNotDefined 
    168168  end 
     169   
     170  # Returns the default template. 
     171  def self.default 
     172    templates[:default] 
     173  end 
    169174end    
  • ruport/trunk/lib/ruport/renderer.rb

    r1216 r1225  
    460460    end 
    461461 
    462     if formatter.respond_to?(:apply_template) && options.template 
    463       formatter.apply_template   
    464     end        
     462    if formatter.respond_to?(:apply_template) && options.template != false 
     463      formatter.apply_template if options.template || 
     464        Ruport::Formatter::Template.default 
     465    end 
    465466 
    466467    prepare self.class.first_stage if self.class.first_stage 
  • ruport/trunk/test/renderer_test.rb

    r1223 r1225  
    7272class TestRenderer < Test::Unit::TestCase 
    7373 
     74  def teardown 
     75    Ruport::Formatter::Template.instance_variable_set(:@templates, nil) 
     76  end 
     77 
    7478  def test_trivial 
    7579    actual = OldSchoolRenderer.render(:text) 
     
    7882   
    7983  context "when using templates" do 
    80      def specify_apply_template_should_be_called 
    81        Ruport::Formatter::Template.create(:stub) 
    82        Table(%w[a b c]).to_csv(:template => :stub) do |r|  
    83          r.formatter.expects(:apply_template) 
    84        end   
    85      end  
    86       
    87      def specify_undefined_template_should_throw_sensible_error 
    88         assert_raises(Ruport::Formatter::TemplateNotDefined) do 
    89           Table(%w[a b c]).to_csv(:template => :sub) 
    90         end  
    91      end 
     84    def specify_apply_template_should_be_called 
     85      Ruport::Formatter::Template.create(:stub) 
     86      Table(%w[a b c]).to_csv(:template => :stub) do |r|  
     87       r.formatter.expects(:apply_template) 
     88      end   
     89    end  
     90 
     91    def specify_undefined_template_should_throw_sensible_error 
     92      assert_raises(Ruport::Formatter::TemplateNotDefined) do 
     93        Table(%w[a b c]).to_csv(:template => :sub) 
     94      end  
     95    end 
     96  end 
     97 
     98  context "when using default templates" do 
     99    def specify_default_template_should_be_called 
     100      Ruport::Formatter::Template.create(:default) 
     101      Table(%w[a b c]).to_csv do |r|  
     102        r.formatter.expects(:apply_template) 
     103        assert r.formatter.template == Ruport::Formatter::Template[:default] 
     104      end   
     105    end 
     106 
     107    def specify_specific_should_override_default 
     108      Ruport::Formatter::Template.create(:default) 
     109      Ruport::Formatter::Template.create(:stub) 
     110      Table(%w[a b c]).to_csv(:template => :stub) do |r|  
     111        r.formatter.expects(:apply_template) 
     112        assert r.formatter.template == Ruport::Formatter::Template[:stub] 
     113      end   
     114    end 
     115 
     116    def specify_should_be_able_to_disable_templates 
     117      Ruport::Formatter::Template.create(:default) 
     118      Table(%w[a b c]).to_csv(:template => false) do |r|  
     119        r.formatter.expects(:apply_template).never 
     120      end   
     121    end 
    92122  end 
    93123 
  • ruport/trunk/test/template_test.rb

    r1167 r1225  
    66  def setup 
    77    @template_class = Ruport::Formatter::Template.dup 
     8  end 
     9   
     10  def teardown 
     11    Ruport::Formatter::Template.instance_variable_set(:@templates, nil) 
    812  end 
    913    
     
    3337    assert_equal :letter, 
    3438      Ruport::Formatter::Template[:bar].page_format[:paper_size]      
    35   end  
     39  end 
     40   
     41  def test_default_template 
     42    assert_nil Ruport::Formatter::Template.default 
     43    Ruport::Formatter::Template.create(:default) 
     44    assert_equal Ruport::Formatter::Template[:default], 
     45      Ruport::Formatter::Template.default 
     46  end 
    3647   
    3748end