simple_phone_number 0.1.8 → 0.1.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.tar.gz.sig +0 -0
- data/Rakefile +13 -1
- data/simple_phone_number.gemspec +3 -2
- data/test/attributes_test.rb +71 -0
- data/test/test_helper.rb +11 -0
- data/test/validations_test.rb +92 -0
- metadata +6 -4
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/Rakefile
CHANGED
@@ -1,8 +1,20 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rake'
|
3
|
+
require 'rake/testtask'
|
3
4
|
require 'echoe'
|
4
5
|
|
5
|
-
|
6
|
+
desc 'Default: run unit tests.'
|
7
|
+
task :default => :test
|
8
|
+
|
9
|
+
desc 'Test the simple_phone_number plugin.'
|
10
|
+
Rake::TestTask.new(:test) do |t|
|
11
|
+
t.libs << 'lib'
|
12
|
+
t.libs << 'test'
|
13
|
+
t.pattern = 'test/**/*_test.rb'
|
14
|
+
t.verbose = true
|
15
|
+
end
|
16
|
+
|
17
|
+
Echoe.new('simple_phone_number', '0.1.9') do |p|
|
6
18
|
p.description = "Validate and set phone number format"
|
7
19
|
p.url = "http://github.com/akennedy/simple_phone_number"
|
8
20
|
p.author = 'Andrew Kennedy'
|
data/simple_phone_number.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{simple_phone_number}
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.9"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Andrew Kennedy"]
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.description = %q{Validate and set phone number format}
|
12
12
|
s.email = %q{andrew@jackrussellsoftware.com}
|
13
13
|
s.extra_rdoc_files = ["README.md", "lib/simple_phone_number.rb"]
|
14
|
-
s.files = ["Manifest", "README.md", "Rakefile", "init.rb", "lib/simple_phone_number.rb", "simple_phone_number.gemspec"]
|
14
|
+
s.files = ["Manifest", "README.md", "Rakefile", "init.rb", "lib/simple_phone_number.rb", "simple_phone_number.gemspec", "test/attributes_test.rb", "test/test_helper.rb", "test/validations_test.rb"]
|
15
15
|
s.homepage = %q{http://github.com/akennedy/simple_phone_number}
|
16
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Simple_phone_number", "--main", "README.md"]
|
17
17
|
s.require_paths = ["lib"]
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.rubygems_version = %q{1.3.6}
|
20
20
|
s.signing_key = %q{/Users/andrew/gems/gem-private_key.pem}
|
21
21
|
s.summary = %q{Validate and set phone number format}
|
22
|
+
s.test_files = ["test/attributes_test.rb", "test/test_helper.rb", "test/validations_test.rb"]
|
22
23
|
|
23
24
|
if s.respond_to? :specification_version then
|
24
25
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class AttributesTest < Test::Unit::TestCase
|
4
|
+
context 'Setting simple_phone_number' do
|
5
|
+
setup do
|
6
|
+
@attribute_names = %w(phone_number telephone phone_not_validated phone_with_validation_options phone_validated_elsewhere)
|
7
|
+
@user = User.new(:name => 'Test User')
|
8
|
+
|
9
|
+
# generates a phone number in the form: nnn-nnn-nnnn
|
10
|
+
def generate_phone_number
|
11
|
+
"#{(x = ('000'..'999').to_a)[rand(x.length - 1)]}-#{x[rand(x.length - 1)]}-#{(y = ('0000'..'9999').to_a)[rand(y.length - 1)]}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
should 'add attributes names to the phone_number_attributes array' do
|
16
|
+
assert_same_elements @user.class.phone_number_attributes.map {|a| a.to_s}, @attribute_names
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'automatically use :phone_number if no attribute names are given' do
|
20
|
+
%w(phone_number).each do |name|
|
21
|
+
assert_contains @user.class.phone_number_attributes, name.to_sym
|
22
|
+
assert_respond_to @user, "#{name}="
|
23
|
+
assert_respond_to @user, name
|
24
|
+
assert_nothing_raised do
|
25
|
+
@user.send(name)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'create a setter method' do
|
31
|
+
@attribute_names.each do |name|
|
32
|
+
assert_respond_to @user, "#{name}="
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
should 'create a getter method' do
|
37
|
+
@attribute_names.each do |name|
|
38
|
+
assert_respond_to @user, name
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
should 'properly set a phone number using setter method' do
|
43
|
+
@attribute_names.each do |name|
|
44
|
+
assert_send [@user, "#{name}=", number = generate_phone_number]
|
45
|
+
assert_equal number.gsub(/^(?:\+?1[-. ]?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/, '\1-\2-\3'), @user.send("#{name}")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
should 'properly return a phone number using getter method' do
|
50
|
+
# need to run the setters again…
|
51
|
+
@attribute_names.each do |name|
|
52
|
+
assert_send [@user, "#{name}=", generate_phone_number]
|
53
|
+
end
|
54
|
+
|
55
|
+
@attribute_names.each do |name|
|
56
|
+
assert_match /^([0-9]{3})[-]([0-9]{3})[-]([0-9]{4})$/, @user.send(name)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
should 'return the "database stored" value if argument is passed to getter' do
|
61
|
+
# need to run the setters again…
|
62
|
+
@attribute_names.each do |name|
|
63
|
+
assert_send [@user, "#{name}=", generate_phone_number]
|
64
|
+
end
|
65
|
+
|
66
|
+
@attribute_names.each do |name|
|
67
|
+
assert_match /^([0-9]{3})[-]([0-9]{3})[-]([0-9]{4})$/, @user.send(name)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
$: << File.join(File.dirname(__FILE__), '..', 'lib')
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'test/unit'
|
6
|
+
require 'active_record'
|
7
|
+
require 'shoulda'
|
8
|
+
require 'action_view'
|
9
|
+
require 'simple_phone_number'
|
10
|
+
require 'schema'
|
11
|
+
begin; require 'redgreen'; rescue LoadError; end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ValidationsTest < Test::Unit::TestCase
|
4
|
+
context 'Setting simple_phone_number or simple_fax_number' do
|
5
|
+
setup do
|
6
|
+
@attribute_names = %w(phone_number telephone phone_not_validated phone_with_validation_options phone_validated_elsewhere)
|
7
|
+
@not_validated = %w(phone_not_validated)
|
8
|
+
@validated_on_update = %w(phone_with_validation_options)
|
9
|
+
@auto_validated = @attribute_names - @not_validated - @validated_on_update
|
10
|
+
|
11
|
+
@user = User.new(:name => 'Test User')
|
12
|
+
|
13
|
+
# generates a phone number in the form: nnn-nnn-nnnn
|
14
|
+
def generate_phone_number
|
15
|
+
"#{(x = ('000'..'999').to_a)[rand(x.length - 1)]}-#{x[rand(x.length - 1)]}-#{(y = ('0000'..'9999').to_a)[rand(y.length - 1)]}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def set_fields(fields)
|
19
|
+
fields.each do |name|
|
20
|
+
@user.send("#{name}=", generate_phone_number)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'automatically add a validation unless told not to' do
|
26
|
+
@auto_validated.each do |name|
|
27
|
+
assert_equal false, @user.valid?
|
28
|
+
assert @user.errors[name.to_s].any?
|
29
|
+
|
30
|
+
@user.send("#{name}=", 'gibberish.')
|
31
|
+
assert_equal false, @user.valid?
|
32
|
+
assert @user.errors[name.to_s].any?
|
33
|
+
|
34
|
+
@user.send("#{name}=", generate_phone_number)
|
35
|
+
end
|
36
|
+
assert @user.save
|
37
|
+
end
|
38
|
+
|
39
|
+
should 'not validate if told not to' do
|
40
|
+
set_fields @auto_validated
|
41
|
+
|
42
|
+
@not_validated.each do |name|
|
43
|
+
assert @user.valid?
|
44
|
+
assert @user.errors.empty?
|
45
|
+
|
46
|
+
@user.send("#{name}=", 'gibberish.')
|
47
|
+
@user.valid?
|
48
|
+
assert @user.errors.empty?
|
49
|
+
end
|
50
|
+
assert @user.save
|
51
|
+
end
|
52
|
+
|
53
|
+
should 'apply and adhere to validation-specific options set for the default validation' do
|
54
|
+
set_fields @auto_validated + ['fax_validated_elsewhere']
|
55
|
+
|
56
|
+
# test that validation fails on :update
|
57
|
+
assert @user.save
|
58
|
+
assert_equal false, @user.valid?
|
59
|
+
assert @user.errors[:phone_with_validation_options]
|
60
|
+
|
61
|
+
# test invalid data
|
62
|
+
@user.phone_with_validation_options = 'gibberish.'
|
63
|
+
assert_equal false, @user.valid?
|
64
|
+
assert @user.errors[:phone_with_validation_options].any?
|
65
|
+
|
66
|
+
# test our custom error message
|
67
|
+
assert_equal ['is so not a valid phone number!'], @user.errors[:phone_with_validation_options]
|
68
|
+
|
69
|
+
# test our custom error :if option
|
70
|
+
@user.name = nil
|
71
|
+
assert @user.valid?
|
72
|
+
|
73
|
+
# test saving valid record
|
74
|
+
@user.name = 'Test User'
|
75
|
+
@user.phone_with_validation_options = generate_phone_number
|
76
|
+
assert @user.save
|
77
|
+
end
|
78
|
+
|
79
|
+
should 'respond to validates_simple_phone_number and adhere to specified options' do
|
80
|
+
set_fields @auto_validated - ['phone_validated_elsewhere']
|
81
|
+
|
82
|
+
# test our custom error message
|
83
|
+
assert_equal false, @user.valid?
|
84
|
+
assert @user.errors[:phone_validated_elsewhere].any?
|
85
|
+
assert_equal ["didn't pass validations elsewhere"], @user.errors[:phone_validated_elsewhere]
|
86
|
+
|
87
|
+
# test saving valid record
|
88
|
+
@user.phone_validated_elsewhere = generate_phone_number
|
89
|
+
assert @user.save
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 9
|
9
|
+
version: 0.1.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Andrew Kennedy
|
@@ -91,5 +91,7 @@ rubygems_version: 1.3.6
|
|
91
91
|
signing_key:
|
92
92
|
specification_version: 3
|
93
93
|
summary: Validate and set phone number format
|
94
|
-
test_files:
|
95
|
-
|
94
|
+
test_files:
|
95
|
+
- test/attributes_test.rb
|
96
|
+
- test/test_helper.rb
|
97
|
+
- test/validations_test.rb
|
metadata.gz.sig
CHANGED
Binary file
|