test/test_soks-storage.rb in Soks-0.0.7 vs test/test_soks-storage.rb in Soks-1.0.0
- old
+ new
@@ -1,69 +1,108 @@
require 'test/unit'
require 'fileutils'
+require 'mock-objects'
require 'soks-storage'
-class MockWiki
- include WikiFlatFileStore
+module TestMod
+ class TestClass
+ def initialize(stuff)
+ @stuff = stuff
+ end
+ end
+end
+
+class TestWikiCacheStore < Test::Unit::TestCase
+ include WikiCacheStore
+ include TearDownableWiki
- def initialize( folder )
- @folder = folder
- @pages = {}
+ def setup
+ @cache_folder = folder
end
- def mutate( pagename )
- p yield( @pages[pagename.downcase] ||= Page.new( pagename ) )
+ def test_no_cache
+ @cache_folder = nil
+ save_cache( :test, "test class" )
+ assert_equal( [], files )
+ assert_equal( nil, load_cache( :test ) )
end
+
+ def test_cache
+ save_cache( :test, "test class" )
+ assert_equal( ['test.marshal'], files )
+ assert_equal( "test class", load_cache( :test ) )
+ assert_equal( [], files ) # Caches deleted on load
+ assert_equal( nil, load_cache( :test ) )
+ end
end
class TestWikiFlatFileStore < Test::Unit::TestCase
- include FileUtils
+ include TearDownableWiki
- def setup
- @wiki = MockWiki.new(folder)
- end
-
- def test_rename
+ def test_rename_if_not_url_encoded
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 )
+ assert_equal( ['a%26b.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 )
+ create_file 'a%26b.textile', 'hello world'
+ assert_equal( ['a%26b.textile','a&b.textile'], files )
@wiki.move_files_if_names_are_not_url_encoded
- assert_equal( ['ab.textile','ab1.textile'], files )
+ assert_equal( ['a%26b.textile','a%26b1.textile'], files )
end
- def teardown
- rmtree( folder )
+ def test_rename_on_caps_change
+ create_file 'Hello%20World.textile', 'hello world'
+ create_file 'Hello%20World.yaml', 'hello world'
+ assert_equal( ['Hello%20World.textile', 'Hello%20World.yaml'], files)
+ @wiki.move_files_for_page( 'Hello World', 'hello world' )
+ assert_equal( ['hello%20world.textile','hello%20world.yaml'], files)
end
-
- private
- def create_file( name, content )
- File.open( File.join( folder, name ), 'w') { |f| f.puts content }
+ def test_delete_files_for_page
+ create_file 'Hello%20World.textile', 'hello world'
+ create_file 'Hello%20World.yaml', 'hello world'
+ assert_equal( ['Hello%20World.textile', 'Hello%20World.yaml'], files)
+ @wiki.delete_files_for_page( 'Hello World')
+ assert_equal( [], files)
end
- def files
- Dir.entries( folder ).delete_if { |name| name =~ /^\.+$/ }
+ def test_write_all_revisions
+ 1.upto(5) do |i|
+ @wiki.revise('test page',"#{i}","test author")
+ end
+
+ page = @wiki.page('test page')
+ assert_equal( 5, page.revisions.size )
+
+ revisions = @wiki.load_revisions( page )
+ assert_equal( 5, revisions.size )
+
+ page.revisions = [ [0,[[[0,'+','5']]],'test author',Time.now] ]
+ assert_equal( 1, page.revisions.size )
+ @wiki.revise('test page','extra revision', 'second author')
+ assert_equal( 2, page.revisions.size )
+ assert_equal( 5, @wiki.load_revisions( page ).size )
+
+ @wiki.save_all_revisions( page )
+ revisions = @wiki.load_revisions( page )
+ assert_equal( 2, revisions.size )
+ assert_equal( 'second author', revisions[1].author )
end
- def folder
- @folder ||= make_folder
- end
+ private
- def make_folder
- mkdir( 'testcontent' )
- 'testcontent'
+ def create_file( name, content )
+ File.open( File.join( folder, name ), 'w') { |f| f.puts content }
end
+
end
\ No newline at end of file