test/unit/mapper_test.rb in cieloz-0.0.17 vs test/unit/mapper_test.rb in cieloz-0.0.18
- old
+ new
@@ -32,6 +32,61 @@
# errors have theit attributes identified when put on base
errors.map { |e| "#{attr}: #{e}" }
}.flatten
txn.errors.messages[:base].must_equal expected_errors
end
+
+ describe "errors that parent object injects on dependent objects" do
+ let(:pr) { Cieloz.portador order, numero: numero }
+ let(:pd) { Cieloz.pedido order, valor: valor }
+ let(:pg) { Cieloz.parcelado order, bandeira: 'visa', parcelas: 2 }
+ let(:txn){
+ Cieloz.transacao order, dados_portador: pr,
+ dados_pedido: pd,
+ forma_pagamento: pg
+ }
+ let(:err) { "activemodel.errors.models.cieloz/requisicao_transacao" }
+ let(:min_parcel_msg) {
+ I18n.t "#{err}/dados_pedido.attributes.valor.minimum_installment_not_satisfied"
+ }
+ let(:invalid_number_msg) {
+ I18n.t "#{err}/dados_portador.attributes.numero.invalid"
+ }
+
+ before { Cieloz::Configuracao.store_mode! }
+ after { Cieloz::Configuracao.reset! }
+
+ describe "to base" do
+ let(:valor) { 9.00 }
+ let(:numero) { "1234" }
+
+ before { txn.valid? }
+
+ it "validates parcela minima" do
+ order.errors[:base].must_include "valor: #{min_parcel_msg}"
+ end
+
+ it "validates credit card number" do
+ order.errors[:base].must_include "numero: #{invalid_number_msg}"
+ end
+ end
+
+ describe "to attribute" do
+ let(:valor) { :value }
+ let(:numero) { :number }
+
+ before {
+ def order.value ; 9.00 end
+ def order.number ; "invalid" end
+ txn.valid?
+ }
+
+ it "validates parcela minima" do
+ order.errors[:value].must_include min_parcel_msg
+ end
+
+ it "validates credit card number" do
+ order.errors[:number].must_include invalid_number_msg
+ end
+ end
+ end
end