identificamex 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/curp_format_validator.rb +0 -2
- data/lib/identificamex/version.rb +1 -1
- data/lib/rfc_format_validator.rb +9 -1
- data/test/empleado.rb +12 -0
- data/test/identificamex/curp_format_validator_test.rb +24 -20
- data/test/identificamex/rfc_format_validator_test.rb +57 -23
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7582ffcdc522742b30de845539e2b75aa9f7207
|
4
|
+
data.tar.gz: 5a9c321686aa075703734e80f55fc84fc1c4e03a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bca3b17490e14c1572ec2d57ef673eb265632ffeae0171f80bf63f453523d1d608914a68042ba40e455ea6ecbd362f730f7cff50bc5e38930faa79bdcf1a7891
|
7
|
+
data.tar.gz: b2e09aa117afd8f48254b4afe182a4e516e833c73b8c1517336463059a8e4c5baae0224066706feb8db054b2fb7fa06817f0a4a9250548811b593d13fae99748
|
data/lib/rfc_format_validator.rb
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
class RfcFormatValidator < ActiveModel::EachValidator
|
3
3
|
def validate_each(object, attribute, value)
|
4
|
-
unless value =~
|
4
|
+
unless value =~ regexp
|
5
5
|
object.errors[attribute] << (options[:message] || "no es un RFC válido")
|
6
6
|
end
|
7
7
|
end
|
8
|
+
|
9
|
+
def regexp
|
10
|
+
if options[:force_homoclave]
|
11
|
+
/\A[A-ZÑ&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9][A-Z0-9]{3}\z/i
|
12
|
+
else
|
13
|
+
/\A[A-ZÑ&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9]([A-Z0-9]{3})?\z/i
|
14
|
+
end
|
15
|
+
end
|
8
16
|
end
|
data/test/empleado.rb
CHANGED
@@ -9,3 +9,15 @@ class Empleado
|
|
9
9
|
@rfc = options[:rfc] || 'AAAA111111AAA'
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
class EmpleadoHomoclave
|
14
|
+
include ActiveModel::Validations
|
15
|
+
attr_accessor :curp, :rfc
|
16
|
+
validates :curp, curp_format: true
|
17
|
+
validates :rfc, rfc_format: { force_homoclave: true }
|
18
|
+
|
19
|
+
def initialize(options)
|
20
|
+
@curp = options[:curp] || 'AAAA111111HDFBBB01'
|
21
|
+
@rfc = options[:rfc] || 'AAAA111111AAA'
|
22
|
+
end
|
23
|
+
end
|
@@ -3,57 +3,61 @@ require_relative '../empleado'
|
|
3
3
|
|
4
4
|
describe 'curp validator' do
|
5
5
|
|
6
|
+
def model(options)
|
7
|
+
Empleado.new(options)
|
8
|
+
end
|
9
|
+
|
6
10
|
describe 'with valid data' do
|
7
11
|
it 'accepts curp (hombre)' do
|
8
|
-
|
12
|
+
model(curp: 'AAAA111111HDFBBB01').must_be :valid?
|
9
13
|
end
|
10
14
|
|
11
15
|
it 'accepts curp (mujer)' do
|
12
|
-
|
16
|
+
model(curp: 'AAAA111111MDFBBB01').must_be :valid?
|
13
17
|
end
|
14
18
|
|
15
19
|
it 'accepts curp (digito anti-duplicado alfanumérico)' do
|
16
|
-
|
20
|
+
model(curp: 'AAAA111111HDFBBBA1').must_be :valid?
|
17
21
|
end
|
18
22
|
end # with valid data
|
19
23
|
|
20
24
|
describe 'with invalid data' do
|
21
|
-
it 'refuses curp (nombre con
|
22
|
-
|
25
|
+
it 'refuses curp (nombre con dígito en lugar de letra)' do
|
26
|
+
model(curp: '9AAA111111HDFBBB01').wont_be :valid?
|
23
27
|
end
|
24
28
|
|
25
|
-
it 'refuses curp (caracter
|
26
|
-
|
29
|
+
it 'refuses curp (caracter inválido)' do
|
30
|
+
model(curp: 'A*AA111111HDFBBB01').wont_be :valid?
|
27
31
|
end
|
28
32
|
|
29
|
-
it 'refuses curp (falta un
|
30
|
-
|
33
|
+
it 'refuses curp (falta un dígito en la fecha)' do
|
34
|
+
model(curp: 'AAAA11111HDFBBB01').wont_be :valid?
|
31
35
|
end
|
32
36
|
|
33
|
-
it 'refuses curp (falta un
|
34
|
-
|
37
|
+
it 'refuses curp (falta un carácter en los datos del nombre)' do
|
38
|
+
model(curp: 'AAA111111HDFBBB01').wont_be :valid?
|
35
39
|
end
|
36
40
|
|
37
|
-
it 'refuses curp (el dia es
|
38
|
-
|
41
|
+
it 'refuses curp (el dia es inválido 42)' do
|
42
|
+
model(curp: 'AAAA111142HDFBBB01').wont_be :valid?
|
39
43
|
end
|
40
44
|
|
41
|
-
it 'refuses curp (el mes es
|
42
|
-
|
45
|
+
it 'refuses curp (el mes es inválido 25)' do
|
46
|
+
model(curp: 'AAAA112511HDFBBB01').wont_be :valid?
|
43
47
|
end
|
44
48
|
|
45
49
|
it 'refuses curp (sexo es inválido K)' do
|
46
|
-
|
50
|
+
model(curp: 'AAAA111111KDFBBB01').wont_be :valid?
|
47
51
|
end
|
48
52
|
|
49
53
|
it 'refuses curp (caracteres de consonantes tiene alguna vocal)' do
|
50
|
-
|
51
|
-
|
52
|
-
|
54
|
+
model(curp: 'AAAA111111HDFABB01').wont_be :valid?
|
55
|
+
model(curp: 'AAAA111111HDFBAB01').wont_be :valid?
|
56
|
+
model(curp: 'AAAA111111HDFBBA01').wont_be :valid?
|
53
57
|
end
|
54
58
|
|
55
59
|
it 'refuses curp (digito verificador alfanumérico)' do
|
56
|
-
|
60
|
+
model(curp: 'AAAA111111HDFBBB0A').wont_be :valid?
|
57
61
|
end
|
58
62
|
end # with invalid data
|
59
63
|
|
@@ -3,56 +3,90 @@ require_relative '../empleado'
|
|
3
3
|
|
4
4
|
describe 'rfc validator' do
|
5
5
|
|
6
|
+
def model(options)
|
7
|
+
Empleado.new(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def model_homoclave(options)
|
11
|
+
EmpleadoHomoclave.new(options)
|
12
|
+
end
|
13
|
+
|
6
14
|
describe 'with valid data' do
|
7
|
-
it 'accepts rfc (
|
8
|
-
|
15
|
+
it 'accepts rfc (completo)' do
|
16
|
+
model(rfc: 'AEIO111111AEI').must_be :valid?
|
9
17
|
end
|
10
18
|
|
11
|
-
it 'accepts rfc (con 3
|
12
|
-
|
19
|
+
it 'accepts rfc (con 3 carácteres para el nombre)' do
|
20
|
+
model(rfc: 'AEI111111AEI').must_be :valid?
|
13
21
|
end
|
14
22
|
|
15
23
|
it 'accepts rfc (sin homoclave)' do
|
16
|
-
|
24
|
+
model(rfc: 'AEIO111111').must_be :valid?
|
17
25
|
end
|
18
26
|
|
19
|
-
it 'accepts rfc (sin homoclave y con 3
|
20
|
-
|
27
|
+
it 'accepts rfc (sin homoclave y con 3 carácteres para el nombre)' do
|
28
|
+
model(rfc: 'AEI111111').must_be :valid?
|
21
29
|
end
|
22
30
|
|
23
|
-
it 'accepts rfc (
|
24
|
-
|
31
|
+
it 'accepts rfc (datos de nombre con Ñ)' do
|
32
|
+
model(rfc: 'ÑAEI111111AEI').must_be :valid?
|
25
33
|
end
|
26
34
|
|
27
|
-
it 'accepts rfc (
|
28
|
-
|
35
|
+
it 'accepts rfc (datos de nombre con &)' do
|
36
|
+
model(rfc: 'A&O111111AEI').must_be :valid?
|
29
37
|
end
|
38
|
+
|
39
|
+
describe 'force homoclave' do
|
40
|
+
it 'accepts rfc (4 carácteres para el nombre, sin homoclave)' do
|
41
|
+
model_homoclave(rfc: 'AEIO111111').wont_be :valid?
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'accepts rfc (3 carácteres para el nombre, sin homoclave)' do
|
45
|
+
model_homoclave(rfc: 'AEI111111').wont_be :valid?
|
46
|
+
end
|
47
|
+
end # describe force homoclave
|
48
|
+
|
30
49
|
end # with valid data
|
31
50
|
|
32
51
|
describe 'with invalid data' do
|
33
|
-
it 'refuses rfc (nombre con
|
34
|
-
|
52
|
+
it 'refuses rfc (nombre con dígito en lugar de letra)' do
|
53
|
+
model(rfc: '9AEI111111').wont_be :valid?
|
35
54
|
end
|
36
55
|
|
37
|
-
it 'refuses rfc (
|
38
|
-
|
56
|
+
it 'refuses rfc (carácter inválido)' do
|
57
|
+
model(rfc: 'A*OU111111').wont_be :valid?
|
39
58
|
end
|
40
59
|
|
41
|
-
it 'refuses rfc (falta un
|
42
|
-
|
60
|
+
it 'refuses rfc (falta un dígito en la fecha)' do
|
61
|
+
model(rfc: 'AEIO11111').wont_be :valid?
|
43
62
|
end
|
44
63
|
|
45
|
-
it 'refuses rfc (falta un
|
46
|
-
|
64
|
+
it 'refuses rfc (falta un carácter en los datos del nombre)' do
|
65
|
+
model(rfc: 'AE111111').wont_be :valid?
|
47
66
|
end
|
48
67
|
|
49
|
-
it 'refuses rfc (el
|
50
|
-
|
68
|
+
it 'refuses rfc (el día es inválido, 42)' do
|
69
|
+
model(rfc: 'AEIO111142').wont_be :valid?
|
51
70
|
end
|
52
71
|
|
53
|
-
it 'refuses rfc (el mes es
|
54
|
-
|
72
|
+
it 'refuses rfc (el mes es inváido, 25)' do
|
73
|
+
model(rfc: 'AEIO112511').wont_be :valid?
|
55
74
|
end
|
75
|
+
|
76
|
+
it 'refuses rfc (homoclave incompleta)' do
|
77
|
+
model(rfc: 'AEIO111111A').wont_be :valid?
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'force homoclave' do
|
81
|
+
it 'refuses rfc (4 carácteres para el nombre, sin homoclave)' do
|
82
|
+
model_homoclave(rfc: 'AEIO111111').wont_be :valid?
|
83
|
+
end
|
84
|
+
|
85
|
+
it 'refuses rfc (3 carácteres para el nombre, sin homoclave)' do
|
86
|
+
model_homoclave(rfc: 'AEI111111').wont_be :valid?
|
87
|
+
end
|
88
|
+
end # describe force homoclave
|
89
|
+
|
56
90
|
end # with invalid data
|
57
91
|
|
58
92
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: identificamex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Azarel Doroteo Pacheco
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|