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