has_handle_fallback 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/has_handle_fallback.rb +2 -2
- data/test/helper.rb +1 -0
- data/test/test_has_handle_fallback.rb +17 -0
- metadata +28 -13
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.9
|
data/lib/has_handle_fallback.rb
CHANGED
@@ -34,10 +34,10 @@ module HasHandleFallback
|
|
34
34
|
def find_by_id_or_handle(param)
|
35
35
|
return if param.blank?
|
36
36
|
param = param.to_s
|
37
|
-
if param
|
37
|
+
if param =~ HasHandleFallback::RECORD_ID_REGEXP
|
38
38
|
find_by_id param
|
39
39
|
else
|
40
|
-
|
40
|
+
first :conditions => [ "LOWER(#{quoted_table_name}.`#{has_handle_fallback_options[:handle_column]}`) = ?", param.downcase ]
|
41
41
|
end
|
42
42
|
end
|
43
43
|
alias :[] :find_by_id_or_handle
|
data/test/helper.rb
CHANGED
@@ -21,6 +21,11 @@ class Cat < ActiveRecord::Base
|
|
21
21
|
end
|
22
22
|
|
23
23
|
class TestHasHandleFallback < Test::Unit::TestCase
|
24
|
+
def setup
|
25
|
+
Person.delete_all
|
26
|
+
Cat.delete_all
|
27
|
+
end
|
28
|
+
|
24
29
|
def test_has_handle
|
25
30
|
ab = Person.new :email => 'a.b@example.com', :handle => 'AB'
|
26
31
|
assert_equal 'AB', ab.handle
|
@@ -46,6 +51,12 @@ class TestHasHandleFallback < Test::Unit::TestCase
|
|
46
51
|
assert_equal false, Person.new(:email => 'pierre.bourdieu@example.com', :handle => 'Pierre:Bourdieu_99').valid?
|
47
52
|
end
|
48
53
|
|
54
|
+
def test_validates_uniqueness_ignoring_case
|
55
|
+
Person.create!(:email => 'pierre.bourdieu@example.com', :handle => 'Pierre-Bourdieu_99')
|
56
|
+
b = Person.create(:email => 'pierre.bourdieu@example.com', :handle => 'PIERRE-BOURDIEU_99')
|
57
|
+
assert_equal "isn't unique", b.errors.on(:handle)
|
58
|
+
end
|
59
|
+
|
49
60
|
def test_can_have_nil_handle
|
50
61
|
assert_equal true, Person.new(:email => 'pierre.bourdieu@example.com', :handle => nil).valid?
|
51
62
|
end
|
@@ -89,4 +100,10 @@ class TestHasHandleFallback < Test::Unit::TestCase
|
|
89
100
|
assert_equal pierre.id.to_s, pierre.to_param
|
90
101
|
assert_equal pierre, Person[pierre.to_param]
|
91
102
|
end
|
103
|
+
|
104
|
+
def test_finds_by_id_or_handle_ignoring_case
|
105
|
+
handle = 'Pierre-Bourdieu_99'
|
106
|
+
a = Person.create!(:email => 'pierre.bourdieu@example.com', :handle => handle.upcase)
|
107
|
+
assert_equal a, Person[handle.downcase]
|
108
|
+
end
|
92
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_handle_fallback
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 9
|
9
|
+
version: 0.0.9
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Seamus Abshere
|
@@ -9,29 +14,37 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-04-02 00:00:00 -04:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: activerecord
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ~>
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 2
|
29
|
+
- 3
|
30
|
+
- 4
|
23
31
|
version: 2.3.4
|
24
|
-
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: validates_decency_of
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ~>
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 1
|
43
|
+
- 5
|
44
|
+
- 0
|
33
45
|
version: 1.5.0
|
34
|
-
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
35
48
|
description: Make it easy to use handles (callsigns/monikers/usernames) in URLs, even if they might be blank.
|
36
49
|
email: seamus@abshere.net
|
37
50
|
executables: []
|
@@ -64,18 +77,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
64
77
|
requirements:
|
65
78
|
- - ">="
|
66
79
|
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 0
|
67
82
|
version: "0"
|
68
|
-
version:
|
69
83
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
84
|
requirements:
|
71
85
|
- - ">="
|
72
86
|
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 0
|
73
89
|
version: "0"
|
74
|
-
version:
|
75
90
|
requirements: []
|
76
91
|
|
77
92
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.3.
|
93
|
+
rubygems_version: 1.3.6
|
79
94
|
signing_key:
|
80
95
|
specification_version: 3
|
81
96
|
summary: Make it easy to use handles (callsigns/monikers/usernames) in URLs, even if they might be blank.
|