Added assertions for the response content in pdf action; changed all output file names to include seconds
This commit is contained in:
parent
01c5a65405
commit
bd8e725578
|
@ -80,16 +80,16 @@ class WikiController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def export_pdf
|
def export_pdf
|
||||||
file_name = "#{web.address}-tex-#{web.revised_on.strftime('%Y-%m-%d-%H-%M')}"
|
file_name = "#{web.address}-tex-#{web.revised_on.strftime('%Y-%m-%d-%H-%M-%S')}"
|
||||||
file_path = WikiService.storage_path + file_name
|
file_path = WikiService.storage_path + file_name
|
||||||
|
|
||||||
export_web_to_tex(file_path + ".tex") unless FileTest.exists?(file_path + ".tex")
|
export_web_to_tex "#{file_path}.tex" unless FileTest.exists? "#{file_path}.tex"
|
||||||
convert_tex_to_pdf(file_path + ".tex")
|
convert_tex_to_pdf "#{file_path}.tex"
|
||||||
send_export(file_name + ".pdf", file_path + ".pdf")
|
send_export("#{file_name}.tex", "#{file_path}.tex")
|
||||||
end
|
end
|
||||||
|
|
||||||
def export_tex
|
def export_tex
|
||||||
file_name = "#{web.address}-tex-#{web.revised_on.strftime('%Y-%m-%d-%H-%M')}.tex"
|
file_name = "#{web.address}-tex-#{web.revised_on.strftime('%Y-%m-%d-%H-%M-%S')}.tex"
|
||||||
file_path = WikiService.storage_path + file_name
|
file_path = WikiService.storage_path + file_name
|
||||||
|
|
||||||
export_web_to_tex(file_path) unless FileTest.exists?(file_path)
|
export_web_to_tex(file_path) unless FileTest.exists?(file_path)
|
||||||
|
@ -182,7 +182,7 @@ class WikiController < ApplicationController
|
||||||
def pdf
|
def pdf
|
||||||
page = wiki.read_page(@web_name, @page_name)
|
page = wiki.read_page(@web_name, @page_name)
|
||||||
safe_page_name = @page.name.gsub(/\W/, '')
|
safe_page_name = @page.name.gsub(/\W/, '')
|
||||||
file_name = "#{safe_page_name}-#{@web.address}-#{@page.created_at.strftime("%Y-%m-%d-%H-%M")}"
|
file_name = "#{safe_page_name}-#{@web.address}-#{@page.created_at.strftime('%Y-%m-%d-%H-%M-%S')}"
|
||||||
file_path = WikiService.storage_path + file_name
|
file_path = WikiService.storage_path + file_name
|
||||||
|
|
||||||
export_page_to_tex(file_path + '.tex') unless FileTest.exists?(file_path + '.tex')
|
export_page_to_tex(file_path + '.tex') unless FileTest.exists?(file_path + '.tex')
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
# Uncomment the line below to enable pdflatex tests; don't forget to comment them again
|
# Uncomment the line below to enable pdflatex tests; don't forget to comment them again
|
||||||
# commiting to SVN
|
# commiting to SVN
|
||||||
$INSTIKI_TEST_PDFLATEX = true
|
# $INSTIKI_TEST_PDFLATEX = true
|
||||||
|
|
||||||
require File.dirname(__FILE__) + '/../test_helper'
|
require File.dirname(__FILE__) + '/../test_helper'
|
||||||
require 'wiki_controller'
|
require 'wiki_controller'
|
||||||
|
@ -266,15 +266,49 @@ class WikiControllerTest < Test::Unit::TestCase
|
||||||
if ENV['INSTIKI_TEST_LATEX'] or defined? $INSTIKI_TEST_PDFLATEX
|
if ENV['INSTIKI_TEST_LATEX'] or defined? $INSTIKI_TEST_PDFLATEX
|
||||||
|
|
||||||
def test_pdf
|
def test_pdf
|
||||||
if RedClothForTex.available?
|
assert RedClothForTex.available?, 'Cannot do test_pdf when pdflatex is not available'
|
||||||
process('pdf', 'web' => 'wiki1', 'id' => 'HomePage')
|
r = process('pdf', 'web' => 'wiki1', 'id' => 'HomePage')
|
||||||
end
|
assert_success
|
||||||
|
|
||||||
|
content = r.binary_content
|
||||||
|
|
||||||
|
assert_equal '%PDF', content[0..3]
|
||||||
|
assert_equal "EOF\n", content[-4..-1]
|
||||||
|
|
||||||
|
assert_equal 'application/octet_stream', r.headers['Content-Type']
|
||||||
|
assert_match /attachment; filename="HomePage-wiki1-\d\d\d\d-\d\d-\d\d-\d\d-\d\d-\d\d.pdf"/,
|
||||||
|
r.headers['Content-Disposition']
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_pdf
|
||||||
|
assert RedClothForTex.available?, 'Cannot do test_pdf when pdflatex is not available'
|
||||||
|
r = process('pdf', 'web' => 'wiki1', 'id' => 'HomePage')
|
||||||
|
assert_success
|
||||||
|
|
||||||
|
sio = StringIO.new
|
||||||
|
begin
|
||||||
|
$stdout = sio
|
||||||
|
r.body.call
|
||||||
|
ensure
|
||||||
|
$stdout = STDOUT
|
||||||
|
end
|
||||||
|
|
||||||
|
sio.rewind
|
||||||
|
content = sio.read
|
||||||
|
|
||||||
|
assert_equal '%PDF', content[0..3]
|
||||||
|
assert_equal "EOF\n", content[-4..-1]
|
||||||
|
|
||||||
|
assert_equal 'application/octet_stream', r.headers['Content-Type']
|
||||||
|
assert_match /attachment; filename="HomePage-wiki1-\d\d\d\d-\d\d-\d\d-\d\d-\d\d-\d\d.pdf"/,
|
||||||
|
r.headers['Content-Disposition']
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
else
|
else
|
||||||
puts "Warning: tests involving pdflatex are very slow, therefore they are disable by default."
|
puts 'Warning: tests involving pdflatex are very slow, therefore they are disable by default.'
|
||||||
puts " Set environment variable INSTIKI_TEST_PDFLATEX or global Ruby variable"
|
puts ' Set environment variable INSTIKI_TEST_PDFLATEX or global Ruby variable'
|
||||||
puts " $INSTIKI_TEST_PDFLATEX to enable them."
|
puts ' $INSTIKI_TEST_PDFLATEX to enable them.'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -68,3 +68,21 @@ module ChunkMatch
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
module AbstractController
|
||||||
|
class TestResponse
|
||||||
|
def binary_content
|
||||||
|
sio = StringIO.new
|
||||||
|
begin
|
||||||
|
$stdout = sio
|
||||||
|
r.body.call
|
||||||
|
ensure
|
||||||
|
$stdout = STDOUT
|
||||||
|
end
|
||||||
|
|
||||||
|
sio.rewind
|
||||||
|
sio.read
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue