docbrown/spec/services/markdown_processor/fixer/fix_all_spec.rb
Alex 31689fd76a
Break MarkdownFixer into MarkdownProcessor::Fixer services (#12241)
* Create new MarkdownProcessor::Fixer services

* Remove old MarkdownFixer

* Code cleanup

* Capitalize Base in code comments

* Remove comments related to inheritance

* Add fix_methods method to hold METHDOS constant
2021-01-14 10:26:46 -05:00

50 lines
1.5 KiB
Ruby

require "rails_helper"
RSpec.describe MarkdownProcessor::Fixer::FixAll, type: :service do
let(:sample_text) { Faker::Book.title }
def front_matter(title: "", description: "")
<<~HEREDOC
---
title: #{title}
published: false
description: #{description}
---
HEREDOC
end
describe "defining constants" do
it "defines METHODS" do
methods = %i[
add_quotes_to_title add_quotes_to_description lowercase_published
modify_hr_tags convert_new_lines split_tags underscores_in_usernames
]
expect(described_class::METHODS).to eq methods
end
end
describe "#call" do
it "escapes title and description" do
markdown = front_matter(title: sample_text, description: sample_text)
result = described_class.call(markdown)
expected_result = front_matter(title: %("#{sample_text}"), description: %("#{sample_text}"))
expect(result).to eq(expected_result)
end
context "when description is empty" do
it "escapes title and description" do
markdown = "---\ntitle: #{sample_text}\ndescription:\ntags: \n---\n"
result = described_class.call(markdown)
expected_result = "---\ntitle: \"#{sample_text}\"\ndescription: \"\"\ntags: \n---\n"
expect(result).to eq(expected_result)
end
end
context "when markdown is nil" do
it "doesn't raise an error" do
expect { described_class.call(nil) }.not_to raise_error
end
end
end
end