require 'abstract_unit'

class DomAssertionsTest < ActionView::TestCase
  def setup
    super
    @html_only = '<ul><li>foo</li><li>bar</li></ul>'
    @html_with_meaningless_whitespace = %{
      <ul>
        <li>\tfoo  </li>
        <li>
        bar
        </li>
      </ul>
    }
    @more_html_with_meaningless_whitespace = %{<ul>
      
      <li>foo</li>

<li>bar</li></ul>}
  end
  
  test "assert_dom_equal strips meaningless whitespace from expected string" do
    assert_dom_equal @html_with_meaningless_whitespace, @html_only
  end

  test "assert_dom_equal strips meaningless whitespace from actual string" do
    assert_dom_equal @html_only, @html_with_meaningless_whitespace
  end
  
  test "assert_dom_equal strips meaningless whitespace from both expected and actual strings" do
    assert_dom_equal @more_html_with_meaningless_whitespace, @html_with_meaningless_whitespace
  end
  
  test "assert_dom_not_equal strips meaningless whitespace from expected string" do
    assert_assertion_fails { assert_dom_not_equal @html_with_meaningless_whitespace, @html_only }
  end
  
  test "assert_dom_not_equal strips meaningless whitespace from actual string" do
    assert_assertion_fails { assert_dom_not_equal @html_only, @html_with_meaningless_whitespace }
  end
  
  test "assert_dom_not_equal strips meaningless whitespace from both expected and actual strings" do
    assert_assertion_fails do
      assert_dom_not_equal @more_html_with_meaningless_whitespace, @html_with_meaningless_whitespace
    end
  end
  
  private
  
  def assert_assertion_fails
    assert_raise(ActiveSupport::TestCase::Assertion) { yield }
  end
end