##// END OF EJS Templates
add unit test of error message in case that member role is empty...
add unit test of error message in case that member role is empty git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8126 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r8006:740b54f55b65
r8006:740b54f55b65
Show More
member_test.rb
174 lines | 5.6 KiB | text/x-ruby | RubyLexer
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# 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.expand_path('../../test_helper', __FILE__)
class MemberTest < ActiveSupport::TestCase
fixtures :projects, :trackers, :issue_statuses, :issues,
:enumerations, :users, :issue_categories,
:projects_trackers,
:roles,
:member_roles,
:members,
:enabled_modules,
:workflows,
:groups_users,
:watchers,
:journals, :journal_details,
:messages,
:wikis, :wiki_pages, :wiki_contents, :wiki_content_versions,
:boards
include Redmine::I18n
def setup
@jsmith = Member.find(1)
end
def test_create
member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
assert member.save
member.reload
assert_equal 2, member.roles.size
assert_equal Role.find(1), member.roles.sort.first
end
def test_update
assert_equal "eCookbook", @jsmith.project.name
assert_equal "Manager", @jsmith.roles.first.name
assert_equal "jsmith", @jsmith.user.login
@jsmith.mail_notification = !@jsmith.mail_notification
assert @jsmith.save
end
def test_update_roles
assert_equal 1, @jsmith.roles.size
@jsmith.role_ids = [1, 2]
assert @jsmith.save
assert_equal 2, @jsmith.reload.roles.size
end
def test_validate
member = Member.new(:project_id => 1, :user_id => 2, :role_ids => [2])
# same use can't have more than one membership for a project
assert !member.save
# must have one role at least
user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
user.login = "test_validate"
user.password, user.password_confirmation = "password", "password"
assert user.save
set_language_if_valid 'fr'
member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [])
assert !member.save
assert_equal I18n.translate('activerecord.errors.messages.empty'), member.errors[:role].to_s
str = "R\xc3\xb4le doit \xc3\xaatre renseign\xc3\xa9(e)"
str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
assert_equal str, member.errors.full_messages.to_s
end
def test_validate_member_role
user = User.new(:firstname => "new1", :lastname => "user1", :mail => "test_validate@somenet.foo")
user.login = "test_validate_member_role"
user.password, user.password_confirmation = "password", "password"
assert user.save
member = Member.new(:project_id => 1, :user_id => user.id, :role_ids => [5])
assert !member.save
end
def test_destroy
category1 = IssueCategory.find(1)
assert_equal @jsmith.user.id, category1.assigned_to_id
assert_difference 'Member.count', -1 do
assert_difference 'MemberRole.count', -1 do
@jsmith.destroy
end
end
assert_raise(ActiveRecord::RecordNotFound) { Member.find(@jsmith.id) }
category1.reload
assert_nil category1.assigned_to_id
end
context "removing permissions" do
setup do
Watcher.delete_all("user_id = 9")
user = User.find(9)
# public
Watcher.create!(:watchable => Issue.find(1), :user => user)
# private
Watcher.create!(:watchable => Issue.find(4), :user => user)
Watcher.create!(:watchable => Message.find(7), :user => user)
Watcher.create!(:watchable => Wiki.find(2), :user => user)
Watcher.create!(:watchable => WikiPage.find(3), :user => user)
end
context "of user" do
setup do
@member = Member.create!(:project => Project.find(2), :principal => User.find(9), :role_ids => [1, 2])
end
context "by deleting membership" do
should "prune watchers" do
assert_difference 'Watcher.count', -4 do
@member.destroy
end
end
end
context "by updating roles" do
should "prune watchers" do
Role.find(2).remove_permission! :view_wiki_pages
member = Member.first(:order => 'id desc')
assert_difference 'Watcher.count', -2 do
member.role_ids = [2]
member.save
end
assert !Message.find(7).watched_by?(@user)
end
end
end
context "of group" do
setup do
group = Group.find(10)
@member = Member.create!(:project => Project.find(2), :principal => group, :role_ids => [1, 2])
group.users << User.find(9)
end
context "by deleting membership" do
should "prune watchers" do
assert_difference 'Watcher.count', -4 do
@member.destroy
end
end
end
context "by updating roles" do
should "prune watchers" do
Role.find(2).remove_permission! :view_wiki_pages
assert_difference 'Watcher.count', -2 do
@member.role_ids = [2]
@member.save
end
end
end
end
end
end