ydim 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,44 @@
1
+ ---
2
+ # encoding: utf-8
3
+ creditor_email: zdavatz@ywesee.com
4
+ creditor_address: |
5
+ ywesee GmbH
6
+ Winterthurerstrasse 52
7
+ CH-8006 Zürich
8
+ Schweiz
9
+ creditor_bank: |
10
+ MwSt-Nummer: CHE-112.233.959 MWST
11
+ UBS-Römerhof Zürich
12
+ Kontonummer: 830024.01Z, Clearingnummer: 251
13
+ IBAN: CH870025125183002401Z
14
+ BIC: UBSWCHZH80A
15
+ due_days: "Bedingungen: zahlbar in 10 Tagen"
16
+ logo_path: /tmp/ywesee_logo.png
17
+ formats:
18
+ currency: '%1.2f'
19
+ date: '%d.%m.%Y'
20
+ invoice_number: "<b>Rechnung %s</b>"
21
+ quantity: '%1.1f'
22
+ total: 'CHF %1.2f'
23
+ logo_link:
24
+ :type: :external
25
+ :target: http://www.ywesee.com
26
+ tax: 0.080
27
+ texts:
28
+ date: Datum
29
+ description: Beschreibung
30
+ unit: Einheit
31
+ quantity: Anzahl
32
+ price: Preis
33
+ item_total: Betrag
34
+ subtotal: Zwischensumme
35
+ tax: MwSt 8.0%
36
+ thanks: |
37
+ Ohne Ihre Gegenmeldung erfolgt der Rechnungsversand nur per Email.
38
+ Thank you for your patronage!
39
+
40
+ Mit freundlichen Grüssen
41
+ Zeno Davatz
42
+ zdavatz@ywesee.com
43
+ 043 540 05 50
44
+ total: Fälliger Betrag
Binary file
@@ -1,10 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # TestSuite -- ydim -- 27.01.2005 -- hwyss@ywesee.com
3
+ require 'simplecov'
3
4
 
4
5
  $: << File.dirname(File.expand_path(__FILE__))
5
-
6
- Dir.foreach(File.dirname(__FILE__)) { |file|
6
+ SimpleCov.start :rails do
7
+ add_filter do |src|
8
+ src.filename =~ /vendo/
9
+ end
10
+ end
11
+ Dir.foreach(File.dirname(__FILE__)) do |file|
7
12
  if /^test_.*\.rb$/o.match(file)
8
- require file
13
+ require file
9
14
  end
10
- }
15
+ end
@@ -3,13 +3,13 @@
3
3
 
4
4
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
7
- require 'flexmock'
6
+ require 'minitest/autorun'
7
+ require 'flexmock/test_unit'
8
8
  require 'ydim/autoinvoicer'
9
9
  require 'ydim/invoice'
10
10
 
11
11
  module YDIM
12
- class TestAutoInvoicer < Test::Unit::TestCase
12
+ class TestAutoInvoicer < Minitest::Test
13
13
  include FlexMock::TestCase
14
14
  def setup
15
15
  @serv = flexmock('Registry')
@@ -3,11 +3,12 @@
3
3
 
4
4
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
6
+ require 'minitest/autorun'
7
+ require 'flexmock/test_unit'
7
8
  require 'ydim/currency_converter'
8
9
 
9
10
  module YDIM
10
- class TestCurrencyConverter < Test::Unit::TestCase
11
+ class TestCurrencyConverter < Minitest::Test
11
12
  def setup
12
13
  @converter = CurrencyConverter.new
13
14
  end
@@ -4,12 +4,12 @@
4
4
 
5
5
  $: << File.expand_path('../lib', File.dirname(__FILE__))
6
6
 
7
- require 'test/unit'
7
+ require 'minitest/autorun'
8
+ require 'flexmock/test_unit'
8
9
  require 'ydim/currency_updater'
9
- require 'flexmock'
10
10
 
11
11
  module YDIM
