Mercurial > hg > soundsoftware-site
comparison .svn/pristine/05/058be0b3a53e81bfbd2f18f23f7014355fe7cd0a.svn-base @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
908:c6c2cbd0afee | 909:cbb26bc654de |
---|---|
1 # Redmine - project management software | |
2 # Copyright (C) 2006-2011 Jean-Philippe Lang | |
3 # | |
4 # This program is free software; you can redistribute it and/or | |
5 # modify it under the terms of the GNU General Public License | |
6 # as published by the Free Software Foundation; either version 2 | |
7 # of the License, or (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
14 # You should have received a copy of the GNU General Public License | |
15 # along with this program; if not, write to the Free Software | |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
17 | |
18 require File.expand_path('../../test_helper', __FILE__) | |
19 | |
20 class MemberTest < ActiveSupport::TestCase | |
21 fixtures :projects, :trackers, :issue_statuses, :issues, | |
22 :enumerations, :users, :issue_categories, | |
23 :projects_trackers, | |
24 :roles, | |
25 :member_roles, | |
26 :members, | |
27 :enabled_modules, | |
28 :workflows, | |
29 :groups_users, | |
30 :watchers, | |
31 :journals, :journal_details, | |
32 :messages, | |
33 :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, | |
34 :boards | |
35 | |
36 def setup | |
37 @jsmith = Member.find(1) | |
38 end | |
39 | |
40 def test_create | |
41 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2]) | |
42 assert member.save | |
43 member.reload | |
44 | |
45 assert_equal 2, member.roles.size | |
46 assert_equal Role.find(1), member.roles.sort.first | |
47 end | |
48 | |
49 def test_update | |
50 assert_equal "eCookbook", @jsmith.project.name | |
51 assert_equal "Manager", @jsmith.roles.first.name | |
52 assert_equal "jsmith", @jsmith.user.login | |
53 | |
54 @jsmith.mail_notification = !@jsmith.mail_notification | |
55 assert @jsmith.save | |
56 end | |
57 | |
58 def test_update_roles | |
59 assert_equal 1, @jsmith.roles.size | |
60 @jsmith.role_ids = [1, 2] | |
61 assert @jsmith.save | |
62 assert_equal 2, @jsmith.reload.roles.size | |
63 end | |
64 | |
65 def test_validate | |
66 member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2]) | |
67 # same use can't have more than one membership for a project | |
68 assert !member.save | |
69 | |
70 member = Member.new(:project_id => 1, :user_id => 2, :role_ids => []) | |
71 # must have one role at least | |
72 assert !member.save | |
73 end | |
74 | |
75 def test_destroy | |
76 assert_difference 'Member.count', -1 do | |
77 assert_difference 'MemberRole.count', -1 do | |
78 @jsmith.destroy | |
79 end | |
80 end | |
81 | |
82 assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) } | |
83 end | |
84 | |
85 context "removing permissions" do | |
86 setup do | |
87 Watcher.delete_all("user_id = 9") | |
88 user = User.find(9) | |
89 # public | |
90 Watcher.create!(:watchable => Issue.find(1), :user => user) | |
91 # private | |
92 Watcher.create!(:watchable => Issue.find(4), :user => user) | |
93 Watcher.create!(:watchable => Message.find(7), :user => user) | |
94 Watcher.create!(:watchable => Wiki.find(2), :user => user) | |
95 Watcher.create!(:watchable => WikiPage.find(3), :user => user) | |
96 end | |
97 | |
98 context "of user" do | |
99 setup do | |
100 @member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2]) | |
101 end | |
102 | |
103 context "by deleting membership" do | |
104 should "prune watchers" do | |
105 assert_difference 'Watcher.count', -4 do | |
106 @member.destroy | |
107 end | |
108 end | |
109 end | |
110 | |
111 context "by updating roles" do | |
112 should "prune watchers" do | |
113 Role.find(2).remove_permission! :view_wiki_pages | |
114 member = Member.first(:order => 'id desc') | |
115 assert_difference 'Watcher.count', -2 do | |
116 member.role_ids = [2] | |
117 member.save | |
118 end | |
119 assert !Message.find(7).watched_by?(@user) | |
120 end | |
121 end | |
122 end | |
123 | |
124 context "of group" do | |
125 setup do | |
126 group = Group.find(10) | |
127 @member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2]) | |
128 group.users << User.find(9) | |
129 end | |
130 | |
131 context "by deleting membership" do | |
132 should "prune watchers" do | |
133 assert_difference 'Watcher.count', -4 do | |
134 @member.destroy | |
135 end | |
136 end | |
137 end | |
138 | |
139 context "by updating roles" do | |
140 should "prune watchers" do | |
141 Role.find(2).remove_permission! :view_wiki_pages | |
142 assert_difference 'Watcher.count', -2 do | |
143 @member.role_ids = [2] | |
144 @member.save | |
145 end | |
146 end | |
147 end | |
148 end | |
149 end | |
150 end |