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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 08a56adc68bd04aa000dd2e2fc18761a15c9f8be
4
- data.tar.gz: f3499a518b6d5740a7527add55f4f420a4bc3cb3
3
+ metadata.gz: f7582ffcdc522742b30de845539e2b75aa9f7207
4
+ data.tar.gz: 5a9c321686aa075703734e80f55fc84fc1c4e03a
5
5
  SHA512:
6
- metadata.gz: 4d6c9f5a9ca1ede3dc897d9c3adb20b87503d0352405b85b90cef43586c2d3bf7a6f966a25dc9b060fc5cc1e141969500ccc784336fcd23610ce61707f1de0fc
7
- data.tar.gz: 7aa92cd762566d4ff229f7a2e63f2c836cf96f583a99d48c32e72dea16a18a2b51627bbfa935779becc42a8aac50d984840cb142563975d5dc82c355c258079b
6
+ metadata.gz: bca3b17490e14c1572ec2d57ef673eb265632ffeae0171f80bf63f453523d1d608914a68042ba40e455ea6ecbd362f730f7cff50bc5e38930faa79bdcf1a7891
7
+ data.tar.gz: b2e09aa117afd8f48254b4afe182a4e516e833c73b8c1517336463059a8e4c5baae0224066706feb8db054b2fb7fa06817f0a4a9250548811b593d13fae99748
@@ -6,5 +6,3 @@ class CurpFormatValidator < ActiveModel::EachValidator
6
6
  end
7
7
  end
8
8
  end
9
-
10
-
@@ -1,3 +1,3 @@
1
1
  module Identificamex
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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 =~ /\A[A-ZÑ&]{3,4}[0-9]{2}[0-1][0-9][0-3][0-9]([A-Z0-9]{0,3})?\z/i
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
- Empleado.new(curp: 'AAAA111111HDFBBB01').must_be :valid?
12
+ model(curp: 'AAAA111111HDFBBB01').must_be :valid?
9
13
  end
10
14
 
11
15
  it 'accepts curp (mujer)' do
12
- Empleado.new(curp: 'AAAA111111MDFBBB01').must_be :valid?
16
+ model(curp: 'AAAA111111MDFBBB01').must_be :valid?
13
17
  end
14
18
 
15
19
  it 'accepts curp (digito anti-duplicado alfanumérico)' do
16
- Empleado.new(curp: 'AAAA111111HDFBBBA1').must_be :valid?
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 digito en lugar de letra)' do
22
- Empleado.new(curp: '9AAA111111HDFBBB01').wont_be :valid?
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 invalido)' do
26
- Empleado.new(curp: 'A*AA111111HDFBBB01').wont_be :valid?
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 digito en la fecha)' do
30
- Empleado.new(curp: 'AAAA11111HDFBBB01').wont_be :valid?
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 caracter en los datos del nombre)' do
34
- Empleado.new(curp: 'AAA111111HDFBBB01').wont_be :valid?
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 invalido 42)' do
38
- Empleado.new(curp: 'AAAA111142HDFBBB01').wont_be :valid?
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 invaido 25)' do
42
- Empleado.new(curp: 'AAAA112511HDFBBB01').wont_be :valid?
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
- Empleado.new(curp: 'AAAA111111KDFBBB01').wont_be :valid?
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
- Empleado.new(curp: 'AAAA111111HDFABB01').wont_be :valid?
51
- Empleado.new(curp: 'AAAA111111HDFBAB01').wont_be :valid?
52
- Empleado.new(curp: 'AAAA111111HDFBBA01').wont_be :valid?
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
- Empleado.new(curp: 'AAAA111111HDFBBB0A').wont_be :valid?
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 (compl.must_be)' do
8
- Empleado.new(rfc: 'AEIO111111AEI').must_be :valid?
15
+ it 'accepts rfc (completo)' do
16
+ model(rfc: 'AEIO111111AEI').must_be :valid?
9
17
  end
10
18
 
11
- it 'accepts rfc (con 3 caracteres para el nombre)' do
12
- Empleado.new(rfc: 'AEI111111AEI').must_be :valid?
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
- Empleado.new(rfc: 'AEIO111111').must_be :valid?
24
+ model(rfc: 'AEIO111111').must_be :valid?
17
25
  end
18
26
 
19
- it 'accepts rfc (sin homoclave y con 3 caracteres para el nombre)' do
20
- Empleado.new(rfc: 'AEI111111').must_be :valid?
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 (d.must_bes de nombre con Ñ)' do
24
- Empleado.new(rfc: 'ÑAEI111111AEI').must_be :valid?
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 (d.must_bes de nombre con &)' do
28
- Empleado.new(rfc: 'A&O111111AEI').must_be :valid?
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 dig.must_be en lugar de letra)' do
34
- Empleado.new(rfc: '9AEI111111').wont_be :valid?
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 (caracter invalido)' do
38
- Empleado.new(rfc: 'A*OU111111').wont_be :valid?
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 dig.must_be en la fecha)' do
42
- Empleado.new(rfc: 'AEIO11111').wont_be :valid?
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 caracter en los d.must_bes del nombre)' do
46
- Empleado.new(rfc: 'AE111111').wont_be :valid?
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 dia es invalido 42)' do
50
- Empleado.new(rfc: 'AEIO111142').wont_be :valid?
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 invaido 25)' do
54
- Empleado.new(rfc: 'AEIO112511').wont_be :valid?
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.1
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-15 00:00:00.000000000 Z
11
+ date: 2013-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler