test/unit/report/test_internal.rb in thinreports-0.7.0 vs test/unit/report/test_internal.rb in thinreports-0.7.5

- old
+ new

@@ -1,234 +1,234 @@ -# coding: utf-8 - -require 'test/unit/helper' - -class ThinReports::Report::TestInternal < MiniTest::Unit::TestCase - include ThinReports::TestHelpers - - # Alias - Report = ThinReports::Report - - def setup - # Setting for instance of Layout::Base as mock. - layout = flexmock('layout_base') - layout.should_receive(:config).and_return(flexmock('layout_configuration')) - - flexmock(ThinReports::Layout). - should_receive(:new).and_return(layout) - end - - def test_initialize_with_default_layout - report = init_report(:layout => 'default.tlf') - assert_equal report.default_layout.flexmock_name, 'layout_base' - end - - def test_register_layout_properly_set_the_default_layout - report = init_report - report.register_layout('default.tlf') - - assert_equal report.default_layout.flexmock_name, 'layout_base' - end - - def test_register_layout_properly_set_the_default_layout_with_option - report = init_report - report.register_layout('default.tlf', :default => true) - - assert_equal report.default_layout.flexmock_name, 'layout_base' - end - - def test_register_layout_raise_when_default_layout_is_already_set - assert_raises ArgumentError do - init_report(:layout => 'default.tlf').register_layout('other.tlf') - end - end - - def test_register_layout_properly_set_the_layout - report = init_report - report.register_layout('foo.tlf', :id => :foo) - - assert_equal report.layout_registry[:foo].flexmock_name, 'layout_base' - end - - def test_register_layout_raise_when_specified_id_is_already_registered - report = init_report - report.register_layout('foo.tlf', :id => :foo) - - assert_raises ArgumentError do - report.register_layout('hoge.tlf', :id => :foo) - end - end - - def test_register_layout_call_layout_config_method_with_block - report = init_report - assert_equal report.register_layout('layout.tlf').flexmock_name, - 'layout_configuration' - end - - def test_add_page_count_up_the_page_count - new_page = proc { - mock_page.should_receive(:finalize).mock - } - - report = init_report - assert_equal report.page_count, 0 - - report.add_page(new_page.call) - assert_equal report.page_count, 1 - - report.add_page(new_page.call) - assert_equal report.page_count, 2 - end - - def test_add_page_finalize_current_page - report = init_report - - report.add_page(mock_page.should_receive(:finalize).once.mock) - report.add_page(mock_page) - end - - def test_add_page_switch_currently_page_of_report - new_page = proc {|name| - mock_page(name).should_receive(:finalize).mock - } - - report = init_report - - report.add_page(new_page.call('page1')) - assert_equal report.page.flexmock_name, 'page1' - - report.add_page(new_page.call('page2')) - assert_equal report.page.flexmock_name, 'page2' - end - - def test_add_page_store_specified_page_to_report_pages - report = init_report - report.add_page(new_page = mock_page) - - assert_includes report.pages, new_page - end - - def test_add_page_dispatch_the_page_create_event - pass = false - report = init_report - report.events.on(:page_create) {|e| pass = true } - - report.add_page(mock_page) - - assert_equal pass, true - end - - def test_add_blank_page_not_dispatch_the_page_create_event - pass = true - report = init_report - report.events.on(:page_create) {|e| pass = false } - - report.add_page(mock_blank_page) - - assert_equal pass, true - end - - def test_add_blank_page_not_count_up_the_page_count_when_count_is_disabled - report = init_report - report.add_page(mock_not_counting_blank_page) - report.add_page(mock_not_counting_blank_page) - - assert_equal report.page_count, 0 - end - - def test_finalize - pass = false - - report = init_report - report.events.on(:generate) {|e| pass = true } - - report.add_page(mock_page.should_receive(:finalize).once.mock) - report.finalize - - assert_equal report.finalized?, true - assert_equal pass, true - end - - def test_finalize_never_work_when_report_is_already_finalized - report = init_report - report.finalize - - flexmock(report).should_receive(:finalize_current_page).times(0) - report.finalize - end - - def test_finalize_not_finalize_current_page_when_page_is_blank - report = init_report - report.add_page(mock_blank_page.should_receive(:finalize).times(0).mock) - report.finalize - end - - def test_load_layout_with_String - report = init_report - assert_equal report.load_layout('layout.tlf').flexmock_name, 'layout_base' - end - - def test_load_layout_with_id - report = init_report - report.register_layout('layout.tlf', :id => :foo) - - assert_equal report.load_layout(:foo).flexmock_name, 'layout_base' - end - - def test_load_layout_with_unknown_id - report = init_report - assert_nil report.load_layout(:unknown) - end - - def test_load_layout_raise_when_invalid_value_set - report = init_report - assert_raises ArgumentError do - report.load_layout(1) - end - assert_raises ArgumentError do - report.load_layout(ThinReports::Layout.new('layout.tlf')) - end - end - - def test_load_layout_with_nil - report = init_report - report.register_layout('default.tlf', :default => true) - - assert_equal report.load_layout(nil).flexmock_name, 'layout_base' - end - - def test_copy_page - page = mock_page - - flexmock(page). - should_receive(:finalize).with(:at => :copy).once. - should_receive(:copy).and_return(mock_page('copied_page')).once - - report = init_report - report.add_page(page) - report.copy_page - - assert_equal report.page.flexmock_name, 'copied_page' - end - - def init_report(options = {}) - Report::Internal.new(flexmock('report_base'), options) - end - - def mock_page(page_name = 'page') - flexmock(page_name). - should_receive(:count? => true, :blank? => false). - should_receive(:no=).with(::Numeric).once.mock - end - - def mock_blank_page - flexmock('blank_page'). - should_receive(:count? => true, :blank? => true). - should_receive(:no=).with(::Numeric).once.mock - end - - def mock_not_counting_blank_page - flexmock('blank_page'). - should_receive(:count? => false, :blank? => true). - should_receive(:no=).with(::Numeric).times(0).mock - end -end +# coding: utf-8 + +require 'test/unit/helper' + +class ThinReports::Report::TestInternal < MiniTest::Unit::TestCase + include ThinReports::TestHelpers + + # Alias + Report = ThinReports::Report + + def setup + # Setting for instance of Layout::Base as mock. + layout = flexmock('layout_base') + layout.should_receive(:config).and_return(flexmock('layout_configuration')) + + flexmock(ThinReports::Layout). + should_receive(:new).and_return(layout) + end + + def test_initialize_with_default_layout + report = init_report(:layout => 'default.tlf') + assert_equal report.default_layout.flexmock_name, 'layout_base' + end + + def test_register_layout_properly_set_the_default_layout + report = init_report + report.register_layout('default.tlf') + + assert_equal report.default_layout.flexmock_name, 'layout_base' + end + + def test_register_layout_properly_set_the_default_layout_with_option + report = init_report + report.register_layout('default.tlf', :default => true) + + assert_equal report.default_layout.flexmock_name, 'layout_base' + end + + def test_register_layout_raise_when_default_layout_is_already_set + assert_raises ArgumentError do + init_report(:layout => 'default.tlf').register_layout('other.tlf') + end + end + + def test_register_layout_properly_set_the_layout + report = init_report + report.register_layout('foo.tlf', :id => :foo) + + assert_equal report.layout_registry[:foo].flexmock_name, 'layout_base' + end + + def test_register_layout_raise_when_specified_id_is_already_registered + report = init_report + report.register_layout('foo.tlf', :id => :foo) + + assert_raises ArgumentError do + report.register_layout('hoge.tlf', :id => :foo) + end + end + + def test_register_layout_call_layout_config_method_with_block + report = init_report + assert_equal report.register_layout('layout.tlf').flexmock_name, + 'layout_configuration' + end + + def test_add_page_count_up_the_page_count + new_page = proc { + mock_page.should_receive(:finalize).mock + } + + report = init_report + assert_equal report.page_count, 0 + + report.add_page(new_page.call) + assert_equal report.page_count, 1 + + report.add_page(new_page.call) + assert_equal report.page_count, 2 + end + + def test_add_page_finalize_current_page + report = init_report + + report.add_page(mock_page.should_receive(:finalize).once.mock) + report.add_page(mock_page) + end + + def test_add_page_switch_currently_page_of_report + new_page = proc {|name| + mock_page(name).should_receive(:finalize).mock + } + + report = init_report + + report.add_page(new_page.call('page1')) + assert_equal report.page.flexmock_name, 'page1' + + report.add_page(new_page.call('page2')) + assert_equal report.page.flexmock_name, 'page2' + end + + def test_add_page_store_specified_page_to_report_pages + report = init_report + report.add_page(new_page = mock_page) + + assert_includes report.pages, new_page + end + + def test_add_page_dispatch_the_page_create_event + pass = false + report = init_report + report.events.on(:page_create) {|e| pass = true } + + report.add_page(mock_page) + + assert_equal pass, true + end + + def test_add_blank_page_not_dispatch_the_page_create_event + pass = true + report = init_report + report.events.on(:page_create) {|e| pass = false } + + report.add_page(mock_blank_page) + + assert_equal pass, true + end + + def test_add_blank_page_not_count_up_the_page_count_when_count_is_disabled + report = init_report + report.add_page(mock_not_counting_blank_page) + report.add_page(mock_not_counting_blank_page) + + assert_equal report.page_count, 0 + end + + def test_finalize + pass = false + + report = init_report + report.events.on(:generate) {|e| pass = true } + + report.add_page(mock_page.should_receive(:finalize).once.mock) + report.finalize + + assert_equal report.finalized?, true + assert_equal pass, true + end + + def test_finalize_never_work_when_report_is_already_finalized + report = init_report + report.finalize + + flexmock(report).should_receive(:finalize_current_page).times(0) + report.finalize + end + + def test_finalize_not_finalize_current_page_when_page_is_blank + report = init_report + report.add_page(mock_blank_page.should_receive(:finalize).times(0).mock) + report.finalize + end + + def test_load_layout_with_String + report = init_report + assert_equal report.load_layout('layout.tlf').flexmock_name, 'layout_base' + end + + def test_load_layout_with_id + report = init_report + report.register_layout('layout.tlf', :id => :foo) + + assert_equal report.load_layout(:foo).flexmock_name, 'layout_base' + end + + def test_load_layout_with_unknown_id + report = init_report + assert_nil report.load_layout(:unknown) + end + + def test_load_layout_raise_when_invalid_value_set + report = init_report + assert_raises ArgumentError do + report.load_layout(1) + end + assert_raises ArgumentError do + report.load_layout(ThinReports::Layout.new('layout.tlf')) + end + end + + def test_load_layout_with_nil + report = init_report + report.register_layout('default.tlf', :default => true) + + assert_equal report.load_layout(nil).flexmock_name, 'layout_base' + end + + def test_copy_page + page = mock_page + + flexmock(page). + should_receive(:finalize).with(:at => :copy).once. + should_receive(:copy).and_return(mock_page('copied_page')).once + + report = init_report + report.add_page(page) + report.copy_page + + assert_equal report.page.flexmock_name, 'copied_page' + end + + def init_report(options = {}) + Report::Internal.new(flexmock('report_base'), options) + end + + def mock_page(page_name = 'page') + flexmock(page_name). + should_receive(:count? => true, :blank? => false). + should_receive(:no=).with(::Numeric).once.mock + end + + def mock_blank_page + flexmock('blank_page'). + should_receive(:count? => true, :blank? => true). + should_receive(:no=).with(::Numeric).once.mock + end + + def mock_not_counting_blank_page + flexmock('blank_page'). + should_receive(:count? => false, :blank? => true). + should_receive(:no=).with(::Numeric).times(0).mock + end +end