Files
gollum/test/test_file_view.rb
T
2012-11-10 17:02:27 -07:00

121 lines
2.5 KiB
Ruby

# ~*~ encoding: utf-8 ~*~
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
require File.expand_path '../../lib/gollum/file_view', __FILE__
class FakePage
def initialize filepath
@filepath = filepath
end
# From page.rb
def filename_stripped
::File.basename(@filepath, ::File.extname(@filepath))
end
def filename
::File.basename(@filepath)
end
def path
return @filepath
end
# From page.rb
def name
self.class.canonicalize_filename @filepath
end
# From page.rb
def self.strip_filename filename
::File.basename( filename, ::File.extname( filename ))
end
# From page.rb
def self.canonicalize_filename filename
strip_filename(filename).gsub('-', ' ')
end
end
class FakePages
def initialize filepath_array
@array = filepath_array.map { | filepath | FakePage.new filepath }
end
def size
@array.size
end
def [] index
@array[ index ]
end
end
def view pages
Gollum::FileView.new( pages ).render_files
end
@@test_path = File.expand_path( '../file_view/' , __FILE__ ) + '/'
def read file
File.read @@test_path + file + '.txt'
end
# For creating expected files.
# write name, actual
def write file, content
File.open(@@test_path + file + '.txt', 'w') do | f |
f.write content
end
end
def to_html html
# Remove blank nodes for proper formatting
doc = Nokogiri.XML(html) do |cfg|
cfg.default_xml.noblanks
end
# Save as XHTML
doc.to_xml( { :save_with => Nokogiri::XML::Node::SaveOptions::DEFAULT_XHTML, :indent => 2, :encoding => 'UTF-8' } )
end
def check name, pages_array
pages = FakePages.new pages_array
expected = read name
actual = to_html view pages
# Uncomment when updating tests
# write name, actual
assert_equal expected, actual
end
# Test Notes
# root files must be before any folders.
# Home.md => file at root folder
# docs/sanitization.md => file within folder
context 'file_view' do
test 'one file' do
check '1_file', [ '0.md' ]
end
test 'one folder' do
check '1_folder', [ 'folder0/' ]
end
test 'one file with one folder' do
check '1_file_1_folder', [ 'folder0/0.md' ]
end
test 'two files with two folders' do
check '2_files_2_folders', [ 'folder0/0.md', 'folder1/1.md' ]
end
test 'two files with two folders and one root file' do
check '2_files_2_folders_1_root', [ 'root.md', 'folder0/0.md', 'folder1/1.md' ]
end
test 'nested folders' do
check 'nested_folders', [ 'folder0/folder1/folder2/0.md', 'folder0/folder1/folder3/1.md', 'folder4/2.md' ]
end
end # context