-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from algorich/bank_debit_payment
Bank debit payment and Payment slip payment
- Loading branch information
Showing
7 changed files
with
140 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
module MyMoip | ||
class BankDebit | ||
include ActiveModel::Validations | ||
|
||
attr_accessor :bank | ||
|
||
AVAILABLE_BANKS = [:banco_do_brasil, :bradesco, :banrisul, :itau] | ||
|
||
validates :bank, presence: true, inclusion: AVAILABLE_BANKS | ||
|
||
def initialize(attrs) | ||
attrs.each do |attr, value| | ||
public_send(:"#{attr}=", value) | ||
end | ||
end | ||
|
||
def bank=(value) | ||
value = value.to_sym unless value.nil? | ||
@bank = value | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
module MyMoip | ||
class BankDebitPayment | ||
attr_accessor :bank_debit | ||
|
||
def initialize(bank_debit) | ||
@bank_debit = bank_debit | ||
end | ||
|
||
def to_json | ||
raise InvalidBankDebit, "No bank debit information provided." if @bank_debit.nil? | ||
raise InvalidBankDebit if @bank_debit.invalid? | ||
|
||
json = { | ||
Forma: "DebitoBancario", | ||
} | ||
|
||
json[:Instituicao] = { | ||
banco_do_brasil: "BancoDoBrasil", | ||
bradesco: "Bradesco", | ||
banrisul: "Banrisul", | ||
itau: "Itau" | ||
}.fetch(@bank_debit.bank) | ||
|
||
json | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
require_relative '../test_helper' | ||
|
||
class TestBankDebit < Test::Unit::TestCase | ||
def test_initialization_and_setters | ||
subject = MyMoip::BankDebit.new(bank: :itau) | ||
assert_equal :itau, subject.bank | ||
end | ||
|
||
def test_initialization_and_setters_with_string_keys | ||
subject = MyMoip::BankDebit.new('bank' => :itau) | ||
assert_equal :itau, subject.bank | ||
end | ||
|
||
def test_validate_presence_of_bank_attribute | ||
subject = Fixture.bank_debit(bank: nil) | ||
assert subject.invalid? && subject.errors[:bank].present?, | ||
'should be invalid without a bank name' | ||
end | ||
|
||
def test_converts_bank_string_to_symbol | ||
subject = Fixture.bank_debit(bank: "itau") | ||
assert_equal :itau, subject.bank | ||
end | ||
|
||
def test_accepts_any_bank_from_available_banks_constant | ||
MyMoip::BankDebit::AVAILABLE_BANKS.each do |bank| | ||
subject = Fixture.bank_debit(bank: bank) | ||
assert subject.valid?, 'should be valid' | ||
end | ||
end | ||
|
||
def test_dont_accept_bank_out_of_available_banks_constant | ||
subject = Fixture.bank_debit(bank: :unavailable_bank) | ||
assert subject.invalid? && subject.errors[:bank].present?, 'should not be valid' | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
require_relative '../test_helper' | ||
|
||
class TestBankDebitPayment < Test::Unit::TestCase | ||
def test_initialization_and_setters | ||
bank_debit = Fixture.bank_debit | ||
subject = MyMoip::BankDebitPayment.new(bank_debit) | ||
assert_equal bank_debit, subject.bank_debit | ||
end | ||
|
||
def test_json_format | ||
payment = MyMoip::BankDebitPayment.new(Fixture.bank_debit) | ||
assert_equal "DebitoBancario", payment.to_json[:Forma] | ||
end | ||
|
||
def test_to_json_should_accept_any_bank_from_available_banks_constant | ||
MyMoip::BankDebit::AVAILABLE_BANKS.each do |bank| | ||
payment = MyMoip::BankDebitPayment.new(Fixture.bank_debit(bank: bank)) | ||
assert_nothing_raised(KeyError) { payment.to_json } | ||
end | ||
end | ||
|
||
def test_to_json_method_raises_an_exception_when_called_without_a_bank_debit | ||
subject = MyMoip::BankDebitPayment.new(nil) | ||
assert_raise(MyMoip::InvalidBankDebit) { subject.to_json } | ||
end | ||
|
||
def test_to_json_method_raises_an_exception_when_called_with_a_invalid_bank_debit | ||
subject = MyMoip::BankDebitPayment.new(Fixture.bank_debit) | ||
MyMoip::BankDebit.any_instance.stubs(:invalid?).returns(true) | ||
assert_raise(MyMoip::InvalidBankDebit) { subject.to_json } | ||
end | ||
end |