comparison .svn/pristine/5b/5b67cbc43876349cb50763840008cc0544dfb9b5.svn-base @ 1298:4f746d8966dd redmine_2.3_integration

Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author Chris Cannam
date Fri, 14 Jun 2013 09:28:30 +0100
parents 622f24f53b42
children
comparison
equal deleted inserted replaced
1297:0a574315af3e 1298:4f746d8966dd
1 # Redmine - project management software
2 # Copyright (C) 2006-2013 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 GroupTest < ActiveSupport::TestCase
21 fixtures :projects, :trackers, :issue_statuses, :issues,
22 :enumerations, :users,
23 :projects_trackers,
24 :roles,
25 :member_roles,
26 :members,
27 :groups_users
28
29 include Redmine::I18n
30
31 def test_create
32 g = Group.new(:name => 'New group')
33 assert g.save
34 g.reload
35 assert_equal 'New group', g.name
36 end
37
38 def test_name_should_accept_255_characters
39 name = 'a' * 255
40 g = Group.new(:name => name)
41 assert g.save
42 g.reload
43 assert_equal name, g.name
44 end
45
46 def test_blank_name_error_message
47 set_language_if_valid 'en'
48 g = Group.new
49 assert !g.save
50 assert_include "Name can't be blank", g.errors.full_messages
51 end
52
53 def test_blank_name_error_message_fr
54 set_language_if_valid 'fr'
55 str = "Nom doit \xc3\xaatre renseign\xc3\xa9(e)"
56 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
57 g = Group.new
58 assert !g.save
59 assert_include str, g.errors.full_messages
60 end
61
62 def test_group_roles_should_be_given_to_added_user
63 group = Group.find(11)
64 user = User.find(9)
65 project = Project.first
66
67 Member.create!(:principal => group, :project => project, :role_ids => [1, 2])
68 group.users << user
69 assert user.member_of?(project)
70 end
71
72 def test_new_roles_should_be_given_to_existing_user
73 group = Group.find(11)
74 user = User.find(9)
75 project = Project.first
76
77 group.users << user
78 m = Member.create!(:principal => group, :project => project, :role_ids => [1, 2])
79 assert user.member_of?(project)
80 end
81
82 def test_user_roles_should_updated_when_updating_user_ids
83 group = Group.find(11)
84 user = User.find(9)
85 project = Project.first
86
87 Member.create!(:principal => group, :project => project, :role_ids => [1, 2])
88 group.user_ids = [user.id]
89 group.save!
90 assert User.find(9).member_of?(project)
91
92 group.user_ids = [1]
93 group.save!
94 assert !User.find(9).member_of?(project)
95 end
96
97 def test_user_roles_should_updated_when_updating_group_roles
98 group = Group.find(11)
99 user = User.find(9)
100 project = Project.first
101 group.users << user
102 m = Member.create!(:principal => group, :project => project, :role_ids => [1])
103 assert_equal [1], user.reload.roles_for_project(project).collect(&:id).sort
104
105 m.role_ids = [1, 2]
106 assert_equal [1, 2], user.reload.roles_for_project(project).collect(&:id).sort
107
108 m.role_ids = [2]
109 assert_equal [2], user.reload.roles_for_project(project).collect(&:id).sort
110
111 m.role_ids = [1]
112 assert_equal [1], user.reload.roles_for_project(project).collect(&:id).sort
113 end
114
115 def test_user_memberships_should_be_removed_when_removing_group_membership
116 assert User.find(8).member_of?(Project.find(5))
117 Member.find_by_project_id_and_user_id(5, 10).destroy
118 assert !User.find(8).member_of?(Project.find(5))
119 end
120
121 def test_user_roles_should_be_removed_when_removing_user_from_group
122 assert User.find(8).member_of?(Project.find(5))
123 User.find(8).groups = []
124 assert !User.find(8).member_of?(Project.find(5))
125 end
126
127 def test_destroy_should_unassign_issues
128 group = Group.first
129 Issue.update_all(["assigned_to_id = ?", group.id], 'id = 1')
130
131 assert group.destroy
132 assert group.destroyed?
133
134 assert_equal nil, Issue.find(1).assigned_to_id
135 end
136 end