]> source.dussan.org Git - redmine.git/commitdiff
Check for a valid time entry if comments have been entered when updating an issue...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 13 Mar 2011 16:38:01 +0000 (16:38 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 13 Mar 2011 16:38:01 +0000 (16:38 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5110 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/models/issue.rb
test/functional/issues_controller_test.rb

index de31aa636929591e168acc21dc094a7f455951c1..92ab64a8cb46e602d6fa65cdb7c45719256035f1 100644 (file)
@@ -536,7 +536,7 @@ class Issue < ActiveRecord::Base
   # Returns false if save fails
   def save_issue_with_child_records(params, existing_time_entry=nil)
     Issue.transaction do
-      if params[:time_entry] && params[:time_entry][:hours].present? && User.current.allowed_to?(:log_time, project)
+      if params[:time_entry] && (params[:time_entry][:hours].present? || params[:time_entry][:comments].present?) && User.current.allowed_to?(:log_time, project)
         @time_entry = existing_time_entry || TimeEntry.new
         @time_entry.project = project
         @time_entry.issue = self
index b21b28e6698b022b76a20ac6e5385e04b6aafa37..36421aa894d825d4ab95612c5226b95be255e6f3 100644 (file)
@@ -1002,7 +1002,7 @@ class IssuesControllerTest < ActionController::TestCase
     assert_equal 1, ActionMailer::Base.deliveries.size
   end
   
-  def test_put_update_with_invalid_spent_time
+  def test_put_update_with_invalid_spent_time_hours_only
     @request.session[:user_id] = 2
     notes = 'Note added by IssuesControllerTest#test_post_edit_with_invalid_spent_time'
     
@@ -1015,11 +1015,30 @@ class IssuesControllerTest < ActionController::TestCase
     assert_response :success
     assert_template 'edit'
     
-    assert_tag :textarea, :attributes => { :name => 'notes' },
-                          :content => notes
+    assert_error_tag :descendant => {:content => /Activity can't be blank/}
+    assert_tag :textarea, :attributes => { :name => 'notes' }, :content => notes
     assert_tag :input, :attributes => { :name => 'time_entry[hours]', :value => "2z" }
   end
   
+  def test_put_update_with_invalid_spent_time_comments_only
+    @request.session[:user_id] = 2
+    notes = 'Note added by IssuesControllerTest#test_post_edit_with_invalid_spent_time'
+    
+    assert_no_difference('Journal.count') do
+      put :update,
+           :id => 1,
+           :notes => notes,
+           :time_entry => {"comments"=>"this is my comment", "activity_id"=>"", "hours"=>""}
+    end
+    assert_response :success
+    assert_template 'edit'
+    
+    assert_error_tag :descendant => {:content => /Activity can't be blank/}
+    assert_error_tag :descendant => {:content => /Hours can't be blank/}
+    assert_tag :textarea, :attributes => { :name => 'notes' }, :content => notes
+    assert_tag :input, :attributes => { :name => 'time_entry[comments]', :value => "this is my comment" }
+  end
+  
   def test_put_update_should_allow_fixed_version_to_be_set_to_a_subproject
     issue = Issue.find(2)
     @request.session[:user_id] = 2