Added assertions for the response content in pdf action; changed all output file names to include seconds

This commit is contained in:
Alexey Verkhovsky 2005-01-17 18:09:13 +00:00
parent 01c5a65405
commit bd8e725578
3 changed files with 69 additions and 17 deletions

View file

@ -80,16 +80,16 @@ class WikiController < ApplicationController
end
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
export_web_to_tex(file_path + ".tex") unless FileTest.exists?(file_path + ".tex")
convert_tex_to_pdf(file_path + ".tex")
send_export(file_name + ".pdf", file_path + ".pdf")
export_web_to_tex "#{file_path}.tex" unless FileTest.exists? "#{file_path}.tex"
convert_tex_to_pdf "#{file_path}.tex"
send_export("#{file_name}.tex", "#{file_path}.tex")
end
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
export_web_to_tex(file_path) unless FileTest.exists?(file_path)
@ -182,7 +182,7 @@ class WikiController < ApplicationController
def pdf
page = wiki.read_page(@web_name, @page_name)
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
export_page_to_tex(file_path + '.tex') unless FileTest.exists?(file_path + '.tex')

View file

@ -2,7 +2,7 @@
# Uncomment the line below to enable pdflatex tests; don't forget to comment them again
# commiting to SVN
$INSTIKI_TEST_PDFLATEX = true
# $INSTIKI_TEST_PDFLATEX = true
require File.dirname(__FILE__) + '/../test_helper'
require 'wiki_controller'
@ -266,15 +266,49 @@ class WikiControllerTest < Test::Unit::TestCase
if ENV['INSTIKI_TEST_LATEX'] or defined? $INSTIKI_TEST_PDFLATEX
def test_pdf
if RedClothForTex.available?
process('pdf', 'web' => 'wiki1', 'id' => 'HomePage')
end
assert RedClothForTex.available?, 'Cannot do test_pdf when pdflatex is not available'
r = process('pdf', 'web' => 'wiki1', 'id' => 'HomePage')
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
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
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 " $INSTIKI_TEST_PDFLATEX to enable them."
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 ' $INSTIKI_TEST_PDFLATEX to enable them.'
end

View file

@ -68,3 +68,21 @@ module ChunkMatch
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