diff test/unit/issue_test.rb @ 1517:dffacf8a6908 redmine-2.5

Update to Redmine SVN revision 13367 on 2.5-stable branch
author Chris Cannam
date Tue, 09 Sep 2014 09:29:00 +0100
parents e248c7af89ec
children
line wrap: on
line diff
--- a/test/unit/issue_test.rb	Tue Sep 09 09:28:31 2014 +0100
+++ b/test/unit/issue_test.rb	Tue Sep 09 09:29:00 2014 +0100
@@ -154,7 +154,7 @@
       assert Issue.new(:project_id => 2, :tracker_id => 1, :author_id => 1,
                        :subject => 'Group assignment',
                        :assigned_to_id => 11).save
-      issue = Issue.first(:order => 'id DESC')
+      issue = Issue.order('id DESC').first
       assert_kind_of Group, issue.assigned_to
       assert_equal Group.find(11), issue.assigned_to
     end
@@ -330,7 +330,23 @@
   end
 
   def test_visible_and_nested_set_scopes
-    assert_equal 0, Issue.find(1).descendants.visible.all.size
+    user = User.generate!
+    parent = Issue.generate!(:assigned_to => user)
+    assert parent.visible?(user)
+    child1 = Issue.generate!(:parent_issue_id => parent.id, :assigned_to => user)
+    child2 = Issue.generate!(:parent_issue_id => parent.id, :assigned_to => user)
+    parent.reload
+    child1.reload
+    child2.reload
+    assert child1.visible?(user)
+    assert child2.visible?(user)
+    assert_equal 2, parent.descendants.count
+    assert_equal 2, parent.descendants.visible(user).count
+    # awesome_nested_set 2-1-stable branch has regression.
+    # https://github.com/collectiveidea/awesome_nested_set/commit/3d5ac746542b564f6586c2316180254b088bebb6
+    # ActiveRecord::StatementInvalid: SQLite3::SQLException: ambiguous column name: lft:
+    assert_equal 2, parent.descendants.collect{|i| i}.size
+    assert_equal 2, parent.descendants.visible(user).collect{|i| i}.size
   end
 
   def test_open_scope
@@ -564,8 +580,8 @@
     issue = Issue.find(1)
     assert !admin.member_of?(issue.project)
     expected_statuses = [issue.status] +
-                            WorkflowTransition.find_all_by_old_status_id(
-                                issue.status_id).map(&:new_status).uniq.sort
+                            WorkflowTransition.where(:old_status_id => issue.status_id).
+                                map(&:new_status).uniq.sort
     assert_equal expected_statuses, issue.new_statuses_allowed_to(admin)
   end
 
@@ -690,6 +706,16 @@
     assert values.detect {|value| value.custom_field == cf2}
   end
 
+  def test_editable_custom_fields_should_return_custom_field_that_is_enabled_for_the_role_only
+    enabled_cf = IssueCustomField.generate!(:is_for_all => true, :tracker_ids => [1], :visible => false, :role_ids => [1,2])
+    disabled_cf = IssueCustomField.generate!(:is_for_all => true, :tracker_ids => [1], :visible => false, :role_ids => [2])
+    user = User.find(2)
+    issue = Issue.new(:project_id => 1, :tracker_id => 1)
+
+    assert_include enabled_cf, issue.editable_custom_fields(user)
+    assert_not_include disabled_cf, issue.editable_custom_fields(user)
+  end
+
   def test_safe_attributes_should_accept_target_tracker_writable_fields
     WorkflowPermission.delete_all
     WorkflowPermission.create!(:old_status_id => 1, :tracker_id => 1,
@@ -1375,6 +1401,15 @@
     assert_nil TimeEntry.find_by_issue_id(1)
   end
 
+  def test_destroy_should_delete_time_entries_custom_values
+    issue = Issue.generate!
+    time_entry = TimeEntry.generate!(:issue => issue, :custom_field_values => {10 => '1'})
+
+    assert_difference 'CustomValue.where(:customized_type => "TimeEntry").count', -1 do
+      assert issue.destroy
+    end
+  end
+
   def test_destroying_a_deleted_issue_should_not_raise_an_error
     issue = Issue.find(1)
     Issue.find(1).destroy
@@ -1695,9 +1730,34 @@
                       :author_id => 3, :status_id => 1,
                       :priority => IssuePriority.all.first,
                       :subject => 'test_create', :estimated_hours => '1:30')
