valicuit 0.2.2 → 0.2.3

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: 152af78be77b708c5f1250b822ba6e51c3f3a0d9
4
- data.tar.gz: eb3e1a106becb4ee13dacca3d027a3428027fb37
3
+ metadata.gz: 24b741a2e8ab39b34b05604b34fc3c0bf7a64f9b
4
+ data.tar.gz: cc5582902091c831fdd7d0091c13fd58292c2a3f
5
5
  SHA512:
6
- metadata.gz: 59f2ecf49e180404dae2d6e239d55dee15c2423f70ab8b311a9c78aa5a9857a64bdacce91c223273e22839978dc95cdb8a8e9bbf51241d9c277e39ab0a804088
7
- data.tar.gz: d30e08ff153bf3f0b6dd5c1526a060288e8767cff022bdfc7429f1e62157a817f5083ff895843cf3663a603cad25e61daf2096c239fee1a45a4cc5768ed6316f
6
+ metadata.gz: dcd32f985e9b1b235ba76bb0e59c7773d36b2375b95f475eb007ca9fe1cbdcb547ca357b09bc94c102e5087c0a471fb8b758efe9759d4fc19f351e4edb6b7423
7
+ data.tar.gz: aba2719b8532e2bd591cfd8f564ac5f2065f1fbd32e4b320c8b4d2a87ab899852b799f3d8ba999632cc22fffeba9791604eaaf0bdfbfb5c81f1e4d0ffb10fcf3
data/README.md CHANGED
@@ -9,7 +9,7 @@ Un validador de CUIT/CUIL para ActiveModel & Rails.
9
9
  Lo de siempre... agregar esta línea en el Gemfile del proyecto:
10
10
 
11
11
  ```
12
- gem 'valicuit', github: 'lndl/valicuit'
12
+ gem 'valicuit'
13
13
  ```
14
14
 
15
15
  Y, finalmente, ejecutar **bundle install**
@@ -52,12 +52,14 @@ Análogamente se cumple lo mismo para el género:
52
52
 
53
53
  ```ruby
54
54
  class Persona < ActiveRecord::Base
55
- validates :cuit, cuit: { gender_compatible: { field: :genero, male: 'M', female: 'F' } }
55
+ validates :cuit, cuit: { gender_compatible: { field: :genero, male: 'M', female: 'F', company: 'C' } }
56
56
  end
57
57
  ```
58
58
 
59
59
  Y se especifica el campo que representa el género en el modelo, más los valores para validar tales géneros.
60
60
 
61
+ Notar que la opción *company*, para validar CUITs de empresas/instituciones, es opcional (pasará la validación directamente en caso de no estar especificado) mientras que las opciones *male*, *female* y *field* no lo son.
62
+
61
63
 
62
64
  ## Tests
63
65
 
@@ -101,15 +101,20 @@ module ActiveModel
101
101
  raise ArgumentError, 'Valicuit: gender field specification must be present!' unless options[:gender_compatible][:field].present?
102
102
  raise ArgumentError, 'Valicuit: declaration of male value missing!' unless options[:gender_compatible][:male].present?
103
103
  raise ArgumentError, 'Valicuit: declaration of female value missing!' unless options[:gender_compatible][:female].present?
104
- case type
105
- when '20'
106
- options[:gender_compatible][:male]
107
- when '27'
108
- options[:gender_compatible][:female]
109
- else
110
- # Machist!
111
- options[:gender_compatible][:male]
112
- end == record.public_send(options[:gender_compatible][:field])
104
+ gender = case type
105
+ when '20'
106
+ options[:gender_compatible][:male]
107
+ when '27'
108
+ options[:gender_compatible][:female]
109
+ when '30', '33'
110
+ options[:gender_compatible][:company] || :pass
111
+ when '23', '24', '25', '26'
112
+ :pass
113
+ else
114
+ :dont_pass
115
+ end
116
+
117
+ gender == :pass ? true : gender == record.public_send(options[:gender_compatible][:field])
113
118
  end
114
119
  end
115
120
 
@@ -1,3 +1,3 @@
1
1
  module Valicuit
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -193,18 +193,22 @@ RSpec.describe ActiveModel::Validations::CuitValidator do
193
193
  end
194
194
  context 'with gender compatible option' do
195
195
  before do
196
- TestModel.validates :cuit, cuit: { gender_compatible: { field: :gender, male: 'M', female: 'F' } }
196
+ TestModel.validates :cuit, cuit: { gender_compatible: { field: :gender, male: 'M', female: 'F', company: 'C' } }
197
197
  end
198
198
  it 'must return true when CUIT/CUIL is valid and gender part is compatible with gender model' do
199
199
  expect(TestModel.new(cuit: '20120112989', gender: 'M')).to be_valid
200
200
  expect(TestModel.new(cuit: '27049852032', gender: 'F')).to be_valid
201
+ expect(TestModel.new(cuit: '30615459190', gender: 'C')).to be_valid
202
+ expect(TestModel.new(cuit: '23218381669', gender: 'M')).to be_valid
203
+ expect(TestModel.new(cuit: '23218381669', gender: 'F')).to be_valid
201
204
  end
202
- it 'must return true with cuit type different of 20/27 as "Male"' do
203
- expect(TestModel.new(cuit: '30709316547', gender: 'M')).to be_valid
205
+ it 'must return false when CUIT/CUIL is valid but gender part is invalid' do
206
+ expect(TestModel.new(cuit: '17049852032', gender: 'F')).to be_invalid
204
207
  end
205
208
  it 'must return false when CUIT/CUIL is valid but gender part is incompatible with gender model' do
206
209
  expect(TestModel.new(cuit: '20120112989', gender: 'F')).to be_invalid
207
210
  expect(TestModel.new(cuit: '27049852032', gender: 'M')).to be_invalid
211
+ expect(TestModel.new(cuit: '27049852032', gender: 'C')).to be_invalid
208
212
  end
209
213
  it 'must leave a specific message over :cuit in #errors array' do
210
214
  record = TestModel.new(cuit: '20120112989', gender: 'F')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valicuit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lautaro Nahuel De León
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-01 00:00:00.000000000 Z
11
+ date: 2016-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel