test/unit/validations_test.rb in cieloz-0.0.8 vs test/unit/validations_test.rb in cieloz-0.0.9
- old
+ new
@@ -14,22 +14,25 @@
_.new(codigo_seguranca: "123").codigo_seguranca.wont_be_nil
end
it { must ensure_length_of(:nome_portador).is_at_most(50) }
- it { must validate_presence_of :numero }
- it { must ensure_length_of(:numero).is_equal_to 16 }
- it { must validate_numericality_of(:numero).only_integer }
+ it { must allow_value(1234567890123456).for(:numero) }
+ it { wont allow_value(123456789012345).for(:numero) }
+ it { wont allow_value(12345678901234567).for(:numero) }
+ it { wont allow_value("ABC4567890123456").for(:numero) }
- it { must validate_presence_of :validade }
- it { must ensure_length_of(:validade).is_equal_to 6 }
- it { must validate_numericality_of(:validade).only_integer }
+ it {
+ (100..9999).step(123).each {|val|
+ must allow_value(val).for(:codigo_seguranca)
+ }
+ }
- it { must ensure_length_of(:codigo_seguranca)
- .is_at_least(3)
- .is_at_most(4) }
- it { must validate_numericality_of(:codigo_seguranca).only_integer }
+ it { wont allow_value(99).for(:codigo_seguranca) }
+ it { wont allow_value(10000).for(:codigo_seguranca) }
+ it { wont allow_value("ab1").for(:codigo_seguranca) }
+ it { wont allow_value("abc1").for(:codigo_seguranca) }
def mm_values range
yyyy = 2013
range.map { |i| mm = '%02d' % (i % 100) ; "#{yyyy}#{mm}" }
end
@@ -88,20 +91,26 @@
end
end
describe Cieloz::RequisicaoTransacao::DadosPedido do
it { must validate_presence_of :numero }
- it { must ensure_length_of(:numero)
- .is_at_least(1)
- .is_at_most(20) }
+ it { must ensure_length_of(:numero).is_at_most(20) }
it { must validate_presence_of :valor }
+ it { must ensure_length_of(:valor).is_at_most(12) }
it { must validate_numericality_of(:valor).only_integer }
- it { must ensure_length_of(:valor)
- .is_at_least(1)
- .is_at_most(12) }
+ it "dont validate valor if it's blank" do
+ subject.valor = ""
+ refute subject.valid?
+ assert_equal [I18n.t('errors.messages.blank')], subject.errors[:valor]
+
+ subject.valor = "abc"
+ refute subject.valid?
+ assert_equal [I18n.t('errors.messages.not_a_number')], subject.errors[:valor]
+ end
+
it { must validate_presence_of :moeda }
it { must validate_presence_of :data_hora }
it { must ensure_length_of(:descricao).is_at_most(1024) }
it { must ensure_length_of(:soft_descriptor).is_at_most(13) }
@@ -236,18 +245,17 @@
it "autorizacao direta doesnt require url_retorno" do
subject.autorizacao_direta
wont validate_presence_of :url_retorno
end
- it { must ensure_length_of(:url_retorno).is_at_least(1).is_at_most(1024) }
+ it { must ensure_length_of(:url_retorno).is_at_most(1024) }
it "doesnt validate url_retorno length for autorizacao direta" do
subject.autorizacao_direta
wont ensure_length_of(:url_retorno).is_at_least(1).is_at_most(1024)
end
- it { must validate_presence_of :autorizar }
it {
must ensure_inclusion_of(:autorizar).in_array [
_::SOMENTE_AUTENTICAR, _::AUTORIZAR_SE_AUTENTICADA,
_::AUTORIZAR_NAO_AUTENTICADA, _::AUTORIZACAO_DIRETA, _::RECORRENTE
]
@@ -307,11 +315,10 @@
subject.recorrente
assert subject.errors[:autorizacao].empty?
}
end
- it { must validate_presence_of :capturar }
it { must ensure_inclusion_of(:capturar).in_array(["true", "false"]) }
it { must ensure_length_of(:campo_livre).is_at_most(128) }
it "extracts bin from DadosPortador" do
@@ -347,8 +354,8 @@
subject.forma_pagamento = subject.class::FormaPagamento
.new.parcelado Cieloz::Bandeiras::VISA, 3
refute subject.valid?
msg = "Installment should be greater than or equal to R$ 5,00"
- assert_equal msg, subject.errors[:forma_pagamento].first
+ assert_equal msg, subject.dados_pedido.errors[:valor].first
end
end