has_handle_fallback 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.8
1
+ 0.0.9
@@ -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.to_s =~ HasHandleFallback::RECORD_ID_REGEXP
37
+ if param =~ HasHandleFallback::RECORD_ID_REGEXP
38
38
  find_by_id param
39
39
  else
40
- send "find_by_#{has_handle_fallback_options[:handle_column]}", param
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
@@ -1,6 +1,7 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
3
  require 'active_record'
4
+ require 'ruby-debug'
4
5
 
5
6
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
7
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -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
- version: 0.0.8
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-03-23 00:00:00 -04:00
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
- type: :runtime
18
- version_requirement:
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
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: validates_decency_of
27
- type: :runtime
28
- version_requirement:
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
- version:
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.5
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.