require 'test_helper' require 'better_html/parser' require 'ast' module BetterHtml class ParserTest < ActiveSupport::TestCase include ::AST::Sexp test "parse empty document" do tree = Parser.new('') assert_equal s(:document), tree.ast end test "consume cdata nodes" do code = "" tree = Parser.new(code) assert_equal s(:document, s(:cdata, ' foo ')), tree.ast assert_equal code, tree.ast.loc.source end test "unterminated cdata nodes are consumed until end" do code = " baz ]]>" tree = Parser.new(code) assert_equal s(:document, s(:cdata, " foo ", s(:erb, s(:indicator, '='), nil, s(:code, " bar "), nil), " baz " )), tree.ast assert_equal code, tree.ast.loc.source end test "consume comment nodes" do tree = Parser.new("") assert_equal s(:document, s(:comment, ' foo ')), tree.ast end test "unterminated comment nodes are consumed until end" do tree = Parser.new("") assert_equal s(:document, s(:comment, " foo ", s(:erb, s(:indicator, "="), nil, s(:code, " bar "), nil), " baz " )), tree.ast end test "consume tag nodes" do tree = Parser.new("