81 lines
2.5 KiB
Ruby
Executable file
81 lines
2.5 KiB
Ruby
Executable file
#!/bin/env ruby
|
|
|
|
require File.dirname(__FILE__) + '/../../test_helper'
|
|
require 'chunks/wiki'
|
|
|
|
class WikiTest < Test::Unit::TestCase
|
|
|
|
class ContentStub < String
|
|
def chunks
|
|
@chunks ||= []
|
|
end
|
|
end
|
|
|
|
include ChunkMatch
|
|
|
|
def test_simple
|
|
match(WikiChunk::Word, 'This is a WikiWord okay?', :page_name => 'WikiWord')
|
|
end
|
|
|
|
def test_escaped
|
|
match(WikiChunk::Word, 'Do not link to an \EscapedWord',
|
|
:page_name => 'EscapedWord', :escaped_text => 'EscapedWord'
|
|
)
|
|
end
|
|
|
|
def test_simple_brackets
|
|
match(WikiChunk::Link, 'This is a [[bracketted link]]',
|
|
:page_name => 'bracketted link', :escaped_text => nil
|
|
)
|
|
end
|
|
|
|
def test_complex_brackets
|
|
match(WikiChunk::Link, 'This is a tricky link [[Sperberg-McQueen]]',
|
|
:page_name => 'Sperberg-McQueen', :escaped_text => nil
|
|
)
|
|
end
|
|
|
|
def test_textile_link
|
|
textile_link = ContentStub.new('"Here is a special link":SpecialLink')
|
|
WikiChunk::Word.apply_to(textile_link)
|
|
assert_equal '"Here is a special link":SpecialLink', textile_link
|
|
assert textile_link.chunks.empty?
|
|
end
|
|
|
|
def test_file_types
|
|
# only link
|
|
assert_link_parsed_as 'only text', 'only text', :show, '[[only text]]'
|
|
# link and text
|
|
assert_link_parsed_as 'page name', 'link text', :show, '[[page name|link text]]'
|
|
# link and type (file)
|
|
assert_link_parsed_as 'foo.tar.gz', 'foo.tar.gz', :file, '[[foo.tar.gz:file]]'
|
|
# link and type (pic)
|
|
assert_link_parsed_as 'foo.tar.gz', 'foo.tar.gz', :pic, '[[foo.tar.gz:pic]]'
|
|
# link, text and type
|
|
assert_link_parsed_as 'foo.tar.gz', 'FooTar', :file, '[[foo.tar.gz|FooTar:file]]'
|
|
|
|
# NEGATIVE TEST CASES
|
|
|
|
# empty page name
|
|
assert_link_parsed_as '|link text?', '|link text?', :file, '[[|link text?:file]]'
|
|
# empty link text
|
|
assert_link_parsed_as 'page name?|', 'page name?|', :file, '[[page name?|:file]]'
|
|
# empty link type
|
|
assert_link_parsed_as 'page name', 'link?:', :show, '[[page name|link?:]]'
|
|
# unknown link type
|
|
assert_link_parsed_as 'page name:create_system', 'page name:create_system', :show,
|
|
'[[page name:create_system]]'
|
|
end
|
|
|
|
def assert_link_parsed_as(expected_page_name, expected_link_text, expected_link_type, link)
|
|
link_to_file = ContentStub.new(link)
|
|
WikiChunk::Link.apply_to(link_to_file)
|
|
chunk = link_to_file.chunks.last
|
|
assert chunk
|
|
assert_equal expected_page_name, chunk.page_name
|
|
assert_equal expected_link_text, chunk.link_text
|
|
assert_equal expected_link_type, chunk.link_type
|
|
end
|
|
|
|
end
|