@@ -47,7 +47,28 class WatcherTest < ActiveSupport::TestCase | |||||
47 | assert Issue.watched_by(@user).include?(@issue) |
|
47 | assert Issue.watched_by(@user).include?(@issue) | |
48 | end |
|
48 | end | |
49 |
|
49 | |||
|
50 | def test_watcher_users | |||
|
51 | watcher_users = Issue.find(2).watcher_users | |||
|
52 | assert_kind_of Array, watcher_users | |||
|
53 | assert_kind_of User, watcher_users.first | |||
|
54 | end | |||
|
55 | ||||
|
56 | def test_watcher_users_should_not_validate_user | |||
|
57 | User.update_all("firstname = ''", "id=1") | |||
|
58 | @user.reload | |||
|
59 | assert !@user.valid? | |||
|
60 | ||||
|
61 | issue = Issue.new(:project => Project.find(1), :tracker_id => 1, :subject => "test", :author => User.find(2)) | |||
|
62 | issue.watcher_users << @user | |||
|
63 | issue.save! | |||
|
64 | assert issue.watched_by?(@user) | |||
|
65 | end | |||
|
66 | ||||
50 | def test_watcher_user_ids |
|
67 | def test_watcher_user_ids | |
|
68 | assert_equal [1, 3], Issue.find(2).watcher_user_ids.sort | |||
|
69 | end | |||
|
70 | ||||
|
71 | def test_watcher_user_ids= | |||
51 | issue = Issue.new |
|
72 | issue = Issue.new | |
52 | issue.watcher_user_ids = ['1', '3'] |
|
73 | issue.watcher_user_ids = ['1', '3'] | |
53 | assert issue.watched_by?(User.find(1)) |
|
74 | assert issue.watched_by?(User.find(1)) |
@@ -13,7 +13,7 module Redmine | |||||
13 |
|
13 | |||
14 | class_eval do |
|
14 | class_eval do | |
15 | has_many :watchers, :as => :watchable, :dependent => :delete_all |
|
15 | has_many :watchers, :as => :watchable, :dependent => :delete_all | |
16 | has_many :watcher_users, :through => :watchers, :source => :user |
|
16 | has_many :watcher_users, :through => :watchers, :source => :user, :validate => false | |
17 |
|
17 | |||
18 | named_scope :watched_by, lambda { |user_id| |
|
18 | named_scope :watched_by, lambda { |user_id| | |
19 | { :include => :watchers, |
|
19 | { :include => :watchers, |
General Comments 0
You need to be logged in to leave comments.
Login now