Some tests for invoice binding

This commit is contained in:
Martin Lensment 2015-04-14 19:00:38 +03:00
parent e678e655da
commit 57d23976c7
19 changed files with 206 additions and 25 deletions

View file

@ -0,0 +1,4 @@
Fabricator(:account) do
account_type { Account::CASH }
balance 0.0
end

View file

@ -0,0 +1,6 @@
Fabricator(:bank_statement) do
bank_code { '767' }
iban { 'EE557700771000598731' }
queried_at { Time.zone.now }
bank_transactions(count: 2)
end

View file

@ -0,0 +1,6 @@
Fabricator(:bank_transaction) do
currency { 'EUR' }
sum { 100.0 }
description { 'Invoice no. 1' }
reference_no { 'RF2405752128' }
end

View file

@ -7,6 +7,8 @@ Fabricator(:registrar) do
zip 'Postal'
email 'info@registrar1.ee'
country_code 'EE'
reference_no { sequence(:reference_no) { |i| "RF#{i}" } }
accounts(count: 1)
end
Fabricator(:registrar1, from: :registrar) do
@ -28,3 +30,17 @@ Fabricator(:registrar2, from: :registrar) do
zip 'Postal'
email 'info@registrar2.ee'
end
Fabricator(:eis, from: :registrar) do
name 'EIS'
reg_no '90010019'
phone '+372 727 1000'
country_code 'EE'
vat_no 'EE101286464'
email 'info@internet.ee'
state 'Harjumaa'
city 'Tallinn'
street 'Paldiski mnt 80'
zip '10617'
url 'www.internet.ee'
end

View file

@ -0,0 +1,81 @@
require 'rails_helper'
describe BankStatement do
it { should have_many(:bank_transactions) }
context 'with invalid attribute' do
before :all do
@bank_statement = BankStatement.new
end
it 'should not be valid' do
@bank_statement.valid?
@bank_statement.errors.full_messages.should match_array([
"Bank code is missing",
"Iban is missing",
"Queried at is missing"
])
end
# it 'should not have any versions' do
# @bank_statement.versions.should == []
# end
end
context 'with valid attributes' do
before :all do
@bank_statement = Fabricate(:bank_statement)
end
it 'should be valid' do
@bank_statement.valid?
@bank_statement.errors.full_messages.should match_array([])
end
it 'should be valid twice' do
@bank_statement = Fabricate(:bank_statement)
@bank_statement.valid?
@bank_statement.errors.full_messages.should match_array([])
end
it 'should bind transactions with invoices' do
Fabricate(:eis)
r = Fabricate(:registrar, reference_no: 'RF7086666663')
r.issue_prepayment_invoice(200, 'add some money')
bs = Fabricate(:bank_statement, bank_transactions: [
Fabricate(:bank_transaction, {
sum: 240.0, # with vat
reference_no: 'RF7086666663',
description: 'Invoice no. 1'
}),
Fabricate(:bank_transaction, {
sum: 120.0,
reference_no: 'RF7086666663',
description: 'Invoice no. 1'
})
])
bs.bank_transactions.count.should == 2
AccountActivity.count.should == 0
bs.bind_with_invoices
AccountActivity.count.should == 1
r.cash_account.balance.should == 240.0
bs.bank_transactions.unbinded.count.should == 1
end
# it 'should have one version' do
# with_versioning do
# @bank_statement.versions.should == []
# @bank_statement.body = 'New body'
# @bank_statement.save
# @bank_statement.errors.full_messages.should match_array([])
# @bank_statement.versions.size.should == 1
# end
# end
end
end

View file

@ -56,18 +56,18 @@ describe Invoice do
@invoice.seller_address.should == 'Paldiski mnt. 123, Tallinn'
end
it 'should calculate totals correctly' do
it 'should calculate sums correctly' do
@invoice = Fabricate(:invoice)
@invoice.vat_prc.should == BigDecimal.new('0.2')
@invoice.total_without_vat.should == BigDecimal.new('300.0')
@invoice.total_vat.should == BigDecimal.new('60.0')
@invoice.total.should == BigDecimal.new('360.0')
@invoice.sum_without_vat.should == BigDecimal.new('300.0')
@invoice.vat.should == BigDecimal.new('60.0')
@invoice.sum.should == BigDecimal.new('360.0')
ii = @invoice.items.first
ii.item_total_without_vat.should == BigDecimal.new('150.0')
ii.item_sum_without_vat.should == BigDecimal.new('150.0')
ii = @invoice.items.last
ii.item_total_without_vat.should == BigDecimal.new('150.0')
ii.item_sum_without_vat.should == BigDecimal.new('150.0')
end
# it 'should have one version' do

View file

@ -90,7 +90,7 @@ describe Registrar do
@registrar.issue_prepayment_invoice(200, 'add some money')
@registrar.invoices.count.should == 1
i = @registrar.invoices.first
i.total.should == BigDecimal.new('240.0')
i.sum.should == BigDecimal.new('240.0')
i.description.should == 'add some money'
end
end