diff test/unit/watcher_test.rb @ 524:1248a47e81b3 feature_36

Merge from branch "luisf"
author luisf <luis.figueira@eecs.qmul.ac.uk>
date Mon, 25 Jul 2011 14:39:38 +0100
parents cbce1fd3b1b7
children cbb26bc654de
line wrap: on
line diff
--- a/test/unit/watcher_test.rb	Fri Jul 15 17:21:05 2011 +0100
+++ b/test/unit/watcher_test.rb	Mon Jul 25 14:39:38 2011 +0100
@@ -15,7 +15,7 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
-require File.dirname(__FILE__) + '/../test_helper'
+require File.expand_path('../../test_helper', __FILE__)
 
 class WatcherTest < ActiveSupport::TestCase
   fixtures :projects, :users, :members, :member_roles, :roles, :enabled_modules,
@@ -47,12 +47,44 @@
     assert Issue.watched_by(@user).include?(@issue)
   end
   
+  def test_watcher_users
+    watcher_users = Issue.find(2).watcher_users
+    assert_kind_of Array, watcher_users
+    assert_kind_of User, watcher_users.first
+  end
+  
+  def test_watcher_users_should_not_validate_user
+    User.update_all("firstname = ''", "id=1")
+    @user.reload
+    assert !@user.valid?
+    
+    issue = Issue.new(:project => Project.find(1), :tracker_id => 1, :subject => "test", :author => User.find(2))
+    issue.watcher_users << @user
+    issue.save!
+    assert issue.watched_by?(@user)
+  end
+  
   def test_watcher_user_ids
+    assert_equal [1, 3], Issue.find(2).watcher_user_ids.sort
+  end
+  
+  def test_watcher_user_ids=
     issue = Issue.new
     issue.watcher_user_ids = ['1', '3']
     assert issue.watched_by?(User.find(1))
   end
   
+  def test_addable_watcher_users
+    addable_watcher_users = @issue.addable_watcher_users
+    assert_kind_of Array, addable_watcher_users
+    assert_kind_of User, addable_watcher_users.first
+  end
+  
+  def test_addable_watcher_users_should_not_include_user_that_cannot_view_the_object
+    issue = Issue.new(:project => Project.find(1), :is_private => true)
+    assert_nil issue.addable_watcher_users.detect {|user| !issue.visible?(user)}
+  end
+  
   def test_recipients
     @issue.watchers.delete_all
     @issue.reload
@@ -60,15 +92,15 @@
     assert @issue.watcher_recipients.empty?
     assert @issue.add_watcher(@user)
 
-    @user.mail_notification = true
-    @user.save    
+    @user.mail_notification = 'all'
+    @user.save!
     @issue.reload
     assert @issue.watcher_recipients.include?(@user.mail)
 
-    @user.mail_notification = false
-    @user.save    
+    @user.mail_notification = 'none'
+    @user.save!
     @issue.reload
-    assert @issue.watcher_recipients.include?(@user.mail)
+    assert !@issue.watcher_recipients.include?(@user.mail)
   end
   
   def test_unwatch