##// END OF EJS Templates
Cleans up status assignment in IssuesController#new handled by Issue#safe_attributes= now....
Jean-Philippe Lang -
r3492:e584ae220da7
parent child
Show More
@@ -136,26 +136,19 class IssuesController < ApplicationController
136 136 render_error l(:error_no_tracker_in_project)
137 137 return
138 138 end
139 if @issue.status.nil?
140 render_error l(:error_no_default_issue_status)
141 return
142 end
139 143 if params[:issue].is_a?(Hash)
140 144 @issue.safe_attributes = params[:issue]
141 145 @issue.watcher_user_ids = params[:issue]['watcher_user_ids'] if User.current.allowed_to?(:add_issue_watchers, @project)
142 146 end
143 147 @issue.author = User.current
144 148
145 default_status = IssueStatus.default
146 unless default_status
147 render_error l(:error_no_default_issue_status)
148 return
149 end
150 @issue.status = default_status
151 @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
152
153 149 if request.get? || request.xhr?
154 150 @issue.start_date ||= Date.today
155 151 else
156 requested_status = IssueStatus.find_by_id(params[:issue][:status_id])
157 # Check that the user is allowed to apply the requested status
158 @issue.status = (@allowed_statuses.include? requested_status) ? requested_status : default_status
159 152 call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
160 153 if @issue.save
161 154 attachments = Attachment.attach_files(@issue, params[:attachments])
@@ -179,6 +172,7 class IssuesController < ApplicationController
179 172 end
180 173 end
181 174 @priorities = IssuePriority.all
175 @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
182 176 render :layout => !request.xhr?
183 177 end
184 178
@@ -163,6 +163,11 class Issue < ActiveRecord::Base
163 163 end
164 164 issue
165 165 end
166
167 def status_id=(sid)
168 self.status = nil
169 write_attribute(:status_id, sid)
170 end
166 171
167 172 def priority_id=(pid)
168 173 self.priority = nil
@@ -451,6 +451,7 class IssuesControllerTest < ActionController::TestCase
451 451 assert_difference 'Issue.count' do
452 452 post :new, :project_id => 1,
453 453 :issue => {:tracker_id => 3,
454 :status_id => 2,
454 455 :subject => 'This is the test_new issue',
455 456 :description => 'This is the description',
456 457 :priority_id => 5,
@@ -463,6 +464,7 class IssuesControllerTest < ActionController::TestCase
463 464 assert_not_nil issue
464 465 assert_equal 2, issue.author_id
465 466 assert_equal 3, issue.tracker_id
467 assert_equal 2, issue.status_id
466 468 assert_nil issue.estimated_hours
467 469 v = issue.custom_values.find(:first, :conditions => {:custom_field_id => 2})
468 470 assert_not_nil v
@@ -598,6 +600,47 class IssuesControllerTest < ActionController::TestCase
598 600 end
599 601 end
600 602
603 context "without workflow privilege" do
604 setup do
605 Workflow.delete_all(["role_id = ?", Role.anonymous.id])
606 Role.anonymous.add_permission! :add_issues
607 end
608
609 context "#new" do
610 should "propose default status only" do
611 get :new, :project_id => 1
612 assert_response :success
613 assert_template 'new'
614 assert_tag :tag => 'select',
615 :attributes => {:name => 'issue[status_id]'},
616 :children => {:count => 1},
617 :child => {:tag => 'option', :attributes => {:value => IssueStatus.default.id.to_s}}
618 end
619
620 should "accept default status" do
621 assert_difference 'Issue.count' do
622 post :new, :project_id => 1,
623 :issue => {:tracker_id => 1,
624 :subject => 'This is an issue',
625 :status_id => 1}
626 end
627 issue = Issue.last(:order => 'id')
628 assert_equal IssueStatus.default, issue.status
629 end
630
631 should "ignore unauthorized status" do
632 assert_difference 'Issue.count' do
633 post :new, :project_id => 1,
634 :issue => {:tracker_id => 1,
635 :subject => 'This is an issue',
636 :status_id => 3}
637 end
638 issue = Issue.last(:order => 'id')
639 assert_equal IssueStatus.default, issue.status
640 end
641 end
642 end
643
601 644 def test_copy_issue
602 645 @request.session[:user_id] = 2
603 646 get :new, :project_id => 1, :copy_from => 1
General Comments 0
You need to be logged in to leave comments. Login now