From 96fdb868562dc08d48da67c54da6f27389c92ce9 Mon Sep 17 00:00:00 2001 From: sandal Date: Mon, 24 Mar 2008 00:39:32 +0000 Subject: [PATCH] Fix for #387 git-svn-id: http://stonecode.svnrepository.com/svn/ruport/ruport/trunk@1291 bb2e8eb0-7117-0410-aac4-c024b40ed5f7 --- lib/ruport/controller.rb | 1 + lib/ruport/formatter/pdf.rb | 4 ++++ test/pdf_formatter_test.rb | 27 ++++++++++++++++++++++++++- test/renderer_test.rb | 18 ++++++++++++++++-- 4 files changed, 47 insertions(+), 3 deletions(-) diff --git a/lib/ruport/controller.rb b/lib/ruport/controller.rb index f28b4cf9..6515c9ec 100644 --- a/lib/ruport/controller.rb +++ b/lib/ruport/controller.rb @@ -479,6 +479,7 @@ def _run_ end finalize self.class.final_stage if self.class.final_stage + maybe :finalize end def execute_stages diff --git a/lib/ruport/formatter/pdf.rb b/lib/ruport/formatter/pdf.rb index a7223313..d3d2136f 100644 --- a/lib/ruport/formatter/pdf.rb +++ b/lib/ruport/formatter/pdf.rb @@ -382,6 +382,10 @@ def draw_text!(text,text_opts) text_opts[:font_size], text_opts[:angle] || 0) move_cursor_to(ypos) + end + + def finalize + render_pdf end end diff --git a/test/pdf_formatter_test.rb b/test/pdf_formatter_test.rb index d639ecb8..05eb193a 100644 --- a/test/pdf_formatter_test.rb +++ b/test/pdf_formatter_test.rb @@ -199,7 +199,7 @@ def test_draw_table_should_not_destroy_nested_rendering_options f.draw_table Table(%w[a b c], :data => [[1,2,3],[4,5,6]]) assert_equal({ :justification => :center }, f.options[:table_format][:column_options][:heading]) - end + end end @@ -326,4 +326,29 @@ def test_draw_text_retains_cursor a.draw_text "foo", :left => a.left_boundary + 50, :y => 500 assert_equal 100, a.cursor end +end + +class SimpleController < Ruport::Controller + stage :foo + + class PDF < Ruport::Formatter::PDF + renders :pdf, :for => SimpleController + + build :foo do + add_text "Blah" + end + end +end + +class TestPDFFinalize < Test::Unit::TestCase + + context "When rendering a PDF" do + def specify_finalize_should_be_called + SimpleController.render_pdf do |r| + r.formatter.expects(:render_pdf) + end + end + end + end + \ No newline at end of file diff --git a/test/renderer_test.rb b/test/renderer_test.rb index d9317dce..ec76e03c 100644 --- a/test/renderer_test.rb +++ b/test/renderer_test.rb @@ -84,8 +84,15 @@ def finalize_document; end class VanillaBinary < Ruport::Formatter renders :bin, :for => VanillaController save_as_binary_file -end +end +class SpecialFinalize < Ruport::Formatter + renders :with_finalize, :for => VanillaController + + def finalize + output << "I has been finalized" + end +end class TestController < Test::Unit::TestCase @@ -96,7 +103,14 @@ def teardown def test_trivial actual = OldSchoolController.render(:text) assert_equal "header\nbody\nfooter\n", actual - end + end + + context "when running a formatter with custom a finalize method" do + def specify_finalize_method_should_be_called + assert_equal "I has been finalized", + VanillaController.render_with_finalize + end + end context "when using templates" do def specify_apply_template_should_be_called