1
0
Fork 0
mirror of https://github.com/sinatra/sinatra synced 2023-03-27 23:18:01 -04:00
sinatra/test/asciidoctor_test.rb
Eloy Pérez f10e571f4d
Minor cleaning setting up tests (#1875)
We use minitest for Sinatra's test suite but we weren't using its rake task. I've updated the Rakefile to require and use Minitest default rake task to simplify.

Another change is to rename the `helper.rb` file to `test_helper.rb` because I think that name is used more in the community and require it directly without calling `File.expand_path`
2023-02-12 19:09:35 +01:00

72 lines
1.9 KiB
Ruby

require_relative 'test_helper'
begin
require 'asciidoctor'
class AsciidoctorTest < Minitest::Test
def asciidoc_app(&block)
mock_app do
set :views, __dir__ + '/views'
get('/', &block)
end
get '/'
end
it 'renders inline AsciiDoc strings' do
asciidoc_app { asciidoc '== Hiya' }
assert ok?
assert_match %r{<h2.*?>Hiya</h2>}, body
end
it 'uses the correct engine' do
engine = Tilt::AsciidoctorTemplate
assert_equal engine, Tilt[:ad]
assert_equal engine, Tilt[:adoc]
assert_equal engine, Tilt[:asciidoc]
end
it 'renders .asciidoc files in views path' do
asciidoc_app { asciidoc :hello }
assert ok?
assert_match %r{<h2.*?>Hello from AsciiDoc</h2>}, body
end
it 'raises error if template not found' do
mock_app { get('/') { asciidoc :no_such_template } }
assert_raises(Errno::ENOENT) { get('/') }
end
it 'renders with inline layouts' do
mock_app do
layout { 'THIS. IS. #{yield.upcase}!' }
get('/') { asciidoc 'Sparta', :layout_engine => :str }
end
get '/'
assert ok?
assert_include body, 'THIS. IS.'
assert_include body, '<P>SPARTA</P>'
end
it 'renders with file layouts' do
asciidoc_app do
asciidoc 'Hello World', :layout => :layout2, :layout_engine => :erb
end
assert ok?
assert_include body, 'ERB Layout!'
assert_include body, '<p>Hello World</p>'
end
it 'can be used in a nested fashion for partials and whatnot' do
mock_app do
template(:inner) { 'hi' }
template(:outer) { '<outer><%= asciidoc :inner %></outer>' }
get('/') { erb :outer }
end
get '/'
assert ok?
assert_match %r{<outer>.*<p.*?>hi</p>.*</outer>}m, body
end
end
rescue LoadError
warn "#{$!}: skipping asciidoc tests"
end