test/unit/validations_test.rb in cieloz-0.0.9 vs test/unit/validations_test.rb in cieloz-0.0.10

- old
+ new

@@ -1,5 +1,7 @@ +# encoding: utf-8 + describe Cieloz::Requisicao do it { must validate_presence_of :dados_ec } end describe Cieloz::Requisicao::DadosEc do @@ -35,14 +37,47 @@ def mm_values range yyyy = 2013 range.map { |i| mm = '%02d' % (i % 100) ; "#{yyyy}#{mm}" } end - it "validates validade as yyyymm" do - must allow_value(*mm_values(1..12)).for(:validade) + it "validates mês validade" do + year = Date.today.year + (1..12).each {|mes| + subject.validade = "#{year}#{"%02d" % mes}" + subject.valid? + assert_nil subject.errors.messages[:validade] + } + ((0..9).to_a + (13..99).to_a).each {|mes| + subject.validade = "#{year}#{"%d" % mes}" + subject.valid? + assert_equal [ + I18n.t(:invalid_month, scope: + [ :activemodel, :errors, :models, + "cieloz/requisicao_transacao/dados_portador", + :attributes, :validade] + ) + ], subject.errors[:validade] + } + end - values = mm_values(13..100) << "199911" - wont allow_value(*values).for(:validade) + it "validates ano validade" do + year = Date.today.year + (year..year+10).each {|ano| + subject.validade = "#{year}01" + subject.valid? + assert_nil subject.errors.messages[:validade] + } + (year-10..year-1).each {|ano| + subject.validade = "#{ano}01" + subject.valid? + assert_equal [ + I18n.t(:invalid_year, + scope: [ :activemodel, :errors, :models, + "cieloz/requisicao_transacao/dados_portador", + :attributes, :validade] + ) + ], subject.errors[:validade] + } end describe "indicador and codigo_seguranca validation" do let(:code) { 123 }