annotate .svn/pristine/89/893b6a5f960b2cbb71a8a74d8e070397749de965.svn-base @ 1327:287f201c2802 redmine-2.2-integration

Add italic
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Wed, 19 Jun 2013 20:56:22 +0100
parents 038ba2d95de8
children
rev   line source
Chris@1296 1 # Redmine - project management software
Chris@1296 2 # Copyright (C) 2006-2012 Jean-Philippe Lang
Chris@1296 3 #
Chris@1296 4 # This program is free software; you can redistribute it and/or
Chris@1296 5 # modify it under the terms of the GNU General Public License
Chris@1296 6 # as published by the Free Software Foundation; either version 2
Chris@1296 7 # of the License, or (at your option) any later version.
Chris@1296 8 #
Chris@1296 9 # This program is distributed in the hope that it will be useful,
Chris@1296 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
Chris@1296 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Chris@1296 12 # GNU General Public License for more details.
Chris@1296 13 #
Chris@1296 14 # You should have received a copy of the GNU General Public License
Chris@1296 15 # along with this program; if not, write to the Free Software
Chris@1296 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Chris@1296 17
Chris@1296 18 require File.expand_path('../../test_helper', __FILE__)
Chris@1296 19
Chris@1296 20 class DocumentsControllerTest < ActionController::TestCase
Chris@1296 21 fixtures :projects, :users, :roles, :members, :member_roles,
Chris@1296 22 :enabled_modules, :documents, :enumerations,
Chris@1296 23 :groups_users, :attachments
Chris@1296 24
Chris@1296 25 def setup
Chris@1296 26 User.current = nil
Chris@1296 27 end
Chris@1296 28
Chris@1296 29 def test_index
Chris@1296 30 # Sets a default category
Chris@1296 31 e = Enumeration.find_by_name('Technical documentation')
Chris@1296 32 e.update_attributes(:is_default => true)
Chris@1296 33
Chris@1296 34 get :index, :project_id => 'ecookbook'
Chris@1296 35 assert_response :success
Chris@1296 36 assert_template 'index'
Chris@1296 37 assert_not_nil assigns(:grouped)
Chris@1296 38
Chris@1296 39 # Default category selected in the new document form
Chris@1296 40 assert_tag :select, :attributes => {:name => 'document[category_id]'},
Chris@1296 41 :child => {:tag => 'option', :attributes => {:selected => 'selected'},
Chris@1296 42 :content => 'Technical documentation'}
Chris@1296 43
Chris@1296 44 assert ! DocumentCategory.find(16).active?
Chris@1296 45 assert_no_tag :option, :attributes => {:value => '16'},
Chris@1296 46 :parent => {:tag => 'select', :attributes => {:id => 'document_category_id'} }
Chris@1296 47 end
Chris@1296 48
Chris@1296 49 def test_index_grouped_by_date
Chris@1296 50 get :index, :project_id => 'ecookbook', :sort_by => 'date'
Chris@1296 51 assert_response :success
Chris@1296 52 assert_tag 'h3', :content => '2007-02-12'
Chris@1296 53 end
Chris@1296 54
Chris@1296 55 def test_index_grouped_by_title
Chris@1296 56 get :index, :project_id => 'ecookbook', :sort_by => 'title'
Chris@1296 57 assert_response :success
Chris@1296 58 assert_tag 'h3', :content => 'T'
Chris@1296 59 end
Chris@1296 60
Chris@1296 61 def test_index_grouped_by_author
Chris@1296 62 get :index, :project_id => 'ecookbook', :sort_by => 'author'
Chris@1296 63 assert_response :success
Chris@1296 64 assert_tag 'h3', :content => 'John Smith'
Chris@1296 65 end
Chris@1296 66
Chris@1296 67 def test_index_with_long_description
Chris@1296 68 # adds a long description to the first document
Chris@1296 69 doc = documents(:documents_001)
Chris@1296 70 doc.update_attributes(:description => <<LOREM)
Chris@1296 71 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
Chris@1296 72
Chris@1296 73 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.
Chris@1296 74 LOREM
Chris@1296 75
Chris@1296 76 get :index, :project_id => 'ecookbook'
Chris@1296 77 assert_response :success
Chris@1296 78 assert_template 'index'
Chris@1296 79
Chris@1296 80 # should only truncate on new lines to avoid breaking wiki formatting
Chris@1296 81 assert_select '.wiki p', :text => (doc.description.split("\n").first + '...')
Chris@1296 82 assert_select '.wiki p', :text => Regexp.new(Regexp.escape("EndOfLineHere..."))
Chris@1296 83 end
Chris@1296 84
Chris@1296 85 def test_show
Chris@1296 86 get :show, :id => 1
Chris@1296 87 assert_response :success
Chris@1296 88 assert_template 'show'
Chris@1296 89 end
Chris@1296 90
Chris@1296 91 def test_new
Chris@1296 92 @request.session[:user_id] = 2
Chris@1296 93 get :new, :project_id => 1
Chris@1296 94 assert_response :success
Chris@1296 95 assert_template 'new'
Chris@1296 96 end
Chris@1296 97
Chris@1296 98 def test_create_with_one_attachment
Chris@1296 99 ActionMailer::Base.deliveries.clear
Chris@1296 100 @request.session[:user_id] = 2
Chris@1296 101 set_tmp_attachments_directory
Chris@1296 102
Chris@1296 103 with_settings :notified_events => %w(document_added) do
Chris@1296 104 post :create, :project_id => 'ecookbook',
Chris@1296 105 :document => { :title => 'DocumentsControllerTest#test_post_new',
Chris@1296 106 :description => 'This is a new document',
Chris@1296 107 :category_id => 2},
Chris@1296 108 :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
Chris@1296 109 end
Chris@1296 110 assert_redirected_to '/projects/ecookbook/documents'
Chris@1296 111
Chris@1296 112 document = Document.find_by_title('DocumentsControllerTest#test_post_new')
Chris@1296 113 assert_not_nil document
Chris@1296 114 assert_equal Enumeration.find(2), document.category
Chris@1296 115 assert_equal 1, document.attachments.size
Chris@1296 116 assert_equal 'testfile.txt', document.attachments.first.filename
Chris@1296 117 assert_equal 1, ActionMailer::Base.deliveries.size
Chris@1296 118 end
Chris@1296 119
Chris@1296 120 def test_create_with_failure
Chris@1296 121 @request.session[:user_id] = 2
Chris@1296 122 assert_no_difference 'Document.count' do
Chris@1296 123 post :create, :project_id => 'ecookbook', :document => { :title => ''}
Chris@1296 124 end
Chris@1296 125 assert_response :success
Chris@1296 126 assert_template 'new'
Chris@1296 127 end
Chris@1296 128
Chris@1296 129 def test_create_non_default_category
Chris@1296 130 @request.session[:user_id] = 2
Chris@1296 131 category2 = Enumeration.find_by_name('User documentation')
Chris@1296 132 category2.update_attributes(:is_default => true)
Chris@1296 133 category1 = Enumeration.find_by_name('Uncategorized')
Chris@1296 134 post :create,
Chris@1296 135 :project_id => 'ecookbook',
Chris@1296 136 :document => { :title => 'no default',
Chris@1296 137 :description => 'This is a new document',
Chris@1296 138 :category_id => category1.id }
Chris@1296 139 assert_redirected_to '/projects/ecookbook/documents'
Chris@1296 140 doc = Document.find_by_title('no default')
Chris@1296 141 assert_not_nil doc
Chris@1296 142 assert_equal category1.id, doc.category_id
Chris@1296 143 assert_equal category1, doc.category
Chris@1296 144 end
Chris@1296 145
Chris@1296 146 def test_edit
Chris@1296 147 @request.session[:user_id] = 2
Chris@1296 148 get :edit, :id => 1
Chris@1296 149 assert_response :success
Chris@1296 150 assert_template 'edit'
Chris@1296 151 end
Chris@1296 152
Chris@1296 153 def test_update
Chris@1296 154 @request.session[:user_id] = 2
Chris@1296 155 put :update, :id => 1, :document => {:title => 'test_update'}
Chris@1296 156 assert_redirected_to '/documents/1'
Chris@1296 157 document = Document.find(1)
Chris@1296 158 assert_equal 'test_update', document.title
Chris@1296 159 end
Chris@1296 160
Chris@1296 161 def test_update_with_failure
Chris@1296 162 @request.session[:user_id] = 2
Chris@1296 163 put :update, :id => 1, :document => {:title => ''}
Chris@1296 164 assert_response :success
Chris@1296 165 assert_template 'edit'
Chris@1296 166 end
Chris@1296 167
Chris@1296 168 def test_destroy
Chris@1296 169 @request.session[:user_id] = 2
Chris@1296 170 assert_difference 'Document.count', -1 do
Chris@1296 171 delete :destroy, :id => 1
Chris@1296 172 end
Chris@1296 173 assert_redirected_to '/projects/ecookbook/documents'
Chris@1296 174 assert_nil Document.find_by_id(1)
Chris@1296 175 end
Chris@1296 176
Chris@1296 177 def test_add_attachment
Chris@1296 178 @request.session[:user_id] = 2
Chris@1296 179 assert_difference 'Attachment.count' do
Chris@1296 180 post :add_attachment, :id => 1,
Chris@1296 181 :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
Chris@1296 182 end
Chris@1296 183 attachment = Attachment.first(:order => 'id DESC')
Chris@1296 184 assert_equal Document.find(1), attachment.container
Chris@1296 185 end
Chris@1296 186 end