+    with_settings :notified_events => %w(issue_added) do
+      assert issue.save
+      assert_equal 1, ActionMailer::Base.deliveries.size
+    end
+  end
 
-    assert issue.save
-    assert_equal 1, ActionMailer::Base.deliveries.size
+  def test_create_should_send_one_email_notification_with_both_settings
+    ActionMailer::Base.deliveries.clear
+    issue = Issue.new(:project_id => 1, :tracker_id => 1,
+                      :author_id => 3, :status_id => 1,
+                      :priority => IssuePriority.all.first,
+                      :subject => 'test_create', :estimated_hours => '1:30')
+    with_settings :notified_events => %w(issue_added issue_updated) do
+      assert issue.save
+      assert_equal 1, ActionMailer::Base.deliveries.size
+    end
+  end
+
+  def test_create_should_not_send_email_notification_with_no_setting
+    ActionMailer::Base.deliveries.clear
+    issue = Issue.new(:project_id => 1, :tracker_id => 1,
+                      :author_id => 3, :status_id => 1,
+                      :priority => IssuePriority.all.first,
+                      :subject => 'test_create', :estimated_hours => '1:30')
+    with_settings :notified_events => [] do
+      assert issue.save
+      assert_equal 0, ActionMailer::Base.deliveries.size
+    end
   end
 
   def test_update_should_notify_previous_assignee
@@ -1720,16 +1780,18 @@
 
     issue.init_journal(User.find(1))
     issue.subject = 'Subjet update'
-    assert issue.save
-    assert_equal 1, ActionMailer::Base.deliveries.size
-    ActionMailer::Base.deliveries.clear
+    with_settings :notified_events => %w(issue_updated) do
+      assert issue.save
+      assert_equal 1, ActionMailer::Base.deliveries.size
+      ActionMailer::Base.deliveries.clear
 
-    stale.init_journal(User.find(1))
-    stale.subject = 'Another subjet update'
-    assert_raise ActiveRecord::StaleObjectError do
-      stale.save
+      stale.init_journal(User.find(1))
+      stale.subject = 'Another subjet update'
+      assert_raise ActiveRecord::StaleObjectError do
+        stale.save
+      end
+      assert ActionMailer::Base.deliveries.empty?
     end
-    assert ActionMailer::Base.deliveries.empty?
   end
 
   def test_journalized_description
@@ -1747,7 +1809,7 @@
       end
     end
 
-    detail = JournalDetail.first(:order => 'id DESC')
+    detail = JournalDetail.order('id DESC').first
     assert_equal i, detail.journal.journalized
     assert_equal 'attr', detail.property
     assert_equal 'description', detail.prop_key
@@ -1757,7 +1819,7 @@
 
   def test_blank_descriptions_should_not_be_journalized
     IssueCustomField.delete_all
-    Issue.update_all("description = NULL", "id=1")
+    Issue.where(:id => 1).update_all("description = NULL")
 
     i = Issue.find(1)
     i.init_journal(User.find(2))
@@ -1991,7 +2053,7 @@
     r = IssueRelation.create!(:issue_from => Issue.find(3),
                              :issue_to   => Issue.find(7),
                              :relation_type => IssueRelation::TYPE_PRECEDES)
-    IssueRelation.update_all("issue_to_id = 1", ["id = ?", r.id])
+    IssueRelation.where(["id = ?", r.id]).update_all("issue_to_id = 1")
 
     assert_equal [2, 3], Issue.find(1).all_dependent_issues.collect(&:id).sort
   end
@@ -2011,12 +2073,12 @@
     r = IssueRelation.create!(:issue_from => Issue.find(8),
                              :issue_to   => Issue.find(7),
                              :relation_type => IssueRelation::TYPE_RELATES)
-    IssueRelation.update_all("issue_to_id = 2", ["id = ?", r.id])
+    IssueRelation.where(["id = ?", r.id]).update_all("issue_to_id = 2")
 
     r = IssueRelation.create!(:issue_from => Issue.find(3),
                              :issue_to   => Issue.find(7),
                              :relation_type => IssueRelation::TYPE_RELATES)
-    IssueRelation.update_all("issue_to_id = 1", ["id = ?", r.id])
+    IssueRelation.where(["id = ?", r.id]).update_all("issue_to_id = 1")
 
     assert_equal [2, 3, 8], Issue.find(1).all_dependent_issues.collect(&:id).sort
   end