# frozen_string_literal: true
require 'rails_helper'
require 'pretty_text'
describe PrettyText do
let(:post) { Fabricate(:post) }
it "supports details tag" do
cooked_html = <<~HTML.gsub("\n", "")
bar
foo
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('