##// END OF EJS Templates
Additional tests for DocumentsController....
Jean-Philippe Lang -
r8144:92e4708ee368
parent child
Show More
@@ -1,151 +1,167
1 1 # Redmine - project management software
2 2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require File.expand_path('../../test_helper', __FILE__)
19 19
20 20 class DocumentsControllerTest < ActionController::TestCase
21 21 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :documents, :enumerations
22 22
23 23 def setup
24 24 User.current = nil
25 25 end
26 26
27 27 def test_index
28 28 # Sets a default category
29 29 e = Enumeration.find_by_name('Technical documentation')
30 30 e.update_attributes(:is_default => true)
31 31
32 32 get :index, :project_id => 'ecookbook'
33 33 assert_response :success
34 34 assert_template 'index'
35 35 assert_not_nil assigns(:grouped)
36 36
37 37 # Default category selected in the new document form
38 38 assert_tag :select, :attributes => {:name => 'document[category_id]'},
39 39 :child => {:tag => 'option', :attributes => {:selected => 'selected'},
40 40 :content => 'Technical documentation'}
41 41
42 42 assert ! DocumentCategory.find(16).active?
43 43 assert_no_tag :option, :attributes => {:value => '16'},
44 44 :parent => {:tag => 'select', :attributes => {:id => 'document_category_id'} }
45 45 end
46 46
47 47 def test_index_grouped_by_date
48 48 get :index, :project_id => 'ecookbook', :sort_by => 'date'
49 49 assert_response :success
50 50 assert_tag 'h3', :content => '2007-02-12'
51 51 end
52 52
53 53 def test_index_grouped_by_title
54 54 get :index, :project_id => 'ecookbook', :sort_by => 'title'
55 55 assert_response :success
56 56 assert_tag 'h3', :content => 'T'
57 57 end
58 58
59 59 def test_index_grouped_by_author
60 60 get :index, :project_id => 'ecookbook', :sort_by => 'author'
61 61 assert_response :success
62 62 assert_tag 'h3', :content => 'John Smith'
63 63 end
64 64
65 65 def test_index_with_long_description
66 66 # adds a long description to the first document
67 67 doc = documents(:documents_001)
68 68 doc.update_attributes(:description => <<LOREM)
69 69 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut egestas, mi vehicula varius varius, ipsum massa fermentum orci, eget tristique ante sem vel mi. Nulla facilisi. Donec enim libero, luctus ac sagittis sit amet, vehicula sagittis magna. Duis ultrices molestie ante, eget scelerisque sem iaculis vitae. Etiam fermentum mauris vitae metus pharetra condimentum fermentum est pretium. Proin sollicitudin elementum quam quis pharetra. Aenean facilisis nunc quis elit volutpat mollis. Aenean eleifend varius euismod. Ut dolor est, congue eget dapibus eget, elementum eu odio. Integer et lectus neque, nec scelerisque nisi. EndOfLineHere
70 70
71 71 Vestibulum non velit mi. Aliquam scelerisque libero ut nulla fringilla a sollicitudin magna rhoncus. Praesent a nunc lorem, ac porttitor eros. Sed ac diam nec neque interdum adipiscing quis quis justo. Donec arcu nunc, fringilla eu dictum at, venenatis ac sem. Vestibulum quis elit urna, ac mattis sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
72 72 LOREM
73 73
74 74 get :index, :project_id => 'ecookbook'
75 75 assert_response :success
76 76 assert_template 'index'
77 77
78 78 # should only truncate on new lines to avoid breaking wiki formatting
79 79 assert_select '.wiki p', :text => (doc.description.split("\n").first + '...')
80 80 assert_select '.wiki p', :text => Regexp.new(Regexp.escape("EndOfLineHere..."))
81 81 end
82 82
83 83 def test_show
84 84 get :show, :id => 1
85 85 assert_response :success
86 86 assert_template 'show'
87 87 end
88 88
89 89 def test_new
90 90 @request.session[:user_id] = 2
91 91 get :new, :project_id => 1
92 92 assert_response :success
93 93 assert_template 'new'
94 94 end
95 95
96 96 def test_create_with_one_attachment
97 97 ActionMailer::Base.deliveries.clear
98 98 Setting.notified_events << 'document_added'
99 99 @request.session[:user_id] = 2
100 100 set_tmp_attachments_directory
101 101
102 102 post :create, :project_id => 'ecookbook',
103 103 :document => { :title => 'DocumentsControllerTest#test_post_new',
104 104 :description => 'This is a new document',
105 105 :category_id => 2},
106 106 :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
107 107
108 108 assert_redirected_to '/projects/ecookbook/documents'
109 109
110 110 document = Document.find_by_title('DocumentsControllerTest#test_post_new')
111 111 assert_not_nil document
112 112 assert_equal Enumeration.find(2), document.category
113 113 assert_equal 1, document.attachments.size
114 114 assert_equal 'testfile.txt', document.attachments.first.filename
115 115 assert_equal 1, ActionMailer::Base.deliveries.size
116 116 end
117 117
118 def test_create_with_failure
119 @request.session[:user_id] = 2
120 assert_no_difference 'Document.count' do
121 post :create, :project_id => 'ecookbook', :document => { :title => ''}
122 end
123 assert_response :success
124 assert_template 'new'
125 end
126
118 127 def test_edit
119 128 @request.session[:user_id] = 2
120 129 get :edit, :id => 1
121 130 assert_response :success
122 131 assert_template 'edit'
123 132 end
124 133
125 134 def test_update
126 135 @request.session[:user_id] = 2
127 136 put :update, :id => 1, :document => {:title => 'test_update'}
128 137 assert_redirected_to '/documents/1'
129 138 document = Document.find(1)
130 139 assert_equal 'test_update', document.title
131 140 end
132 141
142 def test_update_with_failure
143 @request.session[:user_id] = 2
144 put :update, :id => 1, :document => {:title => ''}
145 assert_response :success
146 assert_template 'edit'
147 end
148
133 149 def test_destroy
134 150 @request.session[:user_id] = 2
135 151 assert_difference 'Document.count', -1 do
136 152 delete :destroy, :id => 1
137 153 end
138 154 assert_redirected_to '/projects/ecookbook/documents'
139 155 assert_nil Document.find_by_id(1)
140 156 end
141 157
142 158 def test_add_attachment
143 159 @request.session[:user_id] = 2
144 160 assert_difference 'Attachment.count' do
145 161 post :add_attachment, :id => 1,
146 162 :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
147 163 end
148 164 attachment = Attachment.first(:order => 'id DESC')
149 165 assert_equal Document.find(1), attachment.container
150 166 end
151 167 end
General Comments 0
You need to be logged in to leave comments. Login now