Add balance auto reload

Closes #329
This commit is contained in:
Artur Beljajev 2018-09-06 12:09:57 +03:00
parent 19f9a4eb71
commit 62c38d1f99
29 changed files with 660 additions and 16 deletions

View file

@ -0,0 +1,62 @@
require 'test_helper'
class BalanceAutoReloadTypes::ThresholdTest < ActiveSupport::TestCase
setup do
@original_min_reload_amount = Setting.minimum_deposit
end
teardown do
Setting.minimum_deposit = @original_min_reload_amount
end
def test_valid_fixture_is_valid
assert valid_type.valid?
end
def test_invalid_without_amount
type = valid_type
type.amount = nil
assert type.invalid?
end
def test_invalid_when_amount_is_smaller_than_required_minimum
type = valid_type
Setting.minimum_deposit = 0.02
type.amount = 0.01
assert type.invalid?
end
def test_valid_when_amount_equals_allowed_minimum
type = valid_type
Setting.minimum_deposit = 0.02
type.amount = 0.02
assert type.valid?
end
def test_invalid_without_threshold
type = valid_type
type.threshold = nil
assert type.invalid?
end
def test_invalid_when_threshold_is_less_than_zero
type = valid_type
type.threshold = -1
assert type.invalid?
end
def test_serializes_to_json
type = BalanceAutoReloadTypes::Threshold.new(amount: 100, threshold: 10)
assert_equal ({ name: 'threshold', amount: 100, threshold: 10 }).to_json, type.to_json
end
private
def valid_type
BalanceAutoReloadTypes::Threshold.new(amount: Setting.minimum_deposit, threshold: 0)
end
end

View file

@ -1,8 +1,13 @@
require 'test_helper'
class BankTransactionTest < ActiveSupport::TestCase
def test_matches_against_invoice_reference_number
invoices(:one).update!(account_activity: nil, number: '2222', total: 10, reference_no: '1111')
setup do
@registrar = registrars(:bestnames)
@invoice = invoices(:one)
end
def test_matches_against_invoice_number_and_reference_number
create_payable_invoice(number: '2222', total: 10, reference_no: '1111')
transaction = BankTransaction.new(description: 'invoice #2222', sum: 10, reference_no: '1111')
assert_difference 'AccountActivity.count' do
@ -10,8 +15,19 @@ class BankTransactionTest < ActiveSupport::TestCase
end
end
def test_resets_pending_registrar_balance_reload
registrar = registrar_with_pending_balance_auto_reload
create_payable_invoice(number: '2222', total: 10, reference_no: '1111')
transaction = BankTransaction.new(description: 'invoice #2222', sum: 10, reference_no: '1111')
transaction.autobind_invoice
registrar.reload
assert_nil registrar.settings['balance_auto_reload']['pending']
end
def test_does_not_match_against_registrar_reference_number
registrars(:bestnames).update!(reference_no: '1111')
@registrar.update!(reference_no: '1111')
transaction = BankTransaction.new(description: 'invoice #2222', sum: 10, reference_no: '1111')
assert_no_difference 'AccountActivity.count' do
@ -20,7 +36,7 @@ class BankTransactionTest < ActiveSupport::TestCase
end
def test_underpayment_is_not_matched_with_invoice
invoices(:one).update!(account_activity: nil, number: '2222', total: 10)
create_payable_invoice(number: '2222', total: 10)
transaction = BankTransaction.new(sum: 9)
assert_no_difference 'AccountActivity.count' do
@ -30,7 +46,7 @@ class BankTransactionTest < ActiveSupport::TestCase
end
def test_overpayment_is_not_matched_with_invoice
invoices(:one).update!(account_activity: nil, number: '2222', total: 10)
create_payable_invoice(number: '2222', total: 10)
transaction = BankTransaction.new(sum: 11)
assert_no_difference 'AccountActivity.count' do
@ -40,7 +56,7 @@ class BankTransactionTest < ActiveSupport::TestCase
end
def test_cancelled_invoice_is_not_matched
invoices(:one).update!(account_activity: nil, number: '2222', total: 10, cancelled_at: '2010-07-05')
@invoice.update!(account_activity: nil, number: '2222', total: 10, cancelled_at: '2010-07-05')
transaction = BankTransaction.new(sum: 10)
assert_no_difference 'AccountActivity.count' do
@ -48,4 +64,17 @@ class BankTransactionTest < ActiveSupport::TestCase
end
assert transaction.errors.full_messages.include?('Cannot bind cancelled invoice')
end
private
def create_payable_invoice(attributes)
payable_attributes = { account_activity: nil }
@invoice.update!(payable_attributes.merge(attributes))
@invoice
end
def registrar_with_pending_balance_auto_reload
@registrar.update!(settings: { balance_auto_reload: { pending: true } })
@registrar
end
end

View file

@ -176,6 +176,12 @@ class RegistrarTest < ActiveSupport::TestCase
assert_equal vat_country, registrar.vat_country
end
def test_returns_iban_for_e_invoice_delivery_channel
iban = 'GB33BUKB20201555555555'
registrar = Registrar.new(iban: iban)
assert_equal iban, registrar.e_invoice_iban
end
private
def valid_registrar