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