diff test/unit/journal_test.rb @ 1464:261b3d9a4903 redmine-2.4

Update to Redmine 2.4 branch rev 12663
author Chris Cannam
date Tue, 14 Jan 2014 14:37:42 +0000
parents 433d4f72a19b
children e248c7af89ec
line wrap: on
line diff
--- a/test/unit/journal_test.rb	Fri Jun 14 09:05:06 2013 +0100
+++ b/test/unit/journal_test.rb	Tue Jan 14 14:37:42 2014 +0000
@@ -1,5 +1,5 @@
 # Redmine - project management software
-# Copyright (C) 2006-2012  Jean-Philippe Lang
+# Copyright (C) 2006-2013  Jean-Philippe Lang
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -41,8 +41,8 @@
 
   def test_create_should_send_email_notification
     ActionMailer::Base.deliveries.clear
-    issue = Issue.find(:first)
-    user = User.find(:first)
+    issue = Issue.first
+    user = User.first
     journal = issue.init_journal(user, issue)
 
     assert journal.save
@@ -137,7 +137,7 @@
     user.reload
     journals = Journal.visible(user).all
     assert journals.empty?
-    # User should see issues of projects for which he has view_issues permissions only
+    # User should see issues of projects for which user has view_issues permissions only
     Member.create!(:principal => user, :project_id => 1, :role_ids => [1])
     user.reload
     journals = Journal.visible(user).all
@@ -151,7 +151,71 @@
     assert user.projects.empty?
     journals = Journal.visible(user).all
     assert journals.any?
-    # Admin should see issues on private projects that he does not belong to
+    # Admin should see issues on private projects that admin does not belong to
     assert journals.detect {|journal| !journal.issue.project.is_public?}
   end
+
+  def test_preload_journals_details_custom_fields_should_set_custom_field_instance_variable
+    d = JournalDetail.new(:property => 'cf', :prop_key => '2')
+    journals = [Journal.new(:details => [d])]
+
+    d.expects(:instance_variable_set).with("@custom_field", CustomField.find(2)).once
+    Journal.preload_journals_details_custom_fields(journals)
+  end
+
+  def test_preload_journals_details_custom_fields_with_empty_set
+    assert_nothing_raised do
+      Journal.preload_journals_details_custom_fields([])
+    end
+  end
+
+  def test_details_should_normalize_dates
+    j = JournalDetail.create!(:old_value => Date.parse('2012-11-03'), :value => Date.parse('2013-01-02'))
+    j.reload
+    assert_equal '2012-11-03', j.old_value
+    assert_equal '2013-01-02', j.value
+  end
+
+  def test_details_should_normalize_true_values
+    j = JournalDetail.create!(:old_value => true, :value => true)
+    j.reload
+    assert_equal '1', j.old_value
+    assert_equal '1', j.value
+  end
+
+  def test_details_should_normalize_false_values
+    j = JournalDetail.create!(:old_value => false, :value => false)
+    j.reload
+    assert_equal '0', j.old_value
+    assert_equal '0', j.value
+  end
+
+  def test_custom_field_should_return_custom_field_for_cf_detail
+    d = JournalDetail.new(:property => 'cf', :prop_key => '2')
+    assert_equal CustomField.find(2), d.custom_field
+  end
+
+  def test_custom_field_should_return_nil_for_non_cf_detail
+    d = JournalDetail.new(:property => 'subject')
+    assert_equal nil, d.custom_field
+  end
+
+  def test_visible_details_should_include_relations_to_visible_issues_only
+    issue = Issue.generate!
+    visible_issue = Issue.generate!
+    IssueRelation.create!(:issue_from => issue, :issue_to => visible_issue, :relation_type => 'relates')
+    hidden_issue = Issue.generate!(:is_private => true)
+    IssueRelation.create!(:issue_from => issue, :issue_to => hidden_issue, :relation_type => 'relates')
+    issue.reload
+    assert_equal 1, issue.journals.size
+    journal = issue.journals.first
+    assert_equal 2, journal.details.size
+
+    visible_details = journal.visible_details(User.anonymous)
+    assert_equal 1, visible_details.size
+    assert_equal visible_issue.id.to_s, visible_details.first.value
+
+    visible_details = journal.visible_details(User.find(2))
+    assert_equal 2, visible_details.size
+  end
 end