To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
root / .svn / pristine / 15 / 15b7222cb6b5695205873370eda995f4170a4d8e.svn-base @ 1298:4f746d8966dd
History | View | Annotate | Download (4.02 KB)
| 1 | 1295:622f24f53b42 | Chris | # 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 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 | :groups_users, |
||
| 29 | :watchers, |
||
| 30 | :journals, :journal_details, |
||
| 31 | :messages, |
||
| 32 | :wikis, :wiki_pages, :wiki_contents, :wiki_content_versions, |
||
| 33 | :boards |
||
| 34 | |||
| 35 | include Redmine::I18n |
||
| 36 | |||
| 37 | def setup |
||
| 38 | @jsmith = Member.find(1) |
||
| 39 | end |
||
| 40 | |||
| 41 | def test_create |
||
| 42 | member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2]) |
||
| 43 | assert member.save |
||
| 44 | member.reload |
||
| 45 | |||
| 46 | assert_equal 2, member.roles.size |
||
| 47 | assert_equal Role.find(1), member.roles.sort.first |
||
| 48 | end |
||
| 49 | |||
| 50 | def test_update |
||
| 51 | assert_equal "eCookbook", @jsmith.project.name |
||
| 52 | assert_equal "Manager", @jsmith.roles.first.name |
||
| 53 | assert_equal "jsmith", @jsmith.user.login |
||
| 54 | |||
| 55 | @jsmith.mail_notification = !@jsmith.mail_notification |
||
| 56 | assert @jsmith.save |
||
| 57 | end |
||
| 58 | |||
| 59 | def test_update_roles |
||
| 60 | assert_equal 1, @jsmith.roles.size |
||
| 61 | @jsmith.role_ids = [1, 2] |
||
| 62 | assert @jsmith.save |
||
| 63 | assert_equal 2, @jsmith.reload.roles.size |
||
| 64 | end |
||
| 65 | |||
| 66 | def test_validate |
||
| 67 | member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2]) |
||
| 68 | # same use can't have more than one membership for a project |
||
| 69 | assert !member.save |
||
| 70 | |||
| 71 | # must have one role at least |
||
| 72 | user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo") |
||
| 73 | user.login = "test_validate" |
||
| 74 | user.password, user.password_confirmation = "password", "password" |
||
| 75 | assert user.save |
||
| 76 | |||
| 77 | set_language_if_valid 'fr' |
||
| 78 | member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => []) |
||
| 79 | assert !member.save |
||
| 80 | assert_include I18n.translate('activerecord.errors.messages.empty'), member.errors[:role]
|
||
| 81 | str = "R\xc3\xb4le doit \xc3\xaatre renseign\xc3\xa9(e)" |
||
| 82 | str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
|
||
| 83 | assert_equal str, [member.errors.full_messages].flatten.join |
||
| 84 | end |
||
| 85 | |||
| 86 | def test_validate_member_role |
||
| 87 | user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo") |
||
| 88 | user.login = "test_validate_member_role" |
||
| 89 | user.password, user.password_confirmation = "password", "password" |
||
| 90 | assert user.save |
||
| 91 | member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [5]) |
||
| 92 | assert !member.save |
||
| 93 | end |
||
| 94 | |||
| 95 | def test_destroy |
||
| 96 | category1 = IssueCategory.find(1) |
||
| 97 | assert_equal @jsmith.user.id, category1.assigned_to_id |
||
| 98 | assert_difference 'Member.count', -1 do |
||
| 99 | assert_difference 'MemberRole.count', -1 do |
||
| 100 | @jsmith.destroy |
||
| 101 | end |
||
| 102 | end |
||
| 103 | assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
|
||
| 104 | category1.reload |
||
| 105 | assert_nil category1.assigned_to_id |
||
| 106 | end |
||
| 107 | |||
| 108 | def test_sort_without_roles |
||
| 109 | a = Member.new(:roles => [Role.first]) |
||
| 110 | b = Member.new |
||
| 111 | |||
| 112 | assert_equal -1, a <=> b |
||
| 113 | assert_equal 1, b <=> a |
||
| 114 | end |
||
| 115 | |||
| 116 | def test_sort_without_principal |
||
| 117 | role = Role.first |
||
| 118 | a = Member.new(:roles => [role], :principal => User.first) |
||
| 119 | b = Member.new(:roles => [role]) |
||
| 120 | |||
| 121 | assert_equal -1, a <=> b |
||
| 122 | assert_equal 1, b <=> a |
||
| 123 | end |
||
| 124 | end |