require 'rails_helper' require 'html_normalize' describe HtmlNormalize do def n(html) HtmlNormalize.normalize(html) end it "handles attributes without values" do expect(n "<img alt>").to eq("<img alt>") end it "handles self closing tags" do source = <<-HTML <div> <span><img src='testing'> boo</span> </div> HTML expect(n source).to eq(source.strip) end it "Can handle aside" do source = <<~HTML <aside class="quote" data-topic="2" data-post="1"> <div class="title"> <div class="quote-controls"></div> <a href="http://test.localhost/t/this-is-a-test-topic-slight-smile/x/2">This is a test topic <img src="/images/emoji/emoji_one/slight_smile.png?v=5" title="slight_smile" alt="slight_smile" class="emoji"></a></div> <blockquote> <p>ddd</p> </blockquote></aside> HTML expected = <<~HTML <aside class="quote" data-post="1" data-topic="2"> <div class="title"> <div class="quote-controls"></div> <a href="http://test.localhost/t/this-is-a-test-topic-slight-smile/x/2">This is a test topic <img src="/images/emoji/emoji_one/slight_smile.png?v=5" title="slight_smile" alt="slight_smile" class="emoji"></a> </div> <blockquote> <p>ddd</p> </blockquote> </aside> HTML expect(n expected).to eq(n source) end it "Can normalize attributes" do source = "<a class='a b' name='sam'>b</a>" same = "<a name='sam' class='a b' >b</a>" expect(n source).to eq(n same) end it "Can indent divs nicely" do source = "<div> <div><div>hello world</div> </div> </div>" expected = <<~HTML <div> <div> <div> hello world </div> </div> </div> HTML expect(n source).to eq(expected.strip) end end