12
- class TestCurrencyUpdater < Test::Unit::TestCase
12
+ class TestCurrencyUpdater < Minitest::Test
13
13
  include FlexMock::TestCase
14
14
  def setup
15
15
  @serv = flexmock('Config')
@@ -3,13 +3,13 @@
3
3
 
4
4
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
6
+ require 'minitest/autorun'
7
+ require 'flexmock/test_unit'
7
8
  require 'ydim/debitor'
8
- require 'flexmock'
9
9
  require 'date'
10
10
 
11
11
  module YDIM
12
- class TestDebitor < Test::Unit::TestCase
12
+ class TestDebitor < Minitest::Test
13
13
  include FlexMock::TestCase
14
14
  def setup
15
15
  @debitor = Debitor.new(1)
@@ -4,13 +4,13 @@
4
4
  $: << File.dirname(__FILE__)
5
5
  $: << File.expand_path('../lib', File.dirname(__FILE__))
6
6
 
7
- require 'test/unit'
7
+ require 'minitest/autorun'
8
+ require 'flexmock/test_unit'
8
9
  require 'stub/odba'
9
- require 'flexmock'
10
10
  require 'ydim/factory'
11
11
 
12
12
  module YDIM
13
- class TestFactory < Test::Unit::TestCase
13
+ class TestFactory < Minitest::Test
14
14
  include FlexMock::TestCase
15
15
  def setup
16
16
  @id_server = flexmock('IdServer')
@@ -39,7 +39,7 @@ module YDIM
39
39
  dinvs
40
40
  }
41
41
  invoice = nil
42
- assert_nothing_raised { invoice = @factory.create_invoice(debitor) }
42
+ invoice = @factory.create_invoice(debitor)
43
43
  assert_instance_of(Invoice, invoice)
44
44
  end
45
45
  def test_create_autoinvoice
@@ -61,8 +61,7 @@ module YDIM
61
61
  dinvs
62
62
  }
63
63
  invoice = nil
64
- assert_nothing_raised {
65
- invoice = @factory.create_autoinvoice(debitor) }
64
+ invoice = @factory.create_autoinvoice(debitor)
66
65
  assert_instance_of(AutoInvoice, invoice)
67
66
  end
68
67
  def test_generate_invoice
@@ -1,27 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
2
4
  # TestInvoice -- ydim -- 11.01.2006 -- hwyss@ywesee.com
3
5
 
4
6
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
7
 
6
- require 'test/unit'
7
- require 'flexmock'
8
+ require 'minitest/autorun'
9
+ require 'flexmock/test_unit'
8
10
  require 'ydim/invoice'
9
11
 
10
12
  module YDIM
11
- class TestInvoice < Test::Unit::TestCase
13
+ class TestInvoice < Minitest::Test
12
14
  include FlexMock::TestCase
13
15
  def setup
14
- @invoice = Invoice.new(23)
16
+ @invoice = Invoice.new(23)
15
17
  end
16
18
  def test_add_item
17
19
  assert_equal([], @invoice.items)
18
20
  item_id = 0
19
- item = FlexMock.new
20
- item.should_receive(:index=, 2).and_return { |idx|
21
- assert_equal(item_id, idx)
22
- item_id += 1
23
- }
24
- retval = @invoice.add_item(item)
21
+ item = FlexMock.new
22
+ item.should_receive(:index=, 2).and_return { |idx|
23
+ assert_equal(item_id, idx)
24
+ item_id += 1
25
+ }
26
+ retval = @invoice.add_item(item)
25
27
  assert_equal([item], @invoice.items)
26
28
  assert_equal(item, retval)
27
29
  retval = @invoice.add_item(item)
@@ -62,18 +64,52 @@ module YDIM
62
64
  assert_nil(@invoice.due_date)
63
65
  end
64
66
  def test_pdf_invoice
