require 'spec_helper'
require 'digest/md5'
require 'pdf/inspector'
describe ConvertToPDF do
after do
pdf = 'spec/fixtures/hello_world.pdf'
File.delete(pdf) if File.exist?(pdf)
end
describe '#pdf' do
it 'creates a PDF file containing all desired source code' do
path = 'spec/fixtures/hello_world'
pdf = 'spec/fixtures/hello_world_output.pdf'
original = 'spec/fixtures/hello_world_original.pdf'
blacklist = 'spec/fixtures/hello_world/.code2pdf'
ConvertToPDF.new from: path, to: pdf, except: blacklist
text_analysis = read_strings("#{Dir.pwd}/#{pdf}")
text_analysis_original = read_strings("#{Dir.pwd}/#{original}")
expect(text_analysis).to eq(text_analysis_original)
File.delete(pdf)
end
it 'raises an error if required params are not present' do
expect { ConvertToPDF.new(foo: 'bar') }.to raise_error(ArgumentError)
end
it 'raises an error if path does not exist' do
path = 'spec/fixtures/isto_non_existe_quevedo'
pdf = 'spec/fixtures/isto_non_existe_quevedo.pdf'
expect { ConvertToPDF.new(from: path, to: pdf) }.to raise_error(LoadError)
end
it 'raises an error if blacklist file is not valid' do
path = 'spec/fixtures/hello_world'
pdf = 'spec/fixtures/hello_world.pdf'
blacklist = 'spec/fixtures/purplelist.yml'
expect { ConvertToPDF.new from: path, to: pdf, except: blacklist }.to raise_error(LoadError)
end
end
describe '#prepare_line_breaks' do
let :pdf do
ConvertToPDF.new from: 'spec/fixtures/hello_world', to: 'spec/fixtures/hello_world.pdf'
end
it 'converts strings with \n to
for PDF generation' do
test_text = "test\ntest"
expect(pdf.send(:prepare_line_breaks, test_text)).to eq('test
test')
end
end
describe '#syntax_highlight' do
let :pdf do
ConvertToPDF.new from: 'spec/fixtures/hello_world', to: 'spec/fixtures/hello_world.pdf'
end
it 'returns file with syntax_highlight html clases' do
path = 'spec/fixtures/hello_world/lib/hello.rb'
output = File.read('spec/fixtures/syntax_highlight.html')
content = pdf.send(:process_file, path)
file = [path, content]
expect(pdf.send(:syntax_highlight, file)).to eq(output)
end
end
end
def read_strings(file)
PDF::Inspector::Text.analyze(File.read(file)).strings
end