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 / .svn / text-base / versions_controller_test.rb.svn-base @ 442:753f1380d6bc

History | View | Annotate | Download (5.4 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
#
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 119:8661b858af72 Chris
require File.expand_path('../../test_helper', __FILE__)
19 0:513646585e45 Chris
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 441:cbce1fd3b1b7 Chris
  fixtures :projects, :versions, :issues, :users, :roles, :members, :member_roles, :enabled_modules, :issue_statuses
26 0:513646585e45 Chris
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 22:40f7cfd4df19 chris
  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 0:513646585e45 Chris
  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 22:40f7cfd4df19 chris
  def test_create
79 0:513646585e45 Chris
    @request.session[:user_id] = 2 # manager
80
    assert_difference 'Version.count' do
81 22:40f7cfd4df19 chris
      post :create, :project_id => '1', :version => {:name => 'test_add_version'}
82 0:513646585e45 Chris
    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 22:40f7cfd4df19 chris
  def test_create_from_issue_form
90 0:513646585e45 Chris
    @request.session[:user_id] = 2 # manager
91
    assert_difference 'Version.count' do
92 22:40f7cfd4df19 chris
      xhr :post, :create, :project_id => '1', :version => {:name => 'test_add_version_from_issue_form'}
93 0:513646585e45 Chris
    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 22:40f7cfd4df19 chris
    put :close_completed, :project_id => 'ecookbook'
112 0:513646585e45 Chris
    assert_redirected_to :controller => 'projects', :action => 'settings', :tab => 'versions', :id => 'ecookbook'
113
    assert_not_nil Version.find_by_status('closed')
114
  end
115
116 22:40f7cfd4df19 chris
  def test_post_update
117 0:513646585e45 Chris
    @request.session[:user_id] = 2
118 22:40f7cfd4df19 chris
    put :update, :id => 2,
119 0:513646585e45 Chris
                :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 37:94944d00e43c chris
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 0:513646585e45 Chris
136
  def test_destroy
137
    @request.session[:user_id] = 2
138 22:40f7cfd4df19 chris
    delete :destroy, :id => 3
139 0:513646585e45 Chris
    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 441:cbce1fd3b1b7 Chris
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 0:513646585e45 Chris
end