65
- debitor = FlexMock.new
66
- debitor.should_receive(:add_invoice, 1).and_return { |arg|
67
- assert_equal(@invoice, arg)
68
- }
69
- debitor.should_receive(:address).and_return { ['address'] }
70
- @invoice.debitor = debitor
71
- @invoice.description = 'description'
72
- pdf = @invoice.pdf_invoice
73
- assert_instance_of(PdfInvoice::Invoice, pdf)
74
- assert_equal(['address'], pdf.debitor_address)
75
- assert_equal(23, pdf.invoice_number)
76
- assert_equal('description', pdf.description)
67
+ @invoice = Invoice.new(23)
68
+
69
+ debitor = FlexMock.new
70
+ debitor.should_receive(:add_invoice, 1).and_return { |arg|
71
+ assert_equal(@invoice, arg)
72
+ }
73
+ debitor.should_receive(:address).and_return { ['address'] }
74
+ @invoice.debitor = debitor
75
+ @invoice.description = 'description'
76
+ item = flexmock('item')
77
+ item_id = 0
78
+ item.should_receive(:index=).and_return { |idx| item_id += 1 }
79
+ item.should_receive(:vat_rate).and_return(7.6)
80
+ item.should_receive(:text).and_return('item text')
81
+ item.should_receive(:unit).and_return('hours')
82
+ item.should_receive(:quantity).and_return(3)
83
+ item.should_receive(:price).and_return(13)
84
+ item.should_receive(:vat).and_return(4)
85
+ @invoice.date = Date.new(2015, 1, 30)
86
+ item.should_receive(:time).and_return( @invoice.date.to_time)
87
+ @invoice.add_item(item)
88
+ user_pdfinvoice = File.join(Dir.home, '.pdfinvoice')
89
+ FileUtils.rm_rf(user_pdfinvoice)
90
+ FileUtils.makedirs(user_pdfinvoice)
91
+ FileUtils.cp(File.join(File.dirname(__FILE__), 'data', 'config.yml'), user_pdfinvoice)
92
+ FileUtils.cp(File.join(File.dirname(__FILE__), 'data', 'logo.png'), '/tmp/ywesee_logo.png')
93
+ pdf = @invoice.pdf_invoice({})
94
+ assert_instance_of(PdfInvoice::Invoice, pdf)
95
+ pdf_output = 'tst.pdf'
96
+ pdf_as_txt = 'tst.txt'
97
+ FileUtils.rm(pdf_output) if File.exist?(pdf_output)
98
+ FileUtils.rm(pdf_as_txt) if File.exist?(pdf_as_txt)
99
+ content = pdf.to_pdf
100
+ File.open(pdf_output, 'w+') {|f| f.write content } if $VERBOSE
101
+ assert_match(/Bedingungen/, content)
102
+ assert_match(/Rechnung 23/, content)
103
+ assert_match(/30.01.2015/, content)
104
+ assert_match(/Clearing/, content)
105
+ assert_match(/Beschreibung/, content)
106
+ assert_match(/Ohne Ihre Gegenmeldung/, content)
107
+ assert_match(/Mit freundlichen/, content)
108
+ assert_match(/MwSt/, content)
109
+ assert_equal(['address'], pdf.debitor_address)
110
+ assert_equal(23, pdf.invoice_number)
111
+ assert_equal('description', pdf.description)
112
+ assert(content.size > 10000, "PDF output must be > 10 Kb, or the Logo is missing. Is #{content.size} bytes. ")
77
113
  end
78
114
  def test_status
79
115
  @invoice.date = Date.today
@@ -95,9 +131,19 @@ module YDIM
95
131
  item = flexmock('item')
96
132
  @invoice.items.push(item)
97
133
  assert_equal(false, @invoice.empty?)
134
+ end
135
+ def test_date_must_be_current
136
+ refute_nil(@invoice.date, 'A new invoice must have the current year by default')
137
+ assert_equal(Date.today.year, @invoice.date.year)
138
+ end
139
+ def test_date_must_be_fixed
140
+ @invoice.date= Date.new(-4712, 1, 1)
141
+ item = Item.new({:time => Time.now})
142
+ @invoice.add_item(Item.new({:time => Time.now}))
143
+ assert_equal(Date.today.year, @invoice.date.year)
98
144
  end
