In your Gemfile
install the Maruku gem by putting:
gem 'maruku'
at the bottom. Make sure you delete the redcarpet
and rouge
gems since you won't be using those. Run bundle install
to install the gem.
Open spec/services/markdown_service_spec.rb
and set the content to be:
require 'spec_helper'
describe MarkdownService do
it { should be_a MarkdownService }
describe '#render' do
# the markdown engine is just a test double we can monitor in our test
let(:markdown_engine) { double('Markdown') }
before do
Maruku.stub(:new) { markdown_engine }
end
it 'should delegate to the markdown engine' do
# Set up the expectation of what our code should accomplish
markdown_engine.should_receive(:to_html)
MarkdownService.new.render("anything")
end
end
end
You can run this spec which will fail with rspec spec/services/markdown_service_spec.rb
.
Open: app/services/markdown_service.rb
which will look like:
class MarkdownService
def render(text)
Maruku.new(text).to_html
end
end
This might be a small class but wrapping the Maruku class like this means we can easily switch between different markdown engines without changing any other areas in our application.