test/test_invoice.rb in ydim-1.0.0 vs test/test_invoice.rb in ydim-1.0.1
- old
+ new
@@ -1,29 +1,31 @@
#!/usr/bin/env ruby
+# encoding: utf-8
+
# TestInvoice -- ydim -- 11.01.2006 -- hwyss@ywesee.com
$: << File.expand_path('../lib', File.dirname(__FILE__))
-require 'test/unit'
-require 'flexmock'
+require 'minitest/autorun'
+require 'flexmock/test_unit'
require 'ydim/invoice'
module YDIM
- class TestInvoice < Test::Unit::TestCase
+ class TestInvoice < Minitest::Test
include FlexMock::TestCase
def setup
- @invoice = Invoice.new(23)
+ @invoice = Invoice.new(23)
end
def test_add_item
assert_equal([], @invoice.items)
item_id = 0
- item = FlexMock.new
- item.should_receive(:index=, 2).and_return { |idx|
- assert_equal(item_id, idx)
- item_id += 1
- }
- retval = @invoice.add_item(item)
+ item = FlexMock.new
+ item.should_receive(:index=, 2).and_return { |idx|
+ assert_equal(item_id, idx)
+ item_id += 1
+ }
+ retval = @invoice.add_item(item)
assert_equal([item], @invoice.items)
assert_equal(item, retval)
retval = @invoice.add_item(item)
assert_equal([item, item], @invoice.items)
assert_equal(item, retval)
@@ -60,22 +62,56 @@
assert_equal(today + 10, @invoice.due_date)
@invoice.payment_received = true
assert_nil(@invoice.due_date)
end
def test_pdf_invoice
- debitor = FlexMock.new
- debitor.should_receive(:add_invoice, 1).and_return { |arg|
- assert_equal(@invoice, arg)
- }
- debitor.should_receive(:address).and_return { ['address'] }
- @invoice.debitor = debitor
- @invoice.description = 'description'
- pdf = @invoice.pdf_invoice
- assert_instance_of(PdfInvoice::Invoice, pdf)
- assert_equal(['address'], pdf.debitor_address)
- assert_equal(23, pdf.invoice_number)
- assert_equal('description', pdf.description)
+ @invoice = Invoice.new(23)
+
+ debitor = FlexMock.new
+ debitor.should_receive(:add_invoice, 1).and_return { |arg|
+ assert_equal(@invoice, arg)
+ }
+ debitor.should_receive(:address).and_return { ['address'] }
+ @invoice.debitor = debitor
+ @invoice.description = 'description'
+ item = flexmock('item')
+ item_id = 0
+ item.should_receive(:index=).and_return { |idx| item_id += 1 }
+ item.should_receive(:vat_rate).and_return(7.6)
+ item.should_receive(:text).and_return('item text')
+ item.should_receive(:unit).and_return('hours')
+ item.should_receive(:quantity).and_return(3)
+ item.should_receive(:price).and_return(13)
+ item.should_receive(:vat).and_return(4)
+ @invoice.date = Date.new(2015, 1, 30)
+ item.should_receive(:time).and_return( @invoice.date.to_time)
+ @invoice.add_item(item)
+ user_pdfinvoice = File.join(Dir.home, '.pdfinvoice')
+ FileUtils.rm_rf(user_pdfinvoice)
+ FileUtils.makedirs(user_pdfinvoice)
+ FileUtils.cp(File.join(File.dirname(__FILE__), 'data', 'config.yml'), user_pdfinvoice)
+ FileUtils.cp(File.join(File.dirname(__FILE__), 'data', 'logo.png'), '/tmp/ywesee_logo.png')
+ pdf = @invoice.pdf_invoice({})
+ assert_instance_of(PdfInvoice::Invoice, pdf)
+ pdf_output = 'tst.pdf'
+ pdf_as_txt = 'tst.txt'
+ FileUtils.rm(pdf_output) if File.exist?(pdf_output)
+ FileUtils.rm(pdf_as_txt) if File.exist?(pdf_as_txt)
+ content = pdf.to_pdf
+ File.open(pdf_output, 'w+') {|f| f.write content } if $VERBOSE
+ assert_match(/Bedingungen/, content)
+ assert_match(/Rechnung 23/, content)
+ assert_match(/30.01.2015/, content)
+ assert_match(/Clearing/, content)
+ assert_match(/Beschreibung/, content)
+ assert_match(/Ohne Ihre Gegenmeldung/, content)
+ assert_match(/Mit freundlichen/, content)
+ assert_match(/MwSt/, content)
+ assert_equal(['address'], pdf.debitor_address)
+ assert_equal(23, pdf.invoice_number)
+ assert_equal('description', pdf.description)
+ assert(content.size > 10000, "PDF output must be > 10 Kb, or the Logo is missing. Is #{content.size} bytes. ")
end
def test_status
@invoice.date = Date.today
assert_equal('is_open', @invoice.status)
@invoice.date -= 2
@@ -94,11 +130,21 @@
assert_equal(true, @invoice.empty?)
item = flexmock('item')
@invoice.items.push(item)
assert_equal(false, @invoice.empty?)
end
+ def test_date_must_be_current
+ refute_nil(@invoice.date, 'A new invoice must have the current year by default')
+ assert_equal(Date.today.year, @invoice.date.year)
+ end
+ def test_date_must_be_fixed
+ @invoice.date= Date.new(-4712, 1, 1)
+ item = Item.new({:time => Time.now})
+ @invoice.add_item(Item.new({:time => Time.now}))
+ assert_equal(Date.today.year, @invoice.date.year)
+ end
end
- class TestAutoInvoice < Test::Unit::TestCase
+ class TestAutoInvoice < Minitest::Test
def setup
@invoice = AutoInvoice.new(23)
end
def test_advance
assert_equal 10, @invoice.payment_period