99
145
  end
100
- class TestAutoInvoice < Test::Unit::TestCase
146
+ class TestAutoInvoice < Minitest::Test
101
147
  def setup
102
148
  @invoice = AutoInvoice.new(23)
103
149
  end
@@ -1,22 +1,24 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
2
3
  # TestItem -- ydim -- 12.01.2006 -- hwyss@ywesee.com
3
4
 
4
5
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
6
 
6
- require 'test/unit'
7
+ require 'minitest/autorun'
8
+ require 'flexmock/test_unit'
7
9
  require 'ydim/item'
8
10
 
9
11
  module YDIM
10
- class TestItem < Test::Unit::TestCase
12
+ class TestItem < Minitest::Test
11
13
  def test_initialize
12
14
  time = Time.now
13
15
  data = {
14
- :quantity => 1, :unit => 'St�ck', :text => 'Item 1', :price => 10.00,
16
+ :quantity => 1, :unit => 'Stück', :text => 'Item 1', :price => 10.00,
15
17
  :vat_rate => 7.6, :data => {}, :time => time, :expiry_time => nil
16
18
  }
17
19
  item = Item.new(data)
18
20
  assert_equal(1, item.quantity)
19
- assert_equal('St�ck', item.unit)
21
+ assert_equal('Stück', item.unit)
20
22
  assert_equal('Item 1', item.text)
21
23
  assert_equal(10.0, item.price)
22
24
  assert_equal(7.6, item.vat_rate)
@@ -3,12 +3,12 @@
3
3
 
4
4
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
5
 
6
- require 'test/unit'
6
+ require 'minitest/autorun'
7
+ require 'flexmock/test_unit'
7
8
  require 'ydim/mail'
8
- require 'flexmock'
9
9
 
10
10
  module YDIM
11
- class TestMail < Test::Unit::TestCase
11
+ class TestMail < Minitest::Test
12
12
  include FlexMock::TestCase
13
13
  def setup_config
14
14
  config = flexmock('Config')
@@ -29,6 +29,11 @@ module YDIM
29
29
  }
30
30
  config.should_receive(:smtp_from).and_return('smtp@ywesee.com')
31
31
  config.should_receive(:smtp_server).and_return('localhost')
32
+ config.should_receive(:smtp_port).and_return('123')
33
+ config.should_receive(:smtp_domain).and_return('ywesee.com')
34
+ config.should_receive(:smtp_user).and_return('user')
35
+ config.should_receive(:smtp_pass).and_return('pass')
36
+ config.should_receive(:smtp_authtype).and_return('plain')
32
37
  config
33
38
  end
34
39
  def test_body
@@ -57,7 +62,7 @@ module YDIM
57
62
  invoice.should_receive(:to_pdf).times(1).and_return('pdf-document')
58
63
  smtp = flexmock('SMTP')
59
64
  flexstub(Net::SMTP).should_receive(:new).and_return(smtp)
60
- smtp.should_receive(:start).and_return { |block| block.call }
65
+ smtp.should_receive(:start)
61
66
  smtp.should_receive(:sendmail).with(String,
62
67
  'smtp@ywesee.com', 'cc@ywesee.com').and_return { assert(true) }
