identificamex 0.0.1 → 0.0.2
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.
- 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
|