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 / .svn / pristine / 62 / 62d25b06b15c0b260279da71be5d88bfab79f61e.svn-base @ 1297:0a574315af3e

History | View | Annotate | Download (3.99 KB)

1
# Redmine - project management software
2
# Copyright (C) 2006-2011  Jean-Philippe Lang
3
#
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
#
9
# 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
#
14
# 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
require File.expand_path('../../test_helper', __FILE__)
19

    
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

    
28
  def test_create
29
    page = WikiPage.new(:wiki => @wiki)
30
    assert !page.save
31
    assert_equal 1, page.errors.count
32

    
33
    page.title = "Page"
34
    assert page.save
35
    page.reload
36
    assert !page.protected?
37

    
38
    @wiki.reload
39
    assert @wiki.pages.include?(page)
40
  end
41

    
42
  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

    
48
  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

    
53
    page = @wiki.find_or_new_page("Non existing page")
54
    assert_kind_of WikiPage, page
55
    assert page.new_record?
56
  end
57

    
58
  def test_parent_title
59
    page = WikiPage.find_by_title('Another_page')
60
    assert_nil page.parent_title
61

    
62
    page = WikiPage.find_by_title('Page_with_an_inline_image')
63
    assert_equal 'CookBook documentation', page.parent_title
64
  end
65

    
66
  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

    
74
  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

    
82
  def test_parent_validation
83
    page = WikiPage.find_by_title('CookBook_documentation')
84

    
85
    # 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

    
102
  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

    
111
  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

    
118
    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

    
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
end