ydim_html 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. data/History.txt +6 -0
  2. data/LICENSE.txt +339 -0
  3. data/Manifest.txt +47 -0
  4. data/README.txt +21 -0
  5. data/Rakefile +28 -0
  6. data/bin/ydim-htmld +38 -0
  7. data/lib/ydim/html.rb +10 -0
  8. data/lib/ydim/html/config.rb +37 -0
  9. data/lib/ydim/html/state/ajax_values.rb +16 -0
  10. data/lib/ydim/html/state/autoinvoice.rb +93 -0
  11. data/lib/ydim/html/state/confirm.rb +15 -0
  12. data/lib/ydim/html/state/debitor.rb +81 -0
  13. data/lib/ydim/html/state/debitors.rb +23 -0
  14. data/lib/ydim/html/state/global.rb +99 -0
  15. data/lib/ydim/html/state/global_predefine.rb +13 -0
  16. data/lib/ydim/html/state/init.rb +20 -0
  17. data/lib/ydim/html/state/invoice.rb +179 -0
  18. data/lib/ydim/html/state/invoices.rb +69 -0
  19. data/lib/ydim/html/state/pdf.rb +16 -0
  20. data/lib/ydim/html/util/lookandfeel.rb +132 -0
  21. data/lib/ydim/html/util/server.rb +36 -0
  22. data/lib/ydim/html/util/session.rb +27 -0
  23. data/lib/ydim/html/util/validator.rb +62 -0
  24. data/lib/ydim/html/view/ajax_values.rb +22 -0
  25. data/lib/ydim/html/view/autoinvoice.rb +79 -0
  26. data/lib/ydim/html/view/autoinvoices.rb +41 -0
  27. data/lib/ydim/html/view/confirm.rb +27 -0
  28. data/lib/ydim/html/view/debitor.rb +111 -0
  29. data/lib/ydim/html/view/debitors.rb +44 -0
  30. data/lib/ydim/html/view/htmlgrid.rb +103 -0
  31. data/lib/ydim/html/view/init.rb +29 -0
  32. data/lib/ydim/html/view/invoice.rb +217 -0
  33. data/lib/ydim/html/view/invoices.rb +158 -0
  34. data/lib/ydim/html/view/navigation.rb +28 -0
  35. data/lib/ydim/html/view/pdf.rb +23 -0
  36. data/lib/ydim/html/view/template.rb +70 -0
  37. data/test/selenium.rb +1687 -0
  38. data/test/selenium/selenium-server.jar +0 -0
  39. data/test/selenium/test_autoinvoice.rb +318 -0
  40. data/test/selenium/test_debitor.rb +343 -0
  41. data/test/selenium/test_debitors.rb +46 -0
  42. data/test/selenium/test_init.rb +104 -0
  43. data/test/selenium/test_invoice.rb +295 -0
  44. data/test/selenium/test_invoices.rb +175 -0
  45. data/test/selenium/unit.rb +124 -0
  46. data/test/stub/http_server.rb +139 -0
  47. data/test/suite.rb +14 -0
  48. metadata +138 -0
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestDebitors -- ydim -- 14.12.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+ require 'ydim/debitor'
8
+
9
+ module YDIM
10
+ module Html
11
+ module Selenium
12
+ class TestDebitors < Test::Unit::TestCase
13
+ include Selenium::TestCase
14
+ def test_debitors
15
+ ## new: sorted by debitor-type
16
+ debitor1 = YDIM::Debitor.new(1)
17
+ debitor1.name = 'Foo'
18
+ debitor1.email = 'debitor@ywesee.com'
19
+ debitor1.phone = '0041435400549'
20
+ debitor1.debitor_type = 'dt_pharmacy'
21
+ debitor2 = YDIM::Debitor.new(2)
22
+ debitor2.name = 'Bar'
23
+ debitor2.debitor_type = 'dt_consulting'
24
+ flexstub(debitor2).should_receive(:next_invoice_date).and_return(Date.today)
25
+ session = login([debitor1, debitor2])
26
+ assert_equal "YDIM", @selenium.get_title
27
+ assert_equal "1", @selenium.get_text("//tr[2]/td[1]")
28
+ assert_equal "Foo", @selenium.get_text("//tr[2]/td[2]")
29
+ assert_equal "debitor@ywesee.com",
30
+ @selenium.get_text("//tr[2]/td[3]")
31
+ assert_equal "0041435400549",
32
+ @selenium.get_text("//tr[2]/td[4]")
33
+ assert_equal "Apotheke", @selenium.get_text("//tr[2]/td[6]")
34
+ assert_equal "2", @selenium.get_text("//tr[3]/td[1]")
35
+ assert_equal "Bar", @selenium.get_text("//tr[3]/td[2]")
36
+ assert_equal "Beratung", @selenium.get_text("//tr[3]/td[6]")
37
+
38
+ @selenium.click "link=ID"
39
+ @selenium.wait_for_page_to_load "30000"
40
+ assert_equal "1", @selenium.get_text("//tr[2]/td[1]")
41
+ assert_equal "2", @selenium.get_text("//tr[3]/td[1]")
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,104 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestInit -- ydim -- 14.12.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'selenium/unit'
7
+
8
+ module YDIM
9
+ module Html
10
+ module Selenium
11
+ class TestInit < Test::Unit::TestCase
12
+ include Selenium::TestCase
13
+ def test_init
14
+ open "/"
15
+ assert_equal "YDIM", get_title
16
+ assert is_element_present("email")
17
+ assert is_element_present("pass")
18
+ assert is_element_present("login")
19
+ assert_equal('Email', get_text("//label[@for='email']"))
20
+ assert_equal('Passwort', get_text("//label[@for='pass']"))
21
+ end
22
+ def test_login__fail__empty
23
+ open "/"
24
+ assert_equal "YDIM", get_title
25
+ #type "email", "unknown@ywesee.com"
26
+ #type "pass", "wrong"
27
+ click "login"
28
+ wait_for_page_to_load "30000"
29
+ assert_equal "YDIM", get_title
30
+ assert is_element_present("email")
31
+ assert is_element_present("pass")
32
+ assert is_element_present("login")
33
+ assert_equal('Email', get_text("//label[@for='email']"))
34
+ assert_equal('Passwort', get_text("//label[@for='pass']"))
35
+ end
36
+ def test_login__fail__both
37
+ open "/"
38
+ assert_equal "YDIM", get_title
39
+ type "email", "unknown@ywesee.com"
40
+ type "pass", "incorrect"
41
+ click "login"
42
+ wait_for_page_to_load "30000"
43
+ assert_equal "YDIM", get_title
44
+ assert is_element_present("email")
45
+ assert is_element_present("pass")
46
+ assert is_element_present("login")
47
+ assert_equal('Email', get_text("//label[@for='email']"))
48
+ assert_equal('Passwort', get_text("//label[@for='pass']"))
49
+ end
50
+ def test_login__fail__email
51
+ open "/"
52
+ assert_equal "YDIM", get_title
53
+ type "email", "unknown@ywesee.com"
54
+ type "pass", "secret"
55
+ click "login"
56
+ wait_for_page_to_load "30000"
57
+ assert_equal "YDIM", get_title
58
+ assert is_element_present("email")
59
+ assert is_element_present("pass")
60
+ assert is_element_present("login")
61
+ assert_equal('Email', get_text("//label[@for='email']"))
62
+ assert_equal('Passwort', get_text("//label[@for='pass']"))
63
+ end
64
+ def test_login__fail__pass
65
+ open "/"
66
+ assert_equal "YDIM", get_title
67
+ type "email", "test@ywesee.com"
68
+ type "pass", "incorrect"
69
+ click "login"
70
+ wait_for_page_to_load "30000"
71
+ assert_equal "YDIM", get_title
72
+ assert is_element_present("email")
73
+ assert is_element_present("pass")
74
+ assert is_element_present("login")
75
+ assert_equal('Email', get_text("//label[@for='email']"))
76
+ assert_equal('Passwort', get_text("//label[@for='pass']"))
77
+ end
78
+ def test_login__success
79
+ login
80
+ assert_equal "YDIM", get_title
81
+ assert !is_element_present("email")
82
+ assert !is_element_present("pass")
83
+ assert !is_element_present("login")
84
+ assert is_element_present("logout")
85
+ end
86
+ def test_logout
87
+ login
88
+ assert_equal "YDIM", get_title
89
+ assert !is_element_present("email")
90
+ assert !is_element_present("pass")
91
+ assert !is_element_present("login")
92
+ assert is_element_present("logout")
93
+
94
+ click "logout"
95
+ wait_for_page_to_load "30000"
96
+ assert is_element_present("email")
97
+ assert is_element_present("pass")
98
+ assert is_element_present("login")
99
+ assert !is_element_present("logout")
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,295 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::Selenium::TestInvoice -- ydim -- 15.12.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'ostruct'
7
+ require 'selenium/unit'
8
+ require 'ydim/debitor'
9
+ require 'ydim/invoice'
10
+
11
+ module YDIM
12
+ module Html
13
+ module Selenium
14
+ class TestInvoice < Test::Unit::TestCase
15
+ include Selenium::TestCase
16
+ def setup_debitor
17
+ debitor = YDIM::Debitor.new(1)
18
+ debitor.name = 'Foo'
19
+ debitor.email = 'debitor@ywesee.com'
20
+ debitor.phone = '0041435400549'
21
+ debitor.debitor_type = 'dt_pharmacy'
22
+ debitor
23
+ end
24
+ def test_create_invoice
25
+ debitor = setup_debitor
26
+ session = login([debitor])
27
+ session.should_receive(:debitor).and_return(debitor)
28
+ assert_equal "YDIM", get_title
29
+ click "link=Foo"
30
+ wait_for_page_to_load "30000"
31
+ assert_equal "YDIM", get_title
32
+
33
+ click "create_invoice"
34
+ wait_for_page_to_load "30000"
35
+ assert_equal "YDIM", get_title
36
+ assert_equal "ID", get_text("//label[@for='unique_id']")
37
+
38
+ url = "http://localhost:10080/de/debitor/unique_id/1"
39
+ assert_equal url, get_attribute("//a[@name='name']@href")
40
+ assert_equal url, get_attribute("//a[@name='email']@href")
41
+ assert_equal "Foo", get_text("//a[@name='name']")
42
+ assert_equal "debitor@ywesee.com", get_text("//a[@name='email']")
43
+
44
+ assert is_element_present("//input[@name='description']")
45
+ assert_equal "text",
46
+ get_attribute("//input[@name='description']@type")
47
+ assert_equal "Beschreibung", get_text("//label[@for='description']")
48
+
49
+ assert is_element_present("//input[@name='date']")
50
+ assert_equal "text", get_attribute("//input[@name='date']@type")
51
+ assert_equal "Rechnungsdatum", get_text("//label[@for='date']")
52
+ assert_equal Date.today.strftime('%d.%m.%Y'),
53
+ get_value("//input[@name='date']")
54
+
55
+ assert is_element_present("//select[@name='currency']")
56
+ assert_equal "Währung", get_text("//label[@for='currency']")
57
+
58
+ assert is_element_present("//input[@name='precision']")
59
+ assert_equal "text", get_attribute("//input[@name='precision']@type")
60
+ assert_equal "Kommastellen", get_text("//label[@for='precision']")
61
+ assert_equal "2", get_value("//input[@name='precision']")
62
+
63
+ assert is_element_present("update")
64
+ assert !is_element_present("create_item")
65
+ assert !is_element_present("pdf")
66
+ assert !is_element_present("send_invoice")
67
+ end
68
+ def test_create_invoice__fail
69
+ debitor = setup_debitor
70
+ session = login([debitor])
71
+ session.should_receive(:debitor).and_return(debitor)
72
+ assert_equal "YDIM", get_title
73
+ click "link=Foo"
74
+ wait_for_page_to_load "30000"
75
+ assert_equal "YDIM", get_title
76
+
77
+ click "create_invoice"
78
+ wait_for_page_to_load "30000"
79
+ assert_equal "YDIM", get_title
80
+
81
+ click "update"
82
+ wait_for_page_to_load "30000"
83
+
84
+ assert is_text_present('Bitte geben Sie das Feld "Beschreibung" an.')
85
+ assert is_element_present("update")
86
+ assert !is_element_present("create_item")
87
+ assert !is_element_present("pdf")
88
+ assert !is_element_present("send_invoice")
89
+ end
90
+ def test_create_invoice__succeed
91
+ debitor = setup_debitor
92
+ session = login([debitor])
93
+ session.should_receive(:debitor).and_return(debitor)
94
+ assert_equal "YDIM", get_title
95
+ click "link=Foo"
96
+ wait_for_page_to_load "30000"
97
+ assert_equal "YDIM", get_title
98
+
99
+ click "create_invoice"
100
+ wait_for_page_to_load "30000"
101
+ assert_equal "YDIM", get_title
102
+
103
+ type "description", "Newly created Invoice"
104
+
105
+ invoice = nil
106
+ session.should_receive(:create_invoice).and_return {
107
+ invoice = Invoice.new(10001)
108
+ invoice.debitor = debitor
109
+ flexstub(invoice).should_receive(:odba_store)
110
+ invoice
111
+ }
112
+
113
+ click "update"
114
+ wait_for_page_to_load "30000"
115
+
116
+ assert_equal("Newly created Invoice", invoice.description)
117
+ assert_equal(Date.today, invoice.date)
118
+ assert_equal("CHF", invoice.currency)
119
+ assert_equal(2, invoice.precision)
120
+
121
+ assert !is_text_present('Bitte geben Sie das Feld "Beschreibung" an.')
122
+ assert is_element_present("update")
123
+ assert is_element_present("create_item")
124
+ assert !is_element_present("pdf")
125
+ assert !is_element_present("send_invoice")
126
+
127
+ assert_equal "Newly created Invoice",
128
+ get_value("//input[@name='description']")
129
+
130
+ item = nil
131
+ session.should_receive(:add_items).and_return { |invoice_id, items, invoice_key|
132
+ assert_equal(10001, invoice_id)
133
+ assert_equal(:invoice, invoice_key)
134
+ assert_equal(1, items.size)
135
+ hash = items.first
136
+ assert_instance_of(Hash, hash)
137
+ assert_equal(1, hash.size)
138
+ assert_instance_of(Time, hash[:time])
139
+ item = YDIM::Item.new(hash)
140
+ item.index = 0
141
+ invoice.items.push(item)
142
+ item
143
+ }
144
+ click "create_item"
145
+ ## waitForElementPresent:
146
+ assert !60.times {
147
+ break if (is_element_present("text[0]") rescue false)
148
+ sleep 1
149
+ }
150
+ assert is_element_present("quantity[0]")
151
+ assert is_element_present("unit[0]")
152
+ assert is_element_present("price[0]")
153
+ assert_equal "0.00", get_text("total_netto0")
154
+
155
+ assert is_element_present("update")
156
+ assert is_element_present("create_item")
157
+ assert !is_element_present("pdf")
158
+ assert !is_element_present("send_invoice")
159
+
160
+ session.should_receive(:update_item).and_return { |invoice_id, item_index, data, invoice_key|
161
+ assert_equal(10001, invoice_id)
162
+ assert_equal(0, item_index)
163
+ assert_equal(:invoice, invoice_key)
164
+ data.each { |key, val|
165
+ item.send("#{key}=", val)
166
+ }
167
+ item
168
+ }
169
+
170
+ type "text[0]", "Item 1"
171
+ type "quantity[0]", "2"
172
+ type "unit[0]", "pieces"
173
+ type "price[0]", "3.25"
174
+ sleep 0.1
175
+ assert_equal "6.50", get_text("total_netto0")
176
+
177
+ assert is_element_present("update")
178
+ assert is_element_present("create_item")
179
+ assert !is_element_present("pdf")
180
+ assert !is_element_present("send_invoice")
181
+
182
+ click "update"
183
+ wait_for_page_to_load "30000"
184
+
185
+ assert is_text_present("Total Netto")
186
+ assert is_text_present("MwSt. (7.6%)")
187
+ assert is_text_present("Total Brutto")
188
+
189
+ assert is_element_present("update")
190
+ assert is_element_present("create_item")
191
+ assert is_element_present("pdf")
192
+ assert is_element_present("send_invoice")
193
+
194
+ click "link=debitor@ywesee.com"
195
+ wait_for_page_to_load "30000"
196
+ assert is_text_present("Newly created Invoice")
197
+ end
198
+ def test_delete_item
199
+ debitor = setup_debitor
200
+ session = login([debitor])
201
+ session.should_receive(:debitor).and_return(debitor)
202
+ invoice = YDIM::Invoice.new(10001)
203
+ invoice.debitor = debitor
204
+ item = YDIM::Item.new(:text => 'Item', :price => '100',
205
+ :quantity => 5)
206
+ invoice.add_item(item)
207
+ session.should_receive(:invoice).and_return(invoice)
208
+
209
+ assert_equal "YDIM", get_title
210
+ click "link=Foo"
211
+ wait_for_page_to_load "30000"
212
+ assert_equal "YDIM", get_title
213
+
214
+ click "link=10001"
215
+ wait_for_page_to_load "30000"
216
+ assert_equal "YDIM", get_title
217
+ assert is_element_present('text[0]')
218
+ assert_equal "Item", get_value('text[0]')
219
+
220
+ session.should_receive(:delete_item).with(10001, 0, :invoice).and_return {
221
+ invoice.items.delete(item)
222
+ }
223
+
224
+ click "link=Löschen"
225
+ wait_for_condition "!selenium.isElementPresent('text[0]')", "10000"
226
+ assert !is_element_present('text[0]')
227
+ end
228
+ def test_currency
229
+ debitor = setup_debitor
230
+ session = login([debitor])
231
+ session.should_receive(:debitor).and_return(debitor)
232
+ invoice = YDIM::Invoice.new(10001)
233
+ invoice.debitor = debitor
234
+ invoice.currency = 'CHF'
235
+ flexstub(invoice).should_receive(:odba_store)
236
+ item = YDIM::Item.new(:text => 'Item', :price => '100',
237
+ :quantity => 5)
238
+ invoice.add_item(item)
239
+ session.should_receive(:invoice).and_return(invoice)
240
+
241
+ assert_equal "YDIM", get_title
242
+ click "link=Foo"
243
+ wait_for_page_to_load "30000"
244
+ assert_equal "YDIM", get_title
245
+
246
+ click "link=10001"
247
+ wait_for_page_to_load "30000"
248
+ assert_equal "YDIM", get_title
249
+ assert is_element_present('text[0]')
250
+ assert_equal "Item", get_value('text[0]')
251
+
252
+ session.should_receive(:update_item).and_return {
253
+ item.price = 66
254
+ }
255
+
256
+ select "currency", "label=EUR"
257
+ wait_for_condition "!selenium.isTextPresent('500.00')", "10000"
258
+ assert is_text_present('330.00')
259
+ end
260
+ def test_mail
261
+ debitor = setup_debitor
262
+ session = login([debitor])
263
+ session.should_receive(:debitor).and_return(debitor)
264
+ invoice = YDIM::Invoice.new(10001)
265
+ invoice.debitor = debitor
266
+ invoice.currency = 'CHF'
267
+ flexstub(invoice).should_receive(:odba_store)
268
+ item = YDIM::Item.new(:text => 'Item', :price => '100',
269
+ :quantity => 5)
270
+ invoice.add_item(item)
271
+ session.should_receive(:invoice).and_return(invoice)
272
+
273
+ assert_equal "YDIM", get_title
274
+ click "link=Foo"
275
+ wait_for_page_to_load "30000"
276
+ assert_equal "YDIM", get_title
277
+
278
+ click "link=10001"
279
+ wait_for_page_to_load "30000"
280
+ assert_equal "YDIM", get_title
281
+ assert is_element_present('send_invoice')
282
+
283
+ session.should_receive(:update_item)
284
+ session.should_receive(:send_invoice).times(1).and_return {
285
+ ['customer@ywesee.com', 'admin@ywesee.com']
286
+ }
287
+ click "send_invoice"
288
+ wait_for_page_to_load "30000"
289
+ assert is_text_present("Die Rechnung wurde an folgende Email-Adressen verschickt: customer@ywesee.com, admin@ywesee.com")
290
+
291
+ end
292
+ end
293
+ end
294
+ end
295
+ end
@@ -0,0 +1,175 @@
1
+ #!/usr/bin/env ruby
2
+ # Html::Selenium::TestInvoices -- ydim -- 15.12.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('..', File.dirname(__FILE__))
5
+
6
+ require 'ostruct'
7
+ require 'selenium/unit'
8
+
9
+ module YDIM
10
+ module Html
11
+ module Selenium
12
+ class TestInvoices < Test::Unit::TestCase
13
+ include Selenium::TestCase
14
+ def setup_info(id, payment, status, deleted)
15
+ info = OpenStruct.new
16
+ info.unique_id = id
17
+ info.debitor_name = 'Customer, longer than 30 Characters'
18
+ info.debitor_email = 'test@ywesee.com'
19
+ info.description = "Invoice #{id}, #{status}"
20
+ info.date = Date.today
21
+ info.payment_received = payment
22
+ info.total_netto = 100
23
+ info.total_brutto = 107.6
24
+ info.currency = 'CHF'
25
+ info.status = status
26
+ info.deleted = deleted
27
+ info.odba_store = true
28
+ info
29
+ end
30
+ def test_invoices
31
+ session = login([])
32
+ info1 = setup_info(1, false, 'is_open', false)
33
+ info2 = setup_info(2, false, 'is_due', false)
34
+ info3 = setup_info(3, true, 'is_paid', false)
35
+ info4 = setup_info(4, false, 'is_trash', true)
36
+ infos = [info1, info2, info3, info4]
37
+ session.should_receive(:invoice_infos).and_return { |status|
38
+ infos.select { |info| info.status == status }
39
+ }
40
+ assert_equal "YDIM", get_title
41
+ click "link=Rechnungen"
42
+ wait_for_page_to_load "30000"
43
+ assert_equal "YDIM", get_title
44
+ assert_equal "is_open", get_attribute("//tr[2]@class")
45
+ assert is_text_present("Invoice 1, is_open")
46
+ assert is_text_present('Customer, longer than 30 Ch...')
47
+ assert is_text_present("Invoice 2, is_due")
48
+ assert !is_text_present("Invoice 3, is_paid")
49
+ assert !is_text_present("Invoice 4, is_trash")
50
+
51
+ click "link=Fällige Rechnungen"
52
+ wait_for_condition "selenium.isTextPresent('Invoice 2')", "10000"
53
+ assert_equal "is_due", get_attribute("//tr[2]@class")
54
+ assert !is_text_present("Invoice 1, is_open")
55
+ assert is_text_present("Invoice 2, is_due")
56
+ assert !is_text_present("Invoice 3, is_paid")
57
+ assert !is_text_present("Invoice 4, is_trash")
58
+
59
+ click "link=Bezahlte Rechnungen"
60
+ wait_for_condition "selenium.isTextPresent('Invoice 3')", "10000"
61
+ assert_equal "is_paid", get_attribute("//tr[2]@class")
62
+ assert !is_text_present("Invoice 1, is_open")
63
+ assert !is_text_present("Invoice 2, is_due")
64
+ assert is_text_present("Invoice 3, is_paid")
65
+ assert !is_text_present("Invoice 4, is_trash")
66
+
67
+ click "link=Papierkorb"
68
+ wait_for_condition "selenium.isTextPresent('Invoice 4')", "10000"
69
+ assert_equal "is_trash", get_attribute("//tr[2]@class")
70
+ assert !is_text_present("Invoice 1, is_open")
71
+ assert !is_text_present("Invoice 2, is_due")
72
+ assert !is_text_present("Invoice 3, is_paid")
73
+ assert is_text_present("Invoice 4, is_trash")
74
+
75
+ click "link=Offene Rechnungen"
76
+ wait_for_condition "selenium.isTextPresent('Invoice 1')", "10000"
77
+ assert is_text_present("Invoice 1, is_open")
78
+ end
79
+ def test_invoices__paid
80
+ session = login([])
81
+ info1 = setup_info(1, false, 'is_open', false)
82
+ session.should_receive(:invoice_infos).and_return { |status|
83
+ [info1]
84
+ }
85
+ assert_equal "YDIM", get_title
86
+ click "link=Rechnungen"
87
+ wait_for_page_to_load "30000"
88
+ assert_equal "YDIM", get_title
89
+ assert is_text_present("Invoice 1, is_open")
90
+
91
+ session.should_receive(:invoice).and_return {
92
+ info1.status = 'is_paid'
93
+ info1
94
+ }
95
+ click "link=offen"
96
+ wait_for_condition "!selenium.isTextPresent('Invoice 1')", "10000"
97
+ assert !is_text_present("Invoice 1, is_open")
98
+ click "link=Bezahlte Rechnungen"
99
+ wait_for_condition "selenium.isTextPresent('Invoice 1')", "10000"
100
+ assert is_text_present("Invoice 1, is_open")
101
+ end
102
+ def test_invoices__deleted
103
+ session = login([])
104
+ info1 = setup_info(1, false, 'is_open', false)
105
+ session.should_receive(:invoice_infos).and_return { |status|
106
+ [info1]
107
+ }
108
+ assert_equal "YDIM", get_title
109
+ click "link=Rechnungen"
110
+ wait_for_page_to_load "30000"
111
+ assert_equal "YDIM", get_title
112
+ assert is_text_present("Invoice 1, is_open")
113
+
114
+ session.should_receive(:invoice).and_return {
115
+ info1.status = 'is_trash'
116
+ info1
117
+ }
118
+ click "link=löschen"
119
+ wait_for_condition "!selenium.isTextPresent('Invoice 1')", "10000"
120
+ assert !is_text_present("Invoice 1, is_open")
121
+ click "link=Papierkorb"
122
+ wait_for_condition "selenium.isTextPresent('Invoice 1')", "10000"
123
+ assert is_text_present("Invoice 1, is_open")
124
+ end
125
+ def test_invoices__collect_garbage
126
+ session = login([])
127
+ info1 = setup_info(1, false, 'is_trash', true)
128
+ session.should_receive(:invoice_infos).and_return { |status|
129
+ status == 'is_trash' ? [info1] : []
130
+ }
131
+ assert_equal "YDIM", get_title
132
+ click "link=Rechnungen"
133
+ wait_for_page_to_load "30000"
134
+ assert_equal "YDIM", get_title
135
+ assert !is_text_present("Invoice 1, is_trash")
136
+
137
+ click "link=Papierkorb"
138
+ wait_for_condition "selenium.isTextPresent('Invoice 1')", "10000"
139
+ assert is_text_present("Invoice 1, is_trash")
140
+ assert is_element_present("collect_garbage")
141
+
142
+ session.should_receive(:collect_garbage).times(1)
143
+ click "collect_garbage"
144
+ wait_for_condition "!selenium.isTextPresent('Invoice 1')", "10000"
145
+ assert !is_text_present("Invoice 1, is_trash")
146
+ assert !is_element_present("collect_garbage")
147
+ end
148
+ def test_invoices__mail
149
+ session = login([])
150
+ info1 = setup_info(1, false, 'is_due', false)
151
+ session.should_receive(:invoice_infos).and_return { |status|
152
+ status == 'is_due' ? [info1] : []
153
+ }
154
+ assert_equal "YDIM", get_title
155
+ click "link=Rechnungen"
156
+ wait_for_page_to_load "30000"
157
+ assert_equal "YDIM", get_title
158
+ assert is_text_present("Invoice 1, is_due")
159
+
160
+ click "link=Fällige Rechnungen"
161
+ wait_for_condition "selenium.isTextPresent('Invoice 1')", "10000"
162
+ assert is_text_present("Invoice 1, is_due")
163
+ assert is_element_present("send_invoice")
164
+
165
+ session.should_receive(:send_invoice).times(1).and_return {
166
+ ['customer@ywesee.com', 'admin@ywesee.com']
167
+ }
168
+ click "link=Email Senden"
169
+ wait_for_page_to_load "30000"
170
+ assert is_text_present("Die Rechnung wurde an folgende Email-Adressen verschickt: customer@ywesee.com, admin@ywesee.com")
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end