# frozen_string_literal: true require "rails_helper" require "pretty_text" RSpec.describe PrettyText do let(:post) { Fabricate(:post) } it "supports details tag" do cooked_html = <<~HTML.gsub("\n", "")
foo

bar

HTML expect(cooked_html).to match_html(cooked_html) expect(PrettyText.cook("[details=foo]\nbar\n[/details]").gsub("\n", "")).to match_html( cooked_html, ) end it "deletes elided content" do cooked_html = PrettyText.cook("Hello World\n\n
42
") mail_html = "

Hello World

\n(click for more details)" expect(PrettyText.format_for_email(cooked_html)).to match_html(mail_html) end it "can replace spoilers in emails" do md = PrettyText.cook(<<~MD) hello [details="Summary"] world [/details] MD md = PrettyText.format_for_email(md, post) html = "

hello

\n\nSummary (click for more details)" expect(md).to eq(html) end it "properly handles multiple spoiler blocks in a post" do md = PrettyText.cook(<<~MD) [details="First"] body secret stuff very long [/details] [details="Second"] body secret stuff very long [/details] Hey there. [details="Third"] body secret stuff very long [/details] MD md = PrettyText.format_for_email(md, post) expect(md).not_to include("secret stuff") expect(md.scan(/First/).size).to eq(1) expect(md.scan(/Third/).size).to eq(1) expect(md.scan(I18n.t("details.excerpt_details")).size).to eq(3) end it "escapes summary text" do md = PrettyText.cook(<<~MD) [details=""] [/details] MD md = PrettyText.format_for_email(md, post) expect(md).not_to include("