To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / test / unit / .svn / text-base / wiki_page_test.rb.svn-base @ 441:cbce1fd3b1b7

History | View | Annotate | Download (3.99 KB)

1 441:cbce1fd3b1b7 Chris
# Redmine - project management software
2
# Copyright (C) 2006-2011  Jean-Philippe Lang
3 0:513646585e45 Chris
#
4
# This program is free software; you can redistribute it and/or
5
# modify it under the terms of the GNU General Public License
6
# as published by the Free Software Foundation; either version 2
7
# of the License, or (at your option) any later version.
8 441:cbce1fd3b1b7 Chris
#
9 0:513646585e45 Chris
# This program is distributed in the hope that it will be useful,
10
# but WITHOUT ANY WARRANTY; without even the implied warranty of
11
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
# GNU General Public License for more details.
13 441:cbce1fd3b1b7 Chris
#
14 0:513646585e45 Chris
# You should have received a copy of the GNU General Public License
15
# along with this program; if not, write to the Free Software
16
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17
18 119:8661b858af72 Chris
require File.expand_path('../../test_helper', __FILE__)
19 0:513646585e45 Chris
20
class WikiPageTest < ActiveSupport::TestCase
21
  fixtures :projects, :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions
22
23
  def setup
24
    @wiki = Wiki.find(1)
25
    @page = @wiki.pages.first
26
  end
27 441:cbce1fd3b1b7 Chris
28 0:513646585e45 Chris
  def test_create
29
    page = WikiPage.new(:wiki => @wiki)
30
    assert !page.save
31
    assert_equal 1, page.errors.count
32 441:cbce1fd3b1b7 Chris
33 0:513646585e45 Chris
    page.title = "Page"
34
    assert page.save
35
    page.reload
36
    assert !page.protected?
37 441:cbce1fd3b1b7 Chris
38 0:513646585e45 Chris
    @wiki.reload
39
    assert @wiki.pages.include?(page)
40
  end
41 441:cbce1fd3b1b7 Chris
42 0:513646585e45 Chris
  def test_sidebar_should_be_protected_by_default
43
    page = @wiki.find_or_new_page('sidebar')
44
    assert page.new_record?
45
    assert page.protected?
46
  end
47 441:cbce1fd3b1b7 Chris
48 0:513646585e45 Chris
  def test_find_or_new_page
49
    page = @wiki.find_or_new_page("CookBook documentation")
50
    assert_kind_of WikiPage, page
51
    assert !page.new_record?
52 441:cbce1fd3b1b7 Chris
53 0:513646585e45 Chris
    page = @wiki.find_or_new_page("Non existing page")
54
    assert_kind_of WikiPage, page
55
    assert page.new_record?
56
  end
57 441:cbce1fd3b1b7 Chris
58 0:513646585e45 Chris
  def test_parent_title
59
    page = WikiPage.find_by_title('Another_page')
60
    assert_nil page.parent_title
61 441:cbce1fd3b1b7 Chris
62 0:513646585e45 Chris
    page = WikiPage.find_by_title('Page_with_an_inline_image')
63
    assert_equal 'CookBook documentation', page.parent_title
64
  end
65 441:cbce1fd3b1b7 Chris
66 0:513646585e45 Chris
  def test_assign_parent
67
    page = WikiPage.find_by_title('Another_page')
68
    page.parent_title = 'CookBook documentation'
69
    assert page.save
70
    page.reload
71
    assert_equal WikiPage.find_by_title('CookBook_documentation'), page.parent
72
  end
73 441:cbce1fd3b1b7 Chris
74 0:513646585e45 Chris
  def test_unassign_parent
75
    page = WikiPage.find_by_title('Page_with_an_inline_image')
76
    page.parent_title = ''
77
    assert page.save
78
    page.reload
79
    assert_nil page.parent
80
  end
81 441:cbce1fd3b1b7 Chris
82 0:513646585e45 Chris
  def test_parent_validation
83
    page = WikiPage.find_by_title('CookBook_documentation')
84 441:cbce1fd3b1b7 Chris
85 0:513646585e45 Chris
    # A page that doesn't exist
86
    page.parent_title = 'Unknown title'
87
    assert !page.save
88
    assert_equal I18n.translate('activerecord.errors.messages.invalid'), page.errors.on(:parent_title)
89
    # A child page
90
    page.parent_title = 'Page_with_an_inline_image'
91
    assert !page.save
92
    assert_equal I18n.translate('activerecord.errors.messages.circular_dependency'), page.errors.on(:parent_title)
93
    # The page itself
94
    page.parent_title = 'CookBook_documentation'
95
    assert !page.save
96
    assert_equal I18n.translate('activerecord.errors.messages.circular_dependency'), page.errors.on(:parent_title)
97
98
    page.parent_title = 'Another_page'
99
    assert page.save
100
  end
101 441:cbce1fd3b1b7 Chris
102 0:513646585e45 Chris
  def test_destroy
103
    page = WikiPage.find(1)
104
    page.destroy
105
    assert_nil WikiPage.find_by_id(1)
106
    # make sure that page content and its history are deleted
107
    assert WikiContent.find_all_by_page_id(1).empty?
108
    assert WikiContent.versioned_class.find_all_by_page_id(1).empty?
109
  end
110 441:cbce1fd3b1b7 Chris
111 0:513646585e45 Chris
  def test_destroy_should_not_nullify_children
112
    page = WikiPage.find(2)
113
    child_ids = page.child_ids
114
    assert child_ids.any?
115
    page.destroy
116
    assert_nil WikiPage.find_by_id(2)
117 441:cbce1fd3b1b7 Chris
118 0:513646585e45 Chris
    children = WikiPage.find_all_by_id(child_ids)
119
    assert_equal child_ids.size, children.size
120
    children.each do |child|
121
      assert_nil child.parent_id
122
    end
123
  end
124 441:cbce1fd3b1b7 Chris
125
  def test_updated_on_eager_load
126
    page = WikiPage.with_updated_on.first
127
    assert page.is_a?(WikiPage)
128
    assert_not_nil page.read_attribute(:updated_on)
129
    assert_equal page.content.updated_on, page.updated_on
130
  end
131 0:513646585e45 Chris
end