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 / 95 / 95b614690d7d185bcf90aab8549c761a73f9e992.svn-base @ 1297:0a574315af3e

History | View | Annotate | Download (5.37 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
require 'versions_controller'
20

    
21
# Re-raise errors caught by the controller.
22
class VersionsController; def rescue_action(e) raise e end; end
23

    
24
class VersionsControllerTest < ActionController::TestCase
25
  fixtures :projects, :versions, :issues, :users, :roles, :members, :member_roles, :enabled_modules, :issue_statuses
26

    
27
  def setup
28
    @controller = VersionsController.new
29
    @request    = ActionController::TestRequest.new
30
    @response   = ActionController::TestResponse.new
31
    User.current = nil
32
  end
33

    
34
  def test_index
35
    get :index, :project_id => 1
36
    assert_response :success
37
    assert_template 'index'
38
    assert_not_nil assigns(:versions)
39
    # Version with no date set appears
40
    assert assigns(:versions).include?(Version.find(3))
41
    # Completed version doesn't appear
42
    assert !assigns(:versions).include?(Version.find(1))
43
    # Context menu on issues
44
    assert_select "script", :text => Regexp.new(Regexp.escape("new ContextMenu('/issues/context_menu')"))
45
  end
46

    
47
  def test_index_with_completed_versions
48
    get :index, :project_id => 1, :completed => 1
49
    assert_response :success
50
    assert_template 'index'
51
    assert_not_nil assigns(:versions)
52
    # Version with no date set appears
53
    assert assigns(:versions).include?(Version.find(3))
54
    # Completed version appears
55
    assert assigns(:versions).include?(Version.find(1))
56
  end
57

    
58
  def test_index_showing_subprojects_versions
59
    @subproject_version = Version.generate!(:project => Project.find(3))
60
    get :index, :project_id => 1, :with_subprojects => 1
61
    assert_response :success
62
    assert_template 'index'
63
    assert_not_nil assigns(:versions)
64

    
65
    assert assigns(:versions).include?(Version.find(4)), "Shared version not found"
66
    assert assigns(:versions).include?(@subproject_version), "Subproject version not found"
67
  end
68

    
69
  def test_show
70
    get :show, :id => 2
71
    assert_response :success
72
    assert_template 'show'
73
    assert_not_nil assigns(:version)
74

    
75
    assert_tag :tag => 'h2', :content => /1.0/
76
  end
77

    
78
  def test_create
79
    @request.session[:user_id] = 2 # manager
80
    assert_difference 'Version.count' do
81
      post :create, :project_id => '1', :version => {:name => 'test_add_version'}
82
    end
83
    assert_redirected_to '/projects/ecookbook/settings/versions'
84
    version = Version.find_by_name('test_add_version')
85
    assert_not_nil version
86
    assert_equal 1, version.project_id
87
  end
88

    
89
  def test_create_from_issue_form
90
    @request.session[:user_id] = 2 # manager
91
    assert_difference 'Version.count' do
92
      xhr :post, :create, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
93
    end
94
    assert_response :success
95
    assert_select_rjs :replace, 'issue_fixed_version_id'
96
    version = Version.find_by_name('test_add_version_from_issue_form')
97
    assert_not_nil version
98
    assert_equal 1, version.project_id
99
  end
100

    
101
  def test_get_edit
102
    @request.session[:user_id] = 2
103
    get :edit, :id => 2
104
    assert_response :success
105
    assert_template 'edit'
106
  end
107

    
108
  def test_close_completed
109
    Version.update_all("status = 'open'")
110
    @request.session[:user_id] = 2
111
    put :close_completed, :project_id => 'ecookbook'
112
    assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
113
    assert_not_nil Version.find_by_status('closed')
114
  end
115

    
116
  def test_post_update
117
    @request.session[:user_id] = 2
118
    put :update, :id => 2,
119
                :version => { :name => 'New version name',
120
                              :effective_date => Date.today.strftime("%Y-%m-%d")}
121
    assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
122
    version = Version.find(2)
123
    assert_equal 'New version name', version.name
124
    assert_equal Date.today, version.effective_date
125
  end
126

    
127
  def test_post_update_with_validation_failure
128
    @request.session[:user_id] = 2
129
    put :update, :id => 2,
130
                 :version => { :name => '',
131
                               :effective_date => Date.today.strftime("%Y-%m-%d")}
132
    assert_response :success
133
    assert_template 'edit'
134
  end
135

    
136
  def test_destroy
137
    @request.session[:user_id] = 2
138
    delete :destroy, :id => 3
139
    assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
140
    assert_nil Version.find_by_id(3)
141
  end
142

    
143
  def test_issue_status_by
144
    xhr :get, :status_by, :id => 2
145
    assert_response :success
146
    assert_template '_issue_counts'
147
  end
148

    
149
  def test_issue_status_by_status
150
    xhr :get, :status_by, :id => 2, :status_by => 'status'
151
    assert_response :success
152
    assert_template '_issue_counts'
153
  end
154
end