Refactor and improve invoices

- `runner 'Invoice.cancel_overdue_invoices'` in `schedule.rb` is
changed to `rake 'invoices:cancel_overdue'`.
- `invoices.payment_term` database column is removed and its value is
hardcoded in UI.
- `invoices.paid_at` is removed as unused
- `invoices.due_date` column's type is now `date`.
- `Invoice#invoice_items` renamed to `Invoice#items` and `Invoice`
interface to get a list of items is unified.
- Default date format in UI.
- Default translations are used.
- Tests improved.
- Specs converted to tests and removed along with factories.
- Database structure improved.
This commit is contained in:
Artur Beljajev 2018-10-17 12:21:04 +03:00
parent d86ec026e3
commit a97728c0f3
65 changed files with 758 additions and 341 deletions

View file

@ -1,69 +0,0 @@
require 'rails_helper'
describe Invoice do
context 'with invalid attribute' do
before :all do
@invoice = Invoice.new
end
it 'should not be valid' do
@invoice.valid?
@invoice.errors.full_messages.should match_array([
"Buyer name is missing",
"Currency is missing",
"Due date is missing",
"Invoice items is missing",
"Seller iban is missing",
"Seller name is missing",
])
end
it 'should not have any versions' do
@invoice.versions.should == []
end
end
context 'with valid attributes' do
before :all do
@invoice = create(:invoice)
end
it 'should be valid' do
@invoice.valid?
@invoice.errors.full_messages.should match_array([])
end
it 'should be valid twice' do
@invoice = create(:invoice)
@invoice.valid?
@invoice.errors.full_messages.should match_array([])
end
it 'should be valid twice' do
@invoice = create(:invoice)
@invoice.valid?
@invoice.errors.full_messages.should match_array([])
end
it 'should return correct addresses' do
@invoice = create(:invoice)
@invoice.seller_address.should == 'Paldiski mnt. 123, Tallinn'
end
it 'should cancel overdue invoices' do
create(:invoice, created_at: Time.zone.now - 35.days, due_date: Time.zone.now - 30.days)
Invoice.cancel_overdue_invoices
Invoice.where(cancelled_at: nil).count.should == 1
end
it 'should have one version' do
with_versioning do
@invoice.versions.should == []
@invoice.buyer_name = 'New name'
@invoice.save
@invoice.errors.full_messages.should match_array([])
@invoice.versions.size.should == 1
end
end
end
end