ydim 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/LICENSE.txt +339 -0
- data/Manifest.txt +43 -0
- data/README.txt +21 -0
- data/Rakefile +28 -0
- data/bin/ydim-edit +55 -0
- data/bin/ydim-inject +33 -0
- data/bin/ydimd +55 -0
- data/install.rb +1098 -0
- data/lib/ydim/autoinvoicer.rb +41 -0
- data/lib/ydim/client.rb +29 -0
- data/lib/ydim/config.rb +32 -0
- data/lib/ydim/currency_converter.rb +28 -0
- data/lib/ydim/currency_updater.rb +39 -0
- data/lib/ydim/debitor.rb +86 -0
- data/lib/ydim/factory.rb +58 -0
- data/lib/ydim/invoice.rb +146 -0
- data/lib/ydim/item.rb +36 -0
- data/lib/ydim/mail.rb +95 -0
- data/lib/ydim/odba.rb +39 -0
- data/lib/ydim/root_session.rb +143 -0
- data/lib/ydim/root_user.rb +14 -0
- data/lib/ydim/server.rb +165 -0
- data/lib/ydim/smtp_tls.rb +58 -0
- data/lib/ydim/util.rb +16 -0
- data/test/data/search.html +58 -0
- data/test/stub/odba.rb +21 -0
- data/test/suite.rb +10 -0
- data/test/test_autoinvoicer.rb +51 -0
- data/test/test_currency_converter.rb +37 -0
- data/test/test_currency_updater.rb +45 -0
- data/test/test_debitor.rb +96 -0
- data/test/test_factory.rb +99 -0
- data/test/test_invoice.rb +131 -0
- data/test/test_item.rb +41 -0
- data/test/test_mail.rb +94 -0
- data/test/test_root_session.rb +347 -0
- data/test/test_root_user.rb +20 -0
- data/test/test_server.rb +142 -0
- metadata +137 -0
@@ -0,0 +1,96 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestDebitor -- ydim -- 10.01.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'ydim/debitor'
|
8
|
+
require 'flexmock'
|
9
|
+
require 'date'
|
10
|
+
|
11
|
+
module YDIM
|
12
|
+
class TestDebitor < Test::Unit::TestCase
|
13
|
+
include FlexMock::TestCase
|
14
|
+
def setup
|
15
|
+
@debitor = Debitor.new(1)
|
16
|
+
end
|
17
|
+
def test_address
|
18
|
+
@debitor.name = 'Name'
|
19
|
+
@debitor.contact = 'Contact'
|
20
|
+
@debitor.contact_firstname = 'Firstname'
|
21
|
+
@debitor.contact_title = 'Title'
|
22
|
+
@debitor.address_lines = %w{Line1 Line2}
|
23
|
+
@debitor.emails = ['Email', 'OtherEmail']
|
24
|
+
expected = [
|
25
|
+
'Name',
|
26
|
+
'z.H. Firstname Contact',
|
27
|
+
'Title',
|
28
|
+
'Line1',
|
29
|
+
'Line2',
|
30
|
+
'To: Email',
|
31
|
+
'Cc: OtherEmail',
|
32
|
+
]
|
33
|
+
assert_equal(expected, @debitor.address)
|
34
|
+
end
|
35
|
+
def test_add_invoice
|
36
|
+
invoice = FlexMock.new()
|
37
|
+
invoice.should_receive(:unique_id).and_return { 17 }
|
38
|
+
retval = @debitor.add_invoice(invoice)
|
39
|
+
assert_equal(invoice, retval)
|
40
|
+
assert_equal([invoice], @debitor.invoices)
|
41
|
+
assert_equal(invoice, @debitor.invoice(17))
|
42
|
+
end
|
43
|
+
def test_delete_invoice
|
44
|
+
invoice = FlexMock.new()
|
45
|
+
invoice.should_receive(:unique_id).and_return { 17 }
|
46
|
+
@debitor.invoices.push(invoice)
|
47
|
+
retval = @debitor.delete_invoice(invoice)
|
48
|
+
assert_equal(invoice, retval)
|
49
|
+
assert_equal([], @debitor.invoices)
|
50
|
+
assert_nil(@debitor.delete_invoice(invoice))
|
51
|
+
end
|
52
|
+
def test_add_autoinvoice
|
53
|
+
invoice = flexmock('autoinvoice')
|
54
|
+
invoice.should_receive(:unique_id).and_return(17)
|
55
|
+
retval = @debitor.add_autoinvoice(invoice)
|
56
|
+
assert_equal(invoice, retval)
|
57
|
+
assert_equal([invoice], @debitor.autoinvoices)
|
58
|
+
assert_equal(invoice, @debitor.autoinvoice(17))
|
59
|
+
end
|
60
|
+
def test_delete_autoinvoice
|
61
|
+
invoice = flexmock('autoinvoice')
|
62
|
+
invoice.should_receive(:unique_id).and_return(17)
|
63
|
+
@debitor.autoinvoices.push(invoice)
|
64
|
+
retval = @debitor.delete_autoinvoice(invoice)
|
65
|
+
assert_equal(invoice, retval)
|
66
|
+
assert_equal([], @debitor.autoinvoices)
|
67
|
+
assert_nil(@debitor.delete_autoinvoice(invoice))
|
68
|
+
end
|
69
|
+
def test_autoinvoice_infos
|
70
|
+
invoice = flexmock('autoinvoice')
|
71
|
+
invoice.should_receive(:info).and_return('info')
|
72
|
+
@debitor.autoinvoices.push(invoice)
|
73
|
+
assert_equal(['info'], @debitor.autoinvoice_infos)
|
74
|
+
end
|
75
|
+
def test_invoice_infos
|
76
|
+
inv1 = flexmock('invoice')
|
77
|
+
inv1.should_receive(:info).and_return('info1')
|
78
|
+
inv1.should_receive(:status).and_return('selectable')
|
79
|
+
inv2 = flexmock('invoice')
|
80
|
+
inv2.should_receive(:info).and_return('info2')
|
81
|
+
inv2.should_receive(:status).and_return('not selectable')
|
82
|
+
@debitor.invoices.push(inv1, inv2)
|
83
|
+
assert_equal(['info1'], @debitor.invoice_infos('selectable'))
|
84
|
+
end
|
85
|
+
def test_next_autoinvoice_date
|
86
|
+
inv1 = flexmock('autoinvoice')
|
87
|
+
inv1.should_receive(:date).and_return(Date.today >> 1)
|
88
|
+
inv2 = flexmock('autoinvoice')
|
89
|
+
inv2.should_receive(:date).and_return(Date.today >> 2)
|
90
|
+
inv3 = flexmock('autoinvoice')
|
91
|
+
inv3.should_receive(:date)
|
92
|
+
@debitor.autoinvoices.push(inv1, inv2, inv3)
|
93
|
+
assert_equal(Date.today >> 1, @debitor.next_invoice_date)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestFactory -- ydim -- 16.01.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.dirname(__FILE__)
|
5
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
6
|
+
|
7
|
+
require 'test/unit'
|
8
|
+
require 'stub/odba'
|
9
|
+
require 'flexmock'
|
10
|
+
require 'ydim/factory'
|
11
|
+
|
12
|
+
module YDIM
|
13
|
+
class TestFactory < Test::Unit::TestCase
|
14
|
+
include FlexMock::TestCase
|
15
|
+
def setup
|
16
|
+
@id_server = flexmock('IdServer')
|
17
|
+
@config = flexmock('Config')
|
18
|
+
@serv = flexmock('Registry')
|
19
|
+
@serv.should_receive(:id_server).and_return(@id_server)
|
20
|
+
@serv.should_receive(:config).and_return(@config)
|
21
|
+
@factory = Factory.new(@serv)
|
22
|
+
end
|
23
|
+
def test_create_invoice
|
24
|
+
@config.should_receive(:invoice_number_start).and_return(13)
|
25
|
+
@id_server.should_receive(:next_id).and_return { |key, start|
|
26
|
+
assert_equal(13, start)
|
27
|
+
assert_equal(:invoice, key)
|
28
|
+
24
|
29
|
+
}
|
30
|
+
debitor = FlexMock.new
|
31
|
+
debitor.should_receive(:foreign?).and_return(false)
|
32
|
+
debitor.should_receive(:add_invoice).and_return { |inv|
|
33
|
+
assert_instance_of(Invoice, inv)
|
34
|
+
}
|
35
|
+
dinvs = nil
|
36
|
+
debitor.should_receive(:invoices).and_return {
|
37
|
+
dinvs = FlexMock.new
|
38
|
+
dinvs.should_receive(:odba_store, 1).and_return
|
39
|
+
dinvs
|
40
|
+
}
|
41
|
+
invoice = nil
|
42
|
+
assert_nothing_raised { invoice = @factory.create_invoice(debitor) }
|
43
|
+
assert_instance_of(Invoice, invoice)
|
44
|
+
end
|
45
|
+
def test_create_autoinvoice
|
46
|
+
@config.should_receive(:invoice_number_start).and_return(13)
|
47
|
+
@id_server.should_receive(:next_id).and_return { |key, start|
|
48
|
+
assert_equal(13, start)
|
49
|
+
assert_equal(:autoinvoice, key)
|
50
|
+
24
|
51
|
+
}
|
52
|
+
debitor = FlexMock.new
|
53
|
+
debitor.should_receive(:foreign?).and_return(false)
|
54
|
+
debitor.should_receive(:add_autoinvoice).and_return { |inv|
|
55
|
+
assert_instance_of(AutoInvoice, inv)
|
56
|
+
}
|
57
|
+
dinvs = nil
|
58
|
+
debitor.should_receive(:autoinvoices).and_return {
|
59
|
+
dinvs = FlexMock.new
|
60
|
+
dinvs.should_receive(:odba_store, 1).and_return
|
61
|
+
dinvs
|
62
|
+
}
|
63
|
+
invoice = nil
|
64
|
+
assert_nothing_raised {
|
65
|
+
invoice = @factory.create_autoinvoice(debitor) }
|
66
|
+
assert_instance_of(AutoInvoice, invoice)
|
67
|
+
end
|
68
|
+
def test_generate_invoice
|
69
|
+
@config.should_receive(:vat_rate).and_return('current_vat_rate')
|
70
|
+
invs = flexmock('Invoices')
|
71
|
+
invs.should_receive(:odba_store).times(1)
|
72
|
+
debitor = flexmock('Debitor')
|
73
|
+
debitor.should_receive(:foreign?).and_return(false)
|
74
|
+
debitor.should_receive(:invoices).and_return(invs)
|
75
|
+
debitor.should_receive(:add_invoice).and_return { |invoice|
|
76
|
+
assert_equal(24, invoice.unique_id)
|
77
|
+
assert_equal(1, invoice.items.size)
|
78
|
+
item = invoice.items.first
|
79
|
+
assert_equal('current_vat_rate', item.vat_rate)
|
80
|
+
}
|
81
|
+
auto = AutoInvoice.new(1)
|
82
|
+
auto.invoice_interval = 3
|
83
|
+
item = Item.new
|
84
|
+
auto.add_item(item)
|
85
|
+
|
86
|
+
auto.instance_variable_set('@debitor', debitor)
|
87
|
+
flexstub(auto).should_receive(:odba_store).and_return {
|
88
|
+
assert_equal(Date.today >> 3, auto.date)
|
89
|
+
}
|
90
|
+
@config.should_receive(:invoice_number_start).and_return(13)
|
91
|
+
@id_server.should_receive(:next_id).and_return { |key, start|
|
92
|
+
assert_equal(13, start)
|
93
|
+
assert_equal(:invoice, key)
|
94
|
+
24
|
95
|
+
}
|
96
|
+
@factory.generate_invoice(auto)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,131 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestInvoice -- ydim -- 11.01.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'flexmock'
|
8
|
+
require 'ydim/invoice'
|
9
|
+
|
10
|
+
module YDIM
|
11
|
+
class TestInvoice < Test::Unit::TestCase
|
12
|
+
include FlexMock::TestCase
|
13
|
+
def setup
|
14
|
+
@invoice = Invoice.new(23)
|
15
|
+
end
|
16
|
+
def test_add_item
|
17
|
+
assert_equal([], @invoice.items)
|
18
|
+
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)
|
25
|
+
assert_equal([item], @invoice.items)
|
26
|
+
assert_equal(item, retval)
|
27
|
+
retval = @invoice.add_item(item)
|
28
|
+
assert_equal([item, item], @invoice.items)
|
29
|
+
assert_equal(item, retval)
|
30
|
+
end
|
31
|
+
def test_item
|
32
|
+
item = flexmock('item')
|
33
|
+
item.should_receive(:index).and_return(4)
|
34
|
+
@invoice.items.push(item)
|
35
|
+
assert_nil(@invoice.item(0))
|
36
|
+
assert_equal(item, @invoice.item(4))
|
37
|
+
end
|
38
|
+
def test_debitor_writer
|
39
|
+
debitor = FlexMock.new
|
40
|
+
debitor.should_receive(:add_invoice, 1).and_return { |arg|
|
41
|
+
assert_equal(@invoice, arg)
|
42
|
+
}
|
43
|
+
@invoice.debitor = debitor
|
44
|
+
debitor2 = FlexMock.new
|
45
|
+
debitor.should_receive(:delete_invoice, 1).and_return { |arg|
|
46
|
+
assert_equal(@invoice, arg)
|
47
|
+
}
|
48
|
+
debitor2.should_receive(:add_invoice, 1).and_return { |arg|
|
49
|
+
assert_equal(@invoice, arg)
|
50
|
+
}
|
51
|
+
@invoice.debitor = debitor2
|
52
|
+
end
|
53
|
+
def test_due_date
|
54
|
+
@invoice.payment_period = nil
|
55
|
+
assert_nil(@invoice.due_date)
|
56
|
+
today = Date.today
|
57
|
+
@invoice.date = today
|
58
|
+
assert_equal(today, @invoice.due_date)
|
59
|
+
@invoice.payment_period = 10
|
60
|
+
assert_equal(today + 10, @invoice.due_date)
|
61
|
+
@invoice.payment_received = true
|
62
|
+
assert_nil(@invoice.due_date)
|
63
|
+
end
|
64
|
+
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)
|
77
|
+
end
|
78
|
+
def test_status
|
79
|
+
@invoice.date = Date.today
|
80
|
+
assert_equal('is_open', @invoice.status)
|
81
|
+
@invoice.date -= 2
|
82
|
+
@invoice.payment_period = 1
|
83
|
+
assert_equal('is_due', @invoice.status)
|
84
|
+
@invoice.payment_received = true
|
85
|
+
assert_equal('is_paid', @invoice.status)
|
86
|
+
@invoice.deleted = true
|
87
|
+
assert_equal('is_trash', @invoice.status)
|
88
|
+
end
|
89
|
+
def test_info
|
90
|
+
info = @invoice.info
|
91
|
+
assert_instance_of(Invoice::Info, info)
|
92
|
+
end
|
93
|
+
def test_empty
|
94
|
+
assert_equal(true, @invoice.empty?)
|
95
|
+
item = flexmock('item')
|
96
|
+
@invoice.items.push(item)
|
97
|
+
assert_equal(false, @invoice.empty?)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
class TestAutoInvoice < Test::Unit::TestCase
|
101
|
+
def setup
|
102
|
+
@invoice = AutoInvoice.new(23)
|
103
|
+
end
|
104
|
+
def test_advance
|
105
|
+
assert_equal 10, @invoice.payment_period
|
106
|
+
today = Date.today
|
107
|
+
subj = 'Reminder for <year>2008, 2009</year> and <year>2010</year>'
|
108
|
+
@invoice.reminder_subject = subj
|
109
|
+
retval = @invoice.advance(today)
|
110
|
+
assert_equal(today, @invoice.date)
|
111
|
+
assert_equal(@invoice.date, retval)
|
112
|
+
assert_equal subj, @invoice.reminder_subject
|
113
|
+
@invoice.invoice_interval = "inv_3"
|
114
|
+
retval = @invoice.advance(today)
|
115
|
+
assert_equal(today >> 3, @invoice.date)
|
116
|
+
assert_equal(@invoice.date, retval)
|
117
|
+
assert_equal subj, @invoice.reminder_subject
|
118
|
+
@invoice.invoice_interval = "inv_12"
|
119
|
+
retval = @invoice.advance(today - 2)
|
120
|
+
assert_equal((today - 2) >> 12, @invoice.date)
|
121
|
+
assert_equal(@invoice.date, retval)
|
122
|
+
subj = 'Reminder for <year>2009, 2010</year> and <year>2011</year>'
|
123
|
+
assert_equal subj, @invoice.reminder_subject
|
124
|
+
assert_equal 10, @invoice.payment_period
|
125
|
+
@invoice.invoice_interval = "inv_24"
|
126
|
+
subj = 'Reminder for <year>2011, 2012</year> and <year>2013</year>'
|
127
|
+
retval = @invoice.advance(today - 2)
|
128
|
+
assert_equal subj, @invoice.reminder_subject
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
data/test/test_item.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestItem -- ydim -- 12.01.2006 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'ydim/item'
|
8
|
+
|
9
|
+
module YDIM
|
10
|
+
class TestItem < Test::Unit::TestCase
|
11
|
+
def test_initialize
|
12
|
+
time = Time.now
|
13
|
+
data = {
|
14
|
+
:quantity => 1, :unit => 'St�ck', :text => 'Item 1', :price => 10.00,
|
15
|
+
:vat_rate => 7.6, :data => {}, :time => time, :expiry_time => nil
|
16
|
+
}
|
17
|
+
item = Item.new(data)
|
18
|
+
assert_equal(1, item.quantity)
|
19
|
+
assert_equal('St�ck', item.unit)
|
20
|
+
assert_equal('Item 1', item.text)
|
21
|
+
assert_equal(10.0, item.price)
|
22
|
+
assert_equal(7.6, item.vat_rate)
|
23
|
+
assert_equal({}, item.data)
|
24
|
+
assert_equal(time, item.time)
|
25
|
+
assert_equal(nil, item.expiry_time)
|
26
|
+
end
|
27
|
+
def test_total_netto
|
28
|
+
item = Item.new
|
29
|
+
item.quantity = 3.5
|
30
|
+
item.price = 2.0
|
31
|
+
assert_equal(7.0, item.total_netto)
|
32
|
+
end
|
33
|
+
def test_total_brutto
|
34
|
+
item = Item.new
|
35
|
+
item.quantity = 3.5
|
36
|
+
item.price = 2.0
|
37
|
+
item.vat_rate = 10
|
38
|
+
assert_equal(7.7, item.total_brutto)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/test/test_mail.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# TestMail -- ydim -- 01.02.2007 -- hwyss@ywesee.com
|
3
|
+
|
4
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
5
|
+
|
6
|
+
require 'test/unit'
|
7
|
+
require 'ydim/mail'
|
8
|
+
require 'flexmock'
|
9
|
+
|
10
|
+
module YDIM
|
11
|
+
class TestMail < Test::Unit::TestCase
|
12
|
+
include FlexMock::TestCase
|
13
|
+
def setup_config
|
14
|
+
config = flexmock('Config')
|
15
|
+
config.should_receive(:mail_body).and_return <<-MAIL
|
16
|
+
%s %s
|
17
|
+
%s
|
18
|
+
MAIL
|
19
|
+
config.should_receive(:mail_charset).and_return('utf-8')
|
20
|
+
config.should_receive(:mail_from).and_return('from@ywesee.com')
|
21
|
+
config.should_receive(:mail_recipients)\
|
22
|
+
.and_return(['cc@ywesee.com'])
|
23
|
+
config.should_receive(:salutation).and_return {
|
24
|
+
{
|
25
|
+
'' => 'Sehr geehrter Herr',
|
26
|
+
'Herr' => 'Sehr geehrter Herr',
|
27
|
+
'Frau' => 'Sehr geehrte Frau',
|
28
|
+
}
|
29
|
+
}
|
30
|
+
config.should_receive(:smtp_from).and_return('smtp@ywesee.com')
|
31
|
+
config.should_receive(:smtp_server).and_return('localhost')
|
32
|
+
config
|
33
|
+
end
|
34
|
+
def test_body
|
35
|
+
debitor = flexmock('Debitor')
|
36
|
+
debitor.should_receive(:salutation).and_return('Frau')
|
37
|
+
debitor.should_receive(:contact).and_return('Melanie Esterhazy')
|
38
|
+
invoice = flexmock('Invoice')
|
39
|
+
invoice.should_receive(:description).and_return('Description')
|
40
|
+
body = Mail.body(setup_config, debitor, invoice)
|
41
|
+
assert_equal <<-EXPECTED, body
|
42
|
+
Sehr geehrte Frau Melanie Esterhazy
|
43
|
+
Description
|
44
|
+
EXPECTED
|
45
|
+
end
|
46
|
+
def test_send_invoice
|
47
|
+
debitor = flexmock('Debitor')
|
48
|
+
debitor.should_receive(:email).and_return('test@ywesee.com')
|
49
|
+
debitor.should_receive(:emails_cc).and_return(['test.cc@ywesee.com'])
|
50
|
+
debitor.should_receive(:salutation).and_return('Herr')
|
51
|
+
debitor.should_receive(:name).and_return('Company-Name')
|
52
|
+
debitor.should_receive(:contact).and_return('Contact-Name')
|
53
|
+
invoice = flexmock('Invoice')
|
54
|
+
invoice.should_receive(:debitor).and_return(debitor)
|
55
|
+
invoice.should_receive(:unique_id).and_return(12345)
|
56
|
+
invoice.should_receive(:description).and_return('Description')
|
57
|
+
invoice.should_receive(:to_pdf).times(1).and_return('pdf-document')
|
58
|
+
smtp = flexmock('SMTP')
|
59
|
+
flexstub(Net::SMTP).should_receive(:new).and_return(smtp)
|
60
|
+
smtp.should_receive(:start).and_return { |block| block.call }
|
61
|
+
smtp.should_receive(:sendmail).with(String,
|
62
|
+
'smtp@ywesee.com', 'cc@ywesee.com').and_return { assert(true) }
|
63
|
+
smtp.should_receive(:sendmail).with(String,
|
64
|
+
'smtp@ywesee.com', 'test@ywesee.com').and_return { assert(true) }
|
65
|
+
smtp.should_receive(:sendmail).with(String,
|
66
|
+
'smtp@ywesee.com', 'test.cc@ywesee.com').and_return { assert(true) }
|
67
|
+
Mail.send_invoice(setup_config, invoice)
|
68
|
+
end
|
69
|
+
def test_send_reminder
|
70
|
+
debitor = flexmock('Debitor')
|
71
|
+
debitor.should_receive(:email).and_return('test@ywesee.com')
|
72
|
+
debitor.should_receive(:emails_cc).and_return(['test.cc@ywesee.com'])
|
73
|
+
debitor.should_receive(:salutation).and_return('Herr')
|
74
|
+
debitor.should_receive(:name).and_return('Company-Name')
|
75
|
+
debitor.should_receive(:contact).and_return('Contact-Name')
|
76
|
+
invoice = flexmock('Invoice')
|
77
|
+
invoice.should_receive(:debitor).and_return(debitor)
|
78
|
+
invoice.should_receive(:unique_id).and_return(12345)
|
79
|
+
invoice.should_receive(:description).and_return('Description')
|
80
|
+
invoice.should_receive(:reminder_subject).and_return('Reminder')
|
81
|
+
invoice.should_receive(:reminder_body).and_return('Reminder Body')
|
82
|
+
smtp = flexmock('SMTP')
|
83
|
+
flexstub(Net::SMTP).should_receive(:new).and_return(smtp)
|
84
|
+
smtp.should_receive(:start).and_return { |block| block.call }
|
85
|
+
smtp.should_receive(:sendmail).with(String,
|
86
|
+
'smtp@ywesee.com', 'cc@ywesee.com').and_return { assert(true) }
|
87
|
+
smtp.should_receive(:sendmail).with(String,
|
88
|
+
'smtp@ywesee.com', 'test@ywesee.com').and_return { assert(true) }
|
89
|
+
smtp.should_receive(:sendmail).with(String,
|
90
|
+
'smtp@ywesee.com', 'test.cc@ywesee.com').and_return { assert(true) }
|
91
|
+
Mail.send_reminder(setup_config, invoice)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|