require 'test/unit' module Borges; end require 'Borges/Extensions/Array' require 'Borges/Extensions/Numeric' require 'Borges/Extensions/Object' require 'Borges/Extensions/Proc' require 'Borges/Extensions/String' require 'Borges/HTML/HtmlAttributes' require 'Borges/HTML/HtmlElement' require 'Borges/HTML/HtmlBuilder' require 'Borges/TestCase/Util/HtmlDocument' class HtmlBuilderTest < Test::Unit::TestCase def render str = '' document = HtmlDocument.new yield ::Borges::HtmlBuilder.new(document) document.print_html_on str return str end def assert_head_renders(expected, message = nil, &block) assert_equal "#{expected}", render(&block), message end def assert_body_renders(expected, message = nil, &block) assert_equal "#{expected}", render(&block), message end Borges::HtmlBuilder::SIMPLE_ELEMENTS.each do |method, element| eval %^ def test_#{method} assert_body_renders("<#{element}>text") do |r| r.send :#{method}, "text" end assert_body_renders("<#{element}>text") do |r| r.send(:#{method}) do r.text "text" end end end ^ end def test_break assert_body_renders("
") do |r| r.break end end def test_css_class assert_body_renders("

text

") do |r| r.css_class "class" r.paragraph "text" end end def test_div_named assert_body_renders("
text
") do |r| r.div_named "id", "text" end end def test_div_with_class assert_body_renders("
text
") do |r| r.div_with_class "class", "text" end end def test_element_id assert_body_renders("

text

") do |r| r.element_id "id" r.paragraph "text" end end def test_encode_text expected = "�\t\n\v\f\r" + "" + " !"\#$%" + "&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR" + "STUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~" + "€‚ƒ„…†‡ˆ" + "‰Š‹ŒŽ‘" + "’“”•–—˜™š" + "›œžŸ ¡¢" + "£¤¥¦§¨©ª" + "«¬­®¯°±²³" + "´µ¶·¸¹º»" + "¼½¾¿ÀÁÂ" + "ÃÄÅÆÇÈÉ" + "ÊËÌÍÎÏÐÑ" + "ÒÓÔÕÖר" + "ÙÚÛÜÝÞß" + "àáâãäåæ" + "çèéêëìí" + "îïðñòóô" + "õö÷øùúû" + "üýþÿ" input = (0..255).map do |c| c.chr end.join assert_body_renders(expected) do |r| r.encode_text input end end def test_fieldset expected = "
textstuff
" assert_body_renders(expected) do |r| r.fieldset("text") do r.text "stuff" end end end def test_head_tag assert_head_renders("") do |r| r.head_tag "mytag" end end def test_head_tag_with assert_head_renders("text") do |r| r.head_tag_with "mytag", "text" end end def test_heading assert_body_renders("

text

") do |r| r.heading "text" end end def test_heading_level 1.upto(6) do |level| assert_body_renders("text") do |r| r.heading_level "text", level end end end def test_horizontal_rule assert_body_renders("
") do |r| r.horizontal_rule end end def test_image html = "\"\"" assert_body_renders(html) do |r| r.image "/path/to/image.jpg" end end def test_image_url_anchor html = "\"alternate\"" assert_body_renders(html) do |r| r.image_url_anchor "/path/to/html/file.html", "/path/to/image.jpg", "alternate" end end def test_image_alt html = "\"alternate" assert_body_renders(html) do |r| r.image "/path/to/image.jpg", "alternate text" end end def test_input_type html = "" assert_body_renders(html) do |r| r.input "type" end end def test_input_safe output = render do |r| r.input "type", "name", "&" end assert_match(/value="&"/, output, "Escape unsafe characters") end def test_input_type_name output = render do |r| r.input "type", "name" end assert_match(/
  • 1
  • 2
  • ") do |r| r.list [1, 2] end end def test_list_do html = "" assert_body_renders(html) do |r| r.list_do([1, 2]) do |item| r.bold item end end end def test_set_attribute assert_body_renders("

    text

    ") do |r| r.set_attribute "foo", "bar" r.paragraph "text" end end def test_space assert_body_renders(" ") do |r| r.space end end def test_style_link output = render do |r| r.style_link "http://localhost/css/style.css" end assert_match(/1" assert_body_renders(html) do |r| r.table do r.table_row_span(2) do r.text "1" end end end end def test_table_row_with html = "
    1
    " assert_body_renders(html) do |r| r.table do r.table_row_with "1" end end end def test_table_row_labeled html = "
    A1
    " assert_body_renders(html) do |r| r.table do r.table_row_labeled "A", "1" end end end def test_table_spacer_row html = " 
    " assert_body_renders(html) do |r| r.table do r.table_spacer_row end end end def test_text assert_body_renders("text") do |r| r.text "text" end end def test_title assert_head_renders("text") do |r| r.title "text" end end def test_url_anchor html ="Red Dwarf" assert_body_renders(html) do |r| r.url_anchor "http://www.reddwarf.co.uk", "Red Dwarf" end end =begin def test_anchorWithUrl_title_do flunk "anchorWithUrl_title_do" end def test_attributes= flunk "attributes=" end def test_buttonForUrl_withText flunk "buttonForUrl_withText" end def test_buttonForUrl_withText_data flunk "buttonForUrl_withText_data" end def test_doesNotUnderstand flunk "doesNotUnderstand" end def test_formWithAction_do flunk "formWithAction_do" end def test_formWithMethod_action_do flunk "formWithMethod_action_do" end def test_image flunk "image" end def test_image_altText flunk "image_altText" end def test_image_width_height flunk "image_width_height" end def test_image_width_height_altText flunk "image_width_height_altText" end def test_inputWithType flunk "inputWithType" end def test_inputWithType_named flunk "inputWithType_named" end def test_layoutTable flunk "layoutTable" end def test_layoutTableOfWidth_do flunk "layoutTableOfWidth_do" end def test_metaTagNamed_content flunk "metaTagNamed_content" end def test_self_on flunk "self.on" end def test_scriptWithUrl flunk "scriptWithUrl" end def test_spanClass_with flunk "spanClass_with" end def test_spanNamed_with flunk "spanNamed_with" end def test_submitButton flunk "submitButton" end def test_submitButtonWithText flunk "submitButtonWithText" end def test_tableRowWith flunk "tableRowWith" end def test_tableRowWith_with flunk "tableRowWith_with" end def test_tableRowWith_with_with flunk "tableRowWith_with_with" end def test_tableRowWithLabel_column_column flunk "tableRowWithLabel_column_column" end =end end # class HtmlBuilderTest