cieloz 0.0.9 → 0.0.10

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