# redMine - project management software # Copyright (C) 2006-2007 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require File.dirname(__FILE__) + '/../../test_helper' class ApplicationHelperTest < HelperTestCase include ApplicationHelper include ActionView::Helpers::TextHelper fixtures :projects, :repositories, :changesets, :trackers, :issue_statuses, :issues, :documents, :versions, :wikis, :wiki_pages, :wiki_contents def setup super end def test_auto_links to_test = { 'http://foo.bar' => 'http://foo.bar', 'http://foo.bar/~user' => 'http://foo.bar/~user', 'http://foo.bar.' => 'http://foo.bar.', 'http://foo.bar/foo.bar#foo.bar.' => 'http://foo.bar/foo.bar#foo.bar.', 'www.foo.bar' => 'www.foo.bar', 'http://foo.bar/page?p=1&t=z&s=' => 'http://foo.bar/page?p=1&t=z&s=', 'http://foo.bar/page#125' => 'http://foo.bar/page#125' } to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end def test_auto_mailto assert_equal '

test@foo.bar

', textilizable('test@foo.bar') end def test_inline_images to_test = { '!http://foo.bar/image.jpg!' => '', 'floating !>http://foo.bar/image.jpg!' => 'floating
', 'with class !(some-class)http://foo.bar/image.jpg!' => 'with class ', 'with style !{width:100px;height100px}http://foo.bar/image.jpg!' => 'with style ', } to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end def test_textile_external_links to_test = { 'This is a "link":http://foo.bar' => 'This is a link', 'This is an intern "link":/foo/bar' => 'This is an intern link', '"link (Link title)":http://foo.bar' => 'link' } to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end def test_redmine_links issue_link = link_to('#3', {:controller => 'issues', :action => 'show', :id => 3}, :class => 'issue', :title => 'Error 281 when updating a recipe (New)') changeset_link = link_to('r1', {:controller => 'repositories', :action => 'revision', :id => 1, :rev => 1}, :class => 'changeset', :title => 'My very first commit') document_link = link_to('Test document', {:controller => 'documents', :action => 'show', :id => 1}, :class => 'document') version_link = link_to('1.0', {:controller => 'versions', :action => 'show', :id => 2}, :class => 'version') to_test = { '#3, #3 and #3.' => "#{issue_link}, #{issue_link} and #{issue_link}.", 'r1' => changeset_link, 'document#1' => document_link, 'document:"Test document"' => document_link, 'version#2' => version_link, 'version:1.0' => version_link, 'version:"1.0"' => version_link, # escaping '!#3.' => '#3.', '!r1' => 'r1', '!document#1' => 'document#1', '!document:"Test document"' => 'document:"Test document"', '!version#2' => 'version#2', '!version:1.0' => 'version:1.0', '!version:"1.0"' => 'version:"1.0"', } @project = Project.find(1) to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end def test_wiki_links to_test = { '[[CookBook documentation]]' => 'CookBook documentation', '[[Another page|Page]]' => 'Page', # page that doesn't exist '[[Unknown page]]' => 'Unknown page', '[[Unknown page|404]]' => '404', # link to another project wiki '[[onlinestore:]]' => 'onlinestore', '[[onlinestore:|Wiki]]' => 'Wiki', '[[onlinestore:Start page]]' => 'Start page', '[[onlinestore:Start page|Text]]' => 'Text', '[[onlinestore:Unknown page]]' => 'Unknown page', # escaping '![[Another page|Page]]' => '[[Another page|Page]]', } @project = Project.find(1) to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end def test_macro_hello_world text = "{{hello_world}}" assert textilizable(text).match(/Hello world!/) # escaping text = "!{{hello_world}}" assert_equal '

{{hello_world}}

', textilizable(text) end def test_date_format_default today = Date.today Setting.date_format = '' assert_equal l_date(today), format_date(today) end def test_date_format today = Date.today Setting.date_format = '%d %m %Y' assert_equal today.strftime('%d %m %Y'), format_date(today) end def test_time_format_default now = Time.now Setting.date_format = '' Setting.time_format = '' assert_equal l_datetime(now), format_time(now) assert_equal l_time(now), format_time(now, false) end def test_time_format now = Time.now Setting.date_format = '%d %m %Y' Setting.time_format = '%H %M' assert_equal now.strftime('%d %m %Y %H %M'), format_time(now) assert_equal now.strftime('%H %M'), format_time(now, false) end end