63
68
  smtp.should_receive(:sendmail).with(String,
@@ -81,7 +86,7 @@ module YDIM
81
86
  invoice.should_receive(:reminder_body).and_return('Reminder Body')
82
87
  smtp = flexmock('SMTP')
83
88
  flexstub(Net::SMTP).should_receive(:new).and_return(smtp)
84
- smtp.should_receive(:start).and_return { |block| block.call }
89
+ smtp.should_receive(:start)
85
90
  smtp.should_receive(:sendmail).with(String,
86
91
  'smtp@ywesee.com', 'cc@ywesee.com').and_return { assert(true) }
87
92
  smtp.should_receive(:sendmail).with(String,
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
2
3
  # TestRootSession -- ydim -- 10.01.2006 -- hwyss@ywesee.com
3
-
4
-
5
4
  $: << File.expand_path('../lib', File.dirname(__FILE__))
5
+ $: << File.dirname(__FILE__)
6
6
 
7
- require 'test/unit'
8
- require 'test/stub/odba'
7
+ require 'minitest/autorun'
8
+ require 'flexmock/test_unit'
9
+ require 'stub/odba'
9
10
  require 'ydim/root_session'
10
- require 'flexmock'
11
11
 
12
12
  module YDIM
13
- class TestRootSession < Test::Unit::TestCase
13
+ class TestRootSession < Minitest::Test
14
14
  include FlexMock::TestCase
15
15
  def setup
16
16
  @user = FlexMock.new
@@ -40,13 +40,13 @@ module YDIM
40
40
  flexstub(Invoice).should_receive(:find_by_unique_id)\
41
41
  .with('123').and_return(invoice)
42
42
  items = [
43
- { :quantity => 1, :unit => 'St�ck', :text => 'Item 1', :price => 10.00,
43
+ { :quantity => 1, :unit => 'Stück', :text => 'Item 1', :price => 10.00,
44
44
  :vat_rate => 7.6, :data => {}, :time => Time.now, :expiry_time => nil},
45
- { :quantity => 2, :unit => 'St�ck', :text => 'Item 2', :price => 20.00,
45
+ { :quantity => 2, :unit => 'Stück', :text => 'Item 2', :price => 20.00,
46
46
  :vat_rate => 7.6, :data => {}, :time => Time.now, :expiry_time => nil},
47
- { :quantity => 3, :unit => 'St�ck', :text => 'Item 3', :price => 30.00,
47
+ { :quantity => 3, :unit => 'Stück', :text => 'Item 3', :price => 30.00,
48
48
  :vat_rate => 7.6, :data => {}, :time => Time.now, :expiry_time => nil},
49
- { :quantity => 4, :unit => 'St�ck', :text => 'Item 4', :price => 40.00,
49
+ { :quantity => 4, :unit => 'Stück', :text => 'Item 4', :price => 40.00,
50
50
  :vat_rate => 7.6, :data => {}, :time => Time.now, :expiry_time => nil},
51
51
  ]
52
52
  added_items = []
@@ -134,7 +134,7 @@ module YDIM
134
134
  'invoice created by Factory'
135
135
  }
136
136
  invoice = nil
137
- assert_nothing_raised { invoice = @session.create_autoinvoice(2) }
137
+ invoice = @session.create_autoinvoice(2)
138
138
  assert_equal('invoice created by Factory', invoice)
139
139
  end
140
140
  def test_create_debitor
@@ -171,7 +171,7 @@ module YDIM
171
171
  'invoice created by Factory'
172
172
  }
173
173
  invoice = nil
174
- assert_nothing_raised { invoice = @session.create_invoice(2) }
174
+ invoice = @session.create_invoice(2)
175
175
  assert_equal('invoice created by Factory', invoice)
176
176
  end
177
177
  def test_currency_converter
@@ -259,10 +259,10 @@ module YDIM
259
259
  }
260
260
  assert_equal(inv, res)
261
261
  end
262
- def test_invoice__error
262
+ def test_invoice__error_raises
263
263
  flexstub(Invoice).should_receive(:find_by_unique_id)
264
- assert_logged(:debug, :error) {
265
264
  assert_raises(IndexError) {
265
+ assert_logged(:debug, :error) {
266
266
  @session.invoice(17)
267
267
  }
268
268
  }
@@ -312,7 +312,7 @@ module YDIM
312
312
  flexstub(Invoice).should_receive(:find_by_unique_id)\
313
313
  .with('17').and_return(inv)
314
314
  @serv.should_receive(:config).and_return('cnf')
315
- flexstub(Mail).should_receive(:send_invoice).with('cnf', inv)
315
+ flexstub(Mail).should_receive(:send_invoice).with('cnf', inv, {})
316
316
  assert_logged(:info, :debug) {
317
317
  @session.send_invoice(17)
318
318
  }