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 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.