cieloz 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,7 +15,8 @@ en:
15
15
  numero:
16
16
  invalid: should have 16 digits
17
17
  validade:
18
- invalid: should be in YYYYDD format
18
+ invalid_year: invalid year
19
+ invalid_month: invalid month
19
20
  codigo_seguranca:
20
21
  invalid: should have 3 or 4 digits
21
22
  cieloz/requisicao_transacao/dados_pedido:
@@ -15,7 +15,8 @@ pt-BR:
15
15
  numero:
16
16
  invalid: deve ter 16 dígitos
17
17
  validade:
18
- invalid: deve estar no formato YYYYDD
18
+ invalid_year: ano inválido
19
+ invalid_month: mês inválido
19
20
  codigo_seguranca:
20
21
  invalid: deve ter 3 ou 4 dígitos
21
22
  cieloz/requisicao_transacao/dados_pedido:
@@ -21,9 +21,11 @@ class Cieloz::RequisicaoTransacao
21
21
  end
22
22
 
23
23
  validates :numero, format: { with: /^\d{16}$/ }
24
- validates :validade, format: { with: /^2\d{3}(0[1-9]|1[012])$/ }
25
24
  validates :codigo_seguranca, format: { with: /^(\d{3}|\d{4})$/ }
26
25
 
26
+ validate :valida_ano_validade, unless: ->{ validade.nil? }
27
+ validate :valida_mes_validade, unless: ->{ validade.nil? }
28
+
27
29
  validates :indicador, presence: true
28
30
 
29
31
  def initialize attrs={}
@@ -77,5 +79,18 @@ class Cieloz::RequisicaoTransacao
77
79
  flag.codigo_seguranca = 123
78
80
  }
79
81
  end
82
+
83
+ private
84
+ def valida_mes_validade
85
+ if mes = validade[4..5]
86
+ errors.add :validade, :invalid_month unless mes.length == 2 and mes.to_i.between? 1, 12
87
+ end
88
+ end
89
+
90
+ def valida_ano_validade
91
+ if ano = validade[0..3]
92
+ errors.add :validade, :invalid_year if ano.to_i < Date.today.year
93
+ end
94
+ end
80
95
  end
81
96
  end
@@ -1,3 +1,3 @@
1
1
  module Cieloz
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -1,3 +1,5 @@
1
+ # encoding: utf-8
2
+
1
3
  describe Cieloz::Requisicao do
2
4
  it { must validate_presence_of :dados_ec }
3
5
  end
@@ -37,11 +39,44 @@ describe Cieloz::RequisicaoTransacao::DadosPortador do
37
39
  range.map { |i| mm = '%02d' % (i % 100) ; "#{yyyy}#{mm}" }
38
40
  end
39
41
 
40
- it "validates validade as yyyymm" do
41
- must allow_value(*mm_values(1..12)).for(:validade)
42
+ it "validates mês validade" do
43
+ year = Date.today.year
44
+ (1..12).each {|mes|
45
+ subject.validade = "#{year}#{"%02d" % mes}"
46
+ subject.valid?
47
+ assert_nil subject.errors.messages[:validade]
48
+ }
49
+ ((0..9).to_a + (13..99).to_a).each {|mes|
50
+ subject.validade = "#{year}#{"%d" % mes}"
51
+ subject.valid?
52
+ assert_equal [
53
+ I18n.t(:invalid_month, scope:
54
+ [ :activemodel, :errors, :models,
55
+ "cieloz/requisicao_transacao/dados_portador",
56
+ :attributes, :validade]
57
+ )
58
+ ], subject.errors[:validade]
59
+ }
60
+ end
42
61
 
43
- values = mm_values(13..100) << "199911"
44
- wont allow_value(*values).for(:validade)
62
+ it "validates ano validade" do
63
+ year = Date.today.year
64
+ (year..year+10).each {|ano|
65
+ subject.validade = "#{year}01"
66
+ subject.valid?
67
+ assert_nil subject.errors.messages[:validade]
68
+ }
69
+ (year-10..year-1).each {|ano|
70
+ subject.validade = "#{ano}01"
71
+ subject.valid?
72
+ assert_equal [
73
+ I18n.t(:invalid_year,
74
+ scope: [ :activemodel, :errors, :models,
75
+ "cieloz/requisicao_transacao/dados_portador",
76
+ :attributes, :validade]
77
+ )
78
+ ], subject.errors[:validade]
79
+ }
45
80
  end
46
81
 
47
82
  describe "indicador and codigo_seguranca validation" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cieloz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-27 00:00:00.000000000 Z
12
+ date: 2013-05-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -246,18 +246,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
246
246
  - - ! '>='
247
247
  - !ruby/object:Gem::Version
248
248
  version: '0'
249
- segments:
250
- - 0
251
- hash: 3193634196579590297
252
249
  required_rubygems_version: !ruby/object:Gem::Requirement
253
250
  none: false
254
251
  requirements:
255
252
  - - ! '>='
256
253
  - !ruby/object:Gem::Version
257
254
  version: '0'
258
- segments:
259
- - 0
260
- hash: 3193634196579590297
261
255
  requirements: []
262
256
  rubyforge_project:
263
257
  rubygems_version: 1.8.23