require 'test/unit' require 'fileutils' require 'soks-storage' class MockWiki include WikiFlatFileStore def initialize( folder ) @folder = folder @pages = {} end def mutate( pagename ) p yield( @pages[pagename.downcase] ||= Page.new( pagename ) ) end end class TestWikiFlatFileStore < Test::Unit::TestCase include FileUtils def setup @wiki = MockWiki.new(folder) end def test_rename create_file 'a handy file.textile', 'hello world' assert_equal( ['a handy file.textile'], files ) @wiki.move_files_if_names_are_not_url_encoded assert_equal( ['a%20handy%20file.textile'], files ) end def test_remove_unwanted_characters create_file 'a&b.textile', 'hello world' assert_equal( ['a&b.textile'], files ) @wiki.move_files_if_names_are_not_url_encoded assert_equal( ['ab.textile'], files ) end def test_avoid_overwriting_on_rename create_file 'a&b.textile', 'hello world' create_file 'ab.textile', 'hello world' assert_equal( ['a&b.textile','ab.textile'], files ) @wiki.move_files_if_names_are_not_url_encoded assert_equal( ['ab.textile','ab1.textile'], files ) end def teardown rmtree( folder ) end private def create_file( name, content ) File.open( File.join( folder, name ), 'w') { |f| f.puts content } end def files Dir.entries( folder ).delete_if { |name| name =~ /^\.+$/ } end def folder @folder ||= make_folder end def make_folder mkdir( 'testcontent' ) 'testcontent' end end