summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2008-11-22 11:44:07 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2008-11-22 11:44:07 +0000
commit06266c8fecd78d620b7eb55c7d9df1b65340b5b1 (patch)
tree1c6938e22bf0b3fe52c7f2f4c2d9ade991224339 /test
parentaf7e586b063398fe75104837b1d11d0886139b7e (diff)
downloadredmine-06266c8fecd78d620b7eb55c7d9df1b65340b5b1.tar.gz
redmine-06266c8fecd78d620b7eb55c7d9df1b65340b5b1.zip
Extends child_pages macro to display child pages based on page parameter (#1975).
It can also be called from anywhere now (not only from wiki pages). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2053 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/fixtures/wiki_contents.yml22
-rw-r--r--test/fixtures/wiki_pages.yml14
-rw-r--r--test/unit/helpers/application_helper_test.rb26
-rw-r--r--test/unit/lib/redmine/wiki_formatting/macros_test.rb98
4 files changed, 134 insertions, 26 deletions
diff --git a/test/fixtures/wiki_contents.yml b/test/fixtures/wiki_contents.yml
index 8c53d4d97..8798ff229 100644
--- a/test/fixtures/wiki_contents.yml
+++ b/test/fixtures/wiki_contents.yml
@@ -47,4 +47,26 @@ wiki_contents_004:
version: 1
author_id: 1
comments:
+wiki_contents_005:
+ text: |-
+ h1. Child page 1
+
+ This is a child page
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 5
+ id: 5
+ version: 1
+ author_id: 1
+ comments:
+wiki_contents_006:
+ text: |-
+ h1. Child page 2
+
+ This is a child page
+ updated_on: 2007-03-08 00:18:07 +01:00
+ page_id: 6
+ id: 6
+ version: 1
+ author_id: 1
+ comments:
\ No newline at end of file
diff --git a/test/fixtures/wiki_pages.yml b/test/fixtures/wiki_pages.yml
index e285441ff..8d29c2f72 100644
--- a/test/fixtures/wiki_pages.yml
+++ b/test/fixtures/wiki_pages.yml
@@ -27,4 +27,18 @@ wiki_pages_004:
wiki_id: 1
protected: false
parent_id: 1
+wiki_pages_005:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Child_1
+ id: 5
+ wiki_id: 1
+ protected: false
+ parent_id: 2
+wiki_pages_006:
+ created_on: 2007-03-08 00:18:07 +01:00
+ title: Child_2
+ id: 6
+ wiki_id: 1
+ protected: false
+ parent_id: 2
\ No newline at end of file
diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb
index d23300309..31bc1e49d 100644
--- a/test/unit/helpers/application_helper_test.rb
+++ b/test/unit/helpers/application_helper_test.rb
@@ -359,32 +359,6 @@ EXPECTED
assert_equal expected.gsub(%r{\s+}, ''), textilizable(raw).gsub(%r{\s+}, '')
end
- def test_macro_hello_world
- text = "{{hello_world}}"
- assert textilizable(text).match(/Hello world!/)
- # escaping
- text = "!{{hello_world}}"
- assert_equal '<p>{{hello_world}}</p>', textilizable(text)
- end
-
- def test_macro_include
- @project = Project.find(1)
- # include a page of the current project wiki
- text = "{{include(Another page)}}"
- assert textilizable(text).match(/This is a link to a ticket/)
-
- @project = nil
- # include a page of a specific project wiki
- text = "{{include(ecookbook:Another page)}}"
- assert textilizable(text).match(/This is a link to a ticket/)
-
- text = "{{include(ecookbook:)}}"
- assert textilizable(text).match(/CookBook documentation/)
-
- text = "{{include(unknowidentifier:somepage)}}"
- assert textilizable(text).match(/Unknow project/)
- end
-
def test_default_formatter
Setting.text_formatting = 'unknown'
text = 'a *link*: http://www.example.net/'
diff --git a/test/unit/lib/redmine/wiki_formatting/macros_test.rb b/test/unit/lib/redmine/wiki_formatting/macros_test.rb
new file mode 100644
index 000000000..b5284acd3
--- /dev/null
+++ b/test/unit/lib/redmine/wiki_formatting/macros_test.rb
@@ -0,0 +1,98 @@
+# Redmine - project management software
+# Copyright (C) 2006-2008 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 Redmine::WikiFormatting::MacrosTest < HelperTestCase
+ include ApplicationHelper
+ include ActionView::Helpers::TextHelper
+ fixtures :projects, :roles, :enabled_modules, :users,
+ :repositories, :changesets,
+ :trackers, :issue_statuses, :issues,
+ :versions, :documents,
+ :wikis, :wiki_pages, :wiki_contents,
+ :boards, :messages,
+ :attachments
+
+ def setup
+ super
+ @project = nil
+ end
+
+ def teardown
+ end
+
+ def test_macro_hello_world
+ text = "{{hello_world}}"
+ assert textilizable(text).match(/Hello world!/)
+ # escaping
+ text = "!{{hello_world}}"
+ assert_equal '<p>{{hello_world}}</p>', textilizable(text)
+ end
+
+ def test_macro_include
+ @project = Project.find(1)
+ # include a page of the current project wiki
+ text = "{{include(Another page)}}"
+ assert textilizable(text).match(/This is a link to a ticket/)
+
+ @project = nil
+ # include a page of a specific project wiki
+ text = "{{include(ecookbook:Another page)}}"
+ assert textilizable(text).match(/This is a link to a ticket/)
+
+ text = "{{include(ecookbook:)}}"
+ assert textilizable(text).match(/CookBook documentation/)
+
+ text = "{{include(unknowidentifier:somepage)}}"
+ assert textilizable(text).match(/Page not found/)
+ end
+
+ def test_macro_child_pages
+ expected = "<p><ul class=\"pages-hierarchy\">\n" +
+ "<li><a href=\"/wiki/ecookbook/Child_1\">Child 1</a></li>\n" +
+ "<li><a href=\"/wiki/ecookbook/Child_2\">Child 2</a></li>\n" +
+ "</ul>\n</p>"
+
+ @project = Project.find(1)
+ # child pages of the current wiki page
+ assert_equal expected, textilizable("{{child_pages}}", :object => WikiPage.find(2).content)
+ # child pages of another page
+ assert_equal expected, textilizable("{{child_pages(Another_page)}}", :object => WikiPage.find(1).content)
+
+ @project = Project.find(2)
+ assert_equal expected, textilizable("{{child_pages(ecookbook:Another_page)}}", :object => WikiPage.find(1).content)
+ end
+
+ def test_macro_child_pages_with_option
+ expected = "<p><ul class=\"pages-hierarchy\">\n" +
+ "<li><a href=\"/wiki/ecookbook/Another_page\">Another page</a>\n" +
+ "<ul class=\"pages-hierarchy\">\n" +
+ "<li><a href=\"/wiki/ecookbook/Child_1\">Child 1</a></li>\n" +
+ "<li><a href=\"/wiki/ecookbook/Child_2\">Child 2</a></li>\n" +
+ "</ul>\n</li>\n</ul>\n</p>"
+
+ @project = Project.find(1)
+ # child pages of the current wiki page
+ assert_equal expected, textilizable("{{child_pages(parent=1)}}", :object => WikiPage.find(2).content)
+ # child pages of another page
+ assert_equal expected, textilizable("{{child_pages(Another_page, parent=1)}}", :object => WikiPage.find(1).content)
+
+ @project = Project.find(2)
+ assert_equal expected, textilizable("{{child_pages(ecookbook:Another_page, parent=1)}}", :object => WikiPage.find(1).content)
+ end
+end