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 / functional / documents_controller_test.rb @ 441:cbce1fd3b1b7

History | View | Annotate | Download (4.52 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
require 'documents_controller'
20
21
# Re-raise errors caught by the controller.
22
class DocumentsController; def rescue_action(e) raise e end; end
23
24
class DocumentsControllerTest < ActionController::TestCase
25
  fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, :documents, :enumerations
26 441:cbce1fd3b1b7 Chris
27 0:513646585e45 Chris
  def setup
28
    @controller = DocumentsController.new
29
    @request    = ActionController::TestRequest.new
30
    @response   = ActionController::TestResponse.new
31
    User.current = nil
32
  end
33 441:cbce1fd3b1b7 Chris
34 0:513646585e45 Chris
  def test_index
35
    # Sets a default category
36
    e = Enumeration.find_by_name('Technical documentation')
37
    e.update_attributes(:is_default => true)
38 441:cbce1fd3b1b7 Chris
39 0:513646585e45 Chris
    get :index, :project_id => 'ecookbook'
40
    assert_response :success
41
    assert_template 'index'
42
    assert_not_nil assigns(:grouped)
43 441:cbce1fd3b1b7 Chris
44 0:513646585e45 Chris
    # Default category selected in the new document form
45
    assert_tag :select, :attributes => {:name => 'document[category_id]'},
46
                        :child => {:tag => 'option', :attributes => {:selected => 'selected'},
47
                                                     :content => 'Technical documentation'}
48
  end
49 441:cbce1fd3b1b7 Chris
50 0:513646585e45 Chris
  def test_index_with_long_description
51
    # adds a long description to the first document
52
    doc = documents(:documents_001)
53
    doc.update_attributes(:description => <<LOREM)
54
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
55

56
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.
57
LOREM
58 441:cbce1fd3b1b7 Chris
59 0:513646585e45 Chris
    get :index, :project_id => 'ecookbook'
60
    assert_response :success
61
    assert_template 'index'
62
63
    # should only truncate on new lines to avoid breaking wiki formatting
64
    assert_select '.wiki p', :text => (doc.description.split("\n").first + '...')
65
    assert_select '.wiki p', :text => Regexp.new(Regexp.escape("EndOfLineHere..."))
66
  end
67 441:cbce1fd3b1b7 Chris
68 0:513646585e45 Chris
  def test_new_with_one_attachment
69
    ActionMailer::Base.deliveries.clear
70
    Setting.notified_events << 'document_added'
71
    @request.session[:user_id] = 2
72
    set_tmp_attachments_directory
73 441:cbce1fd3b1b7 Chris
74 0:513646585e45 Chris
    post :new, :project_id => 'ecookbook',
75
               :document => { :title => 'DocumentsControllerTest#test_post_new',
76
                              :description => 'This is a new document',
77
                              :category_id => 2},
78
               :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain')}}
79 441:cbce1fd3b1b7 Chris
80 37:94944d00e43c chris
    assert_redirected_to '/projects/ecookbook/documents'
81 441:cbce1fd3b1b7 Chris
82 0:513646585e45 Chris
    document = Document.find_by_title('DocumentsControllerTest#test_post_new')
83
    assert_not_nil document
84
    assert_equal Enumeration.find(2), document.category
85
    assert_equal 1, document.attachments.size
86
    assert_equal 'testfile.txt', document.attachments.first.filename
87
    assert_equal 1, ActionMailer::Base.deliveries.size
88
  end
89 441:cbce1fd3b1b7 Chris
90 0:513646585e45 Chris
  def test_destroy
91
    @request.session[:user_id] = 2
92
    post :destroy, :id => 1
93 37:94944d00e43c chris
    assert_redirected_to '/projects/ecookbook/documents'
94 0:513646585e45 Chris
    assert_nil Document.find_by_id(1)
95
  end
96
end