require File.dirname(__FILE__) + '/test_helper' require 'action_controller' require 'action_controller/test_case' require 'action_controller/test_process' class FootnotesController < ActionController::Base; attr_accessor :template, :performed_render; end module Footnotes::Notes class TestNote < AbstractNote def self.to_sym; :test; end def valid?; true; end end end class FootnotesTest < Test::Unit::TestCase def setup @controller = FootnotesController.new @controller.request = ActionController::TestRequest.new @controller.response = ActionController::TestResponse.new @controller.response.body = $html.dup Footnotes::Filter.notes = [ :test ] Footnotes::Filter.multiple_notes = false @footnotes = Footnotes::Filter.new(@controller) end def test_footnotes_controller index = @controller.response.body.index(/This is the HTML page/) assert_equal 334, index end def test_foonotes_included footnotes_perform! assert_not_equal $html, @controller.response.body end def test_footnotes_not_included_when_request_is_xhr @controller.request.env['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest' @controller.request.env['HTTP_ACCEPT'] = 'text/javascript, text/html, application/xml, text/xml, */*' footnotes_perform! assert_equal $html, @controller.response.body end def test_footnotes_not_included_when_content_type_is_javascript @controller.response.headers['Content-Type'] = 'text/javascript' footnotes_perform! assert_equal $html, @controller.response.body end def test_footnotes_included_when_content_type_is_html @controller.response.headers['Content-Type'] = 'text/html' footnotes_perform! assert_not_equal $html, @controller.response.body end def test_footnotes_included_when_content_type_is_nil footnotes_perform! assert_not_equal $html, @controller.response.body end def test_not_included_when_body_is_not_a_string @controller.response.body = Proc.new{ Time.now } assert_nothing_raised do footnotes_perform! end end def test_footnotes_prefix assert_equal 'txmt://open?url=file://%s&line=%d&column=%d', Footnotes::Filter.prefix assert_equal 'txmt://open?url=file://file&line=0&column=0', Footnotes::Filter.prefix('file', 0, 0) assert_equal 'txmt://open?url=file://file&line=10&column=10', Footnotes::Filter.prefix('file', 10, 10) assert_equal 'txmt://open?url=file://file&line=10&column=10', Footnotes::Filter.prefix('file', 10, 10, 10) assert_equal 'txmt://open?url=file://file&line=10&column=10', Footnotes::Filter.prefix('file', '10', '10') end def test_notes_are_initialized footnotes_perform! test_note = @footnotes.instance_variable_get('@notes').first assert 'Footnotes::Notes::TestNote', test_note.class assert :test, test_note.to_sym end def test_notes_links note = Footnotes::Notes::TestNote.new note.expects(:row).times(2) @footnotes.instance_variable_set(:@notes, [note]) footnotes_perform! end def test_notes_fieldset note = Footnotes::Notes::TestNote.new note.expects(:has_fieldset?).times(3) @footnotes.instance_variable_set(:@notes, [note]) footnotes_perform! end def test_multiple_notes Footnotes::Filter.multiple_notes = true note = Footnotes::Notes::TestNote.new note.expects(:has_fieldset?).times(2) @footnotes.instance_variable_set(:@notes, [note]) footnotes_perform! end def test_notes_are_reset note = Footnotes::Notes::TestNote.new note.class.expects(:close!) @footnotes.instance_variable_set(:@notes, [note]) @footnotes.send(:close!, @controller) end def test_links_helper note = Footnotes::Notes::TestNote.new assert_equal 'Test', @footnotes.send(:link_helper, note) note.expects(:link).times(1).returns(:link) assert_equal 'Test', @footnotes.send(:link_helper, note) end def test_links_helper_has_fieldset? note = Footnotes::Notes::TestNote.new note.expects(:has_fieldset?).times(1).returns(true) assert_equal 'Test', @footnotes.send(:link_helper, note) end def test_links_helper_onclick note = Footnotes::Notes::TestNote.new note.expects(:onclick).times(2).returns(:onclick) assert_equal 'Test', @footnotes.send(:link_helper, note) note.expects(:has_fieldset?).times(1).returns(true) assert_equal 'Test', @footnotes.send(:link_helper, note) end def test_insert_style @controller.response.body = "
This is the HTML page. It works and is encoded just like any HTML page you have previously done. View the XHTML version of this page to view the difference between HTML and XHTML.
You will be glad to know that no changes need to be made to any of your CSS files.
HTML