From 7959101288c08181e0a66e56d3047283359b8f0e Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Sat, 12 Dec 2009 06:18:40 +0000 Subject: [PATCH] Search mail addresses in Principal#like git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3152 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/principal.rb | 4 +-- test/unit/principal_test.rb | 66 +++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 test/unit/principal_test.rb diff --git a/app/models/principal.rb b/app/models/principal.rb index f83cdd0a8..ff9b6866c 100644 --- a/app/models/principal.rb +++ b/app/models/principal.rb @@ -27,8 +27,8 @@ class Principal < ActiveRecord::Base named_scope :like, lambda {|q| s = "%#{q.to_s.strip.downcase}%" - {:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ?", s, s, s], - :order => 'type, login, lastname, firstname' + {:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", s, s, s, s], + :order => 'type, login, lastname, firstname, mail' } } diff --git a/test/unit/principal_test.rb b/test/unit/principal_test.rb new file mode 100644 index 000000000..e44f77177 --- /dev/null +++ b/test/unit/principal_test.rb @@ -0,0 +1,66 @@ +# redMine - project management software +# Copyright (C) 2009 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.dirname(__FILE__) + '/../test_helper' + +class PrincipalTest < ActiveSupport::TestCase + + context "#like" do + setup do + Principal.generate!(:login => 'login') + Principal.generate!(:login => 'login2') + + Principal.generate!(:firstname => 'firstname') + Principal.generate!(:firstname => 'firstname2') + + Principal.generate!(:lastname => 'lastname') + Principal.generate!(:lastname => 'lastname2') + + Principal.generate!(:mail => 'mail@example.com') + Principal.generate!(:mail => 'mail2@example.com') + end + + should "search login" do + results = Principal.like('login') + + assert_equal 2, results.count + assert results.all? {|u| u.login.match(/login/) } + end + + should "search firstname" do + results = Principal.like('firstname') + + assert_equal 2, results.count + assert results.all? {|u| u.firstname.match(/firstname/) } + end + + should "search lastname" do + results = Principal.like('lastname') + + assert_equal 2, results.count + assert results.all? {|u| u.lastname.match(/lastname/) } + end + + should "search mail" do + results = Principal.like('mail') + + assert_equal 2, results.count + assert results.all? {|u| u.mail.match(/mail/) } + end + end + +end