@@ -0,0 +1,66 | |||
|
1 | # redMine - project management software | |
|
2 | # Copyright (C) 2009 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.dirname(__FILE__) + '/../test_helper' | |
|
19 | ||
|
20 | class PrincipalTest < ActiveSupport::TestCase | |
|
21 | ||
|
22 | context "#like" do | |
|
23 | setup do | |
|
24 | Principal.generate!(:login => 'login') | |
|
25 | Principal.generate!(:login => 'login2') | |
|
26 | ||
|
27 | Principal.generate!(:firstname => 'firstname') | |
|
28 | Principal.generate!(:firstname => 'firstname2') | |
|
29 | ||
|
30 | Principal.generate!(:lastname => 'lastname') | |
|
31 | Principal.generate!(:lastname => 'lastname2') | |
|
32 | ||
|
33 | Principal.generate!(:mail => 'mail@example.com') | |
|
34 | Principal.generate!(:mail => 'mail2@example.com') | |
|
35 | end | |
|
36 | ||
|
37 | should "search login" do | |
|
38 | results = Principal.like('login') | |
|
39 | ||
|
40 | assert_equal 2, results.count | |
|
41 | assert results.all? {|u| u.login.match(/login/) } | |
|
42 | end | |
|
43 | ||
|
44 | should "search firstname" do | |
|
45 | results = Principal.like('firstname') | |
|
46 | ||
|
47 | assert_equal 2, results.count | |
|
48 | assert results.all? {|u| u.firstname.match(/firstname/) } | |
|
49 | end | |
|
50 | ||
|
51 | should "search lastname" do | |
|
52 | results = Principal.like('lastname') | |
|
53 | ||
|
54 | assert_equal 2, results.count | |
|
55 | assert results.all? {|u| u.lastname.match(/lastname/) } | |
|
56 | end | |
|
57 | ||
|
58 | should "search mail" do | |
|
59 | results = Principal.like('mail') | |
|
60 | ||
|
61 | assert_equal 2, results.count | |
|
62 | assert results.all? {|u| u.mail.match(/mail/) } | |
|
63 | end | |
|
64 | end | |
|
65 | ||
|
66 | end |
@@ -27,8 +27,8 class Principal < ActiveRecord::Base | |||
|
27 | 27 | |
|
28 | 28 | named_scope :like, lambda {|q| |
|
29 | 29 | s = "%#{q.to_s.strip.downcase}%" |
|
30 | {:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ?", s, s, s], | |
|
31 | :order => 'type, login, lastname, firstname' | |
|
30 | {:conditions => ["LOWER(login) LIKE ? OR LOWER(firstname) LIKE ? OR LOWER(lastname) LIKE ? OR LOWER(mail) LIKE ?", s, s, s, s], | |
|
31 | :order => 'type, login, lastname, firstname, mail' | |
|
32 | 32 | } |
|
33 | 33 | } |
|
34 | 34 |
General Comments 0
You need to be logged in to leave comments.
Login now