ydim-html 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +5 -0
- data/.travis.yml +29 -0
- data/Gemfile +12 -0
- data/History.txt +11 -0
- data/LICENSE.txt +339 -0
- data/Manifest.txt +47 -0
- data/Rakefile +21 -0
- data/bin/ydim-htmld +38 -0
- data/doc/favicon.ico +0 -0
- data/doc/index.rbx +16 -0
- data/doc/resources/javascript/dojo.js +5940 -0
- data/doc/resources/javascript/iframe_history.html +53 -0
- data/doc/resources/javascript/ydim.js +67 -0
- data/doc/resources/ydim/ydim.css +113 -0
- data/lib/ydim/html.rb +10 -0
- data/lib/ydim/html/config.rb +37 -0
- data/lib/ydim/html/state/ajax_values.rb +17 -0
- data/lib/ydim/html/state/autoinvoice.rb +94 -0
- data/lib/ydim/html/state/confirm.rb +16 -0
- data/lib/ydim/html/state/debitor.rb +82 -0
- data/lib/ydim/html/state/debitors.rb +24 -0
- data/lib/ydim/html/state/global.rb +100 -0
- data/lib/ydim/html/state/global_predefine.rb +14 -0
- data/lib/ydim/html/state/init.rb +21 -0
- data/lib/ydim/html/state/invoice.rb +180 -0
- data/lib/ydim/html/state/invoices.rb +70 -0
- data/lib/ydim/html/state/pdf.rb +17 -0
- data/lib/ydim/html/util/lookandfeel.rb +133 -0
- data/lib/ydim/html/util/server.rb +37 -0
- data/lib/ydim/html/util/session.rb +29 -0
- data/lib/ydim/html/util/validator.rb +63 -0
- data/lib/ydim/html/version.rb +7 -0
- data/lib/ydim/html/view/ajax_values.rb +27 -0
- data/lib/ydim/html/view/autoinvoice.rb +80 -0
- data/lib/ydim/html/view/autoinvoices.rb +42 -0
- data/lib/ydim/html/view/confirm.rb +28 -0
- data/lib/ydim/html/view/debitor.rb +118 -0
- data/lib/ydim/html/view/debitors.rb +45 -0
- data/lib/ydim/html/view/htmlgrid.rb +104 -0
- data/lib/ydim/html/view/init.rb +30 -0
- data/lib/ydim/html/view/invoice.rb +218 -0
- data/lib/ydim/html/view/invoices.rb +159 -0
- data/lib/ydim/html/view/navigation.rb +29 -0
- data/lib/ydim/html/view/pdf.rb +24 -0
- data/lib/ydim/html/view/template.rb +71 -0
- data/readme.md +28 -0
- data/spec/smoketest_spec.rb +234 -0
- data/spec/spec_helper.rb +117 -0
- data/spec/stub/http_server.rb +157 -0
- data/test/selenium.rb +1690 -0
- data/test/selenium/selenium-server.jar +0 -0
- data/test/selenium/test_autoinvoice.rb +319 -0
- data/test/selenium/test_debitor.rb +344 -0
- data/test/selenium/test_debitors.rb +47 -0
- data/test/selenium/test_init.rb +105 -0
- data/test/selenium/test_invoice.rb +296 -0
- data/test/selenium/test_invoices.rb +176 -0
- data/test/selenium/unit.rb +125 -0
- data/test/stub/http_server.rb +141 -0
- data/test/suite.rb +15 -0
- data/ydim-html.gemspec +36 -0
- metadata +302 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# Html::View::Navigation -- ydim -- 13.01.2006 -- hwyss@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/divcomposite'
|
6
|
+
require 'htmlgrid/link'
|
7
|
+
|
8
|
+
module YDIM
|
9
|
+
module Html
|
10
|
+
module View
|
11
|
+
class NavigationLink < HtmlGrid::Link
|
12
|
+
def init
|
13
|
+
super
|
14
|
+
self.value = @lookandfeel.lookup(@name)
|
15
|
+
self.href = @lookandfeel._event_url(@name)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
class Navigation < HtmlGrid::DivComposite
|
19
|
+
COMPONENTS = {
|
20
|
+
[0,0] => :debitors,
|
21
|
+
[1,0] => :invoices,
|
22
|
+
[2,0] => :logout,
|
23
|
+
}
|
24
|
+
CSS_ID_MAP = ['navigation']
|
25
|
+
DEFAULT_CLASS = NavigationLink
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# Html::View::Pdf -- ydim -- 17.01.2006 -- hwyss@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/component'
|
6
|
+
|
7
|
+
module YDIM
|
8
|
+
module Html
|
9
|
+
module View
|
10
|
+
class Pdf < HtmlGrid::Component
|
11
|
+
def to_html(context)
|
12
|
+
@model.to_pdf :sortby => (@session.state.sortby || []).first,
|
13
|
+
:sort_reverse => @session.state.sort_reverse
|
14
|
+
end
|
15
|
+
def http_headers(*args)
|
16
|
+
super.update(
|
17
|
+
'Content-Type' => 'application/pdf',
|
18
|
+
'Content-Disposition' => "attachment; filename=#{@model.unique_id}.pdf"
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# Html::View::Template -- ydim -- 12.01.2006 -- hwyss@ywesee.com
|
4
|
+
|
5
|
+
require 'htmlgrid/divtemplate'
|
6
|
+
require 'htmlgrid/span'
|
7
|
+
require 'ydim/html/view/htmlgrid'
|
8
|
+
require 'ydim/html/view/navigation'
|
9
|
+
|
10
|
+
module YDIM
|
11
|
+
module Html
|
12
|
+
module View
|
13
|
+
class Template < HtmlGrid::DivTemplate
|
14
|
+
COMPONENTS = {
|
15
|
+
[0,0] => :subnavigation,
|
16
|
+
[1,0] => :foot,
|
17
|
+
[0,1] => :content,
|
18
|
+
[0,2] => :version,
|
19
|
+
[1,2] => 'ydim',
|
20
|
+
}
|
21
|
+
CSS_MAP = ['head', 'content', 'foot',]
|
22
|
+
DIV_CLASS = 'template'
|
23
|
+
FOOT = Navigation
|
24
|
+
LEGACY_INTERFACE = false
|
25
|
+
def content(model)
|
26
|
+
@content ||= super
|
27
|
+
end
|
28
|
+
def cpr_link(model)
|
29
|
+
link = standard_link(:cpr_link, model)
|
30
|
+
link.href = 'http://www.ywesee.com'
|
31
|
+
link
|
32
|
+
end
|
33
|
+
def lgpl_license(model)
|
34
|
+
link = standard_link(:lgpl_license, model)
|
35
|
+
link.href = 'http://www.gnu.org/copyleft/lesser.html'
|
36
|
+
link
|
37
|
+
end
|
38
|
+
def other_html_headers(context)
|
39
|
+
res = super
|
40
|
+
['dojo', 'ydim'].each { |name|
|
41
|
+
properties = {
|
42
|
+
"language" => "JavaScript",
|
43
|
+
"type" => "text/javascript",
|
44
|
+
"src" => @lookandfeel.resource_global(:javascript, "#{name}.js"),
|
45
|
+
}
|
46
|
+
res << context.script(properties)
|
47
|
+
}
|
48
|
+
res
|
49
|
+
end
|
50
|
+
def standard_link(key, model)
|
51
|
+
HtmlGrid::Link.new(key, model, @session, self)
|
52
|
+
end
|
53
|
+
def version(model)
|
54
|
+
span = HtmlGrid::Span.new(model, @session, self)
|
55
|
+
span.css_id = 'version'
|
56
|
+
span.value = [
|
57
|
+
lgpl_license(model), @lookandfeel.lookup('comma'), Time.now.year.to_s,
|
58
|
+
cpr_link(model), @lookandfeel.lookup('comma'), ydim_version(model),
|
59
|
+
]
|
60
|
+
span
|
61
|
+
end
|
62
|
+
def ydim_version(model)
|
63
|
+
link = standard_link(:ydim_version, model)
|
64
|
+
link.href = 'https://github.com/zdavatz/ydim-html'
|
65
|
+
link.set_attribute('title', YDIM_VERSION)
|
66
|
+
link
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# ydim_html
|
2
|
+
|
3
|
+
* https://github.com/zdavatz/ydim-html.git
|
4
|
+
|
5
|
+
## DESCRIPTION:
|
6
|
+
|
7
|
+
ywesee Distributed Invoice Manager HTML Interface, Ruby
|
8
|
+
|
9
|
+
This is an application. Therefore it is not distributed as a gem, instead it has Gemfile which specifies all dependencies.
|
10
|
+
|
11
|
+
## INSTALL:
|
12
|
+
|
13
|
+
* bundle install
|
14
|
+
|
15
|
+
## TEST:
|
16
|
+
|
17
|
+
Currently we have neither working unit tnor spec tests.
|
18
|
+
|
19
|
+
## DEVELOPERS:
|
20
|
+
|
21
|
+
* Masaomi Hatakeyama
|
22
|
+
* Zeno R.R. Davatz
|
23
|
+
* Hannes Wyss (up to Version 1.0)
|
24
|
+
* Niklaus Giger (ported to Ruby 2.3.0)
|
25
|
+
|
26
|
+
## LICENSE:
|
27
|
+
|
28
|
+
* GPLv2
|
@@ -0,0 +1,234 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'ydim/invoice'
|
5
|
+
|
6
|
+
describe "ydim-html" do
|
7
|
+
include FlexMock::TestCase
|
8
|
+
|
9
|
+
before :all do
|
10
|
+
@idx ||= 0
|
11
|
+
puts "setup_ydim_test before all @browser is #{@browser} @idx #{@idx}"
|
12
|
+
end
|
13
|
+
|
14
|
+
before :each do
|
15
|
+
@idx += 1
|
16
|
+
puts "before each @idx: #{@idx}"
|
17
|
+
setup_ydim_test
|
18
|
+
# waitForYdimToBeReady(@browser)
|
19
|
+
end
|
20
|
+
|
21
|
+
after :each do
|
22
|
+
@idx += 10
|
23
|
+
puts "after each @idx: #{@idx}"
|
24
|
+
teardown_ydim_test
|
25
|
+
# createScreenshot(@browser, '_'+@idx.to_s)
|
26
|
+
end
|
27
|
+
after :all do
|
28
|
+
puts "after :all @browser #{@browser.class} $browser #{$browser.class}"
|
29
|
+
$browser.close if $browser
|
30
|
+
end
|
31
|
+
|
32
|
+
# next test work, if only one test is invoked, else we get nil error
|
33
|
+
it "should be possible to use login from spec_helper" do
|
34
|
+
@session = login
|
35
|
+
debitor = OpenStruct.new
|
36
|
+
debitor.unique_id = 1
|
37
|
+
@session.should_ignore_missing
|
38
|
+
@session.should_receive(:create_debitor).and_return(debitor)
|
39
|
+
@browser.button(:name => 'create_debitor').click
|
40
|
+
expect(@browser.url).to match /debitor/
|
41
|
+
end if false
|
42
|
+
it "should allow to log in" do
|
43
|
+
@browser.goto "#{YDIM::Html.config.http_server}:10080/de/"
|
44
|
+
windowSize = @browser.windows.size
|
45
|
+
expect(@browser.url).to match YDIM::Html.config.http_server
|
46
|
+
text = @browser.text.clone
|
47
|
+
# binding.pry unless /Email/.match text
|
48
|
+
expect(text).to match /Email\nPasswort\n/
|
49
|
+
expect(@browser.title).to eql 'YDIM'
|
50
|
+
@browser.element(:name => 'email').wait_until_present
|
51
|
+
@browser.text_field(:name => 'email').set 'test@ywesee.com'
|
52
|
+
@browser.element(:name => 'pass').wait_until_present
|
53
|
+
@browser.text_field(:name => 'pass').set 'secret'
|
54
|
+
@browser.element(:name => 'login').wait_until_present
|
55
|
+
expect(@browser.forms.size).to eql 1
|
56
|
+
@browser.forms.first.submit
|
57
|
+
# @browser.button(:name => 'login').click
|
58
|
+
text = @browser.text.clone
|
59
|
+
expect(text).to match /Nächste Rechnung/ # UTF-8 Problem
|
60
|
+
expect(text).to match /Rechnungen/
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should succedd creating an invoice" do
|
64
|
+
@session = login()
|
65
|
+
expect(@browser.title).to eql 'YDIM'
|
66
|
+
@debitor_values = {
|
67
|
+
"contact" => "Contact",
|
68
|
+
"contact_firstname" => "Firstname",
|
69
|
+
"contact_title" => "Dr.",
|
70
|
+
"address_lines" => "Street 45",
|
71
|
+
"location" => "8006 Zuerich",
|
72
|
+
"emails" => "testywesee.com",
|
73
|
+
"phone" => "043 540 0549",
|
74
|
+
}
|
75
|
+
create_debitor(@debitor_values)
|
76
|
+
check_debitor(@debitor_values)
|
77
|
+
end if false
|
78
|
+
|
79
|
+
def create_debitor(values= Hash.new)
|
80
|
+
@session = login()
|
81
|
+
# click "update"
|
82
|
+
|
83
|
+
expect(@browser.title).to eql 'YDIM'
|
84
|
+
@invoice = YDIM::AutoInvoice.new(10001)
|
85
|
+
@invoice.debitor = setup_debitor
|
86
|
+
@invoice.description = 'AutoInvoice'
|
87
|
+
flexstub(@invoice).should_receive(:odba_store)
|
88
|
+
item = YDIM::Item.new(:text => 'Item', :price => '100',
|
89
|
+
:quantity => 5)
|
90
|
+
@invoice.add_item(item)
|
91
|
+
expect(@browser.title).to eql 'YDIM'
|
92
|
+
@session.should_receive(:debitor).and_return(@debitor)
|
93
|
+
@session.should_receive(:autoinvoice).and_return(@invoice)
|
94
|
+
@session.should_receive(:generate_invoice).and_return(@invoice)
|
95
|
+
@session.should_ignore_missing
|
96
|
+
binding.pry
|
97
|
+
values.each do |key, value|
|
98
|
+
@browser.text_field(:name => 'key').set value
|
99
|
+
end
|
100
|
+
end if false
|
101
|
+
def check_debitor(values = Hash.new)
|
102
|
+
# click "update"
|
103
|
+
|
104
|
+
binding.pry
|
105
|
+
expect(@browser.title).to eql 'YDIM'
|
106
|
+
values.each do |key, value|
|
107
|
+
expect(@browser.text_field(:name => 'key').value).to eq value
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def setup_debitor
|
112
|
+
@debitor = YDIM::Debitor.new(1)
|
113
|
+
@debitor.name = 'Foo'
|
114
|
+
@debitor.email = 'debitor@ywesee.com'
|
115
|
+
@debitor.phone = '0041435400549'
|
116
|
+
@debitor.debitor_type = 'dt_pharmacy'
|
117
|
+
@debitor
|
118
|
+
end
|
119
|
+
|
120
|
+
if false
|
121
|
+
# next test work, if only one test is invoked, else we get nil error
|
122
|
+
it "should be possible to use login from spec_helper" do
|
123
|
+
login
|
124
|
+
end
|
125
|
+
it "should succedd creating an invoice" do
|
126
|
+
# binding.pry
|
127
|
+
TODO = %(
|
128
|
+
click "link=Foo"
|
129
|
+
wait_for_page_to_load "30000"
|
130
|
+
assert_equal "YDIM", get_title
|
131
|
+
|
132
|
+
click "create_invoice"
|
133
|
+
wait_for_page_to_load "30000"
|
134
|
+
assert_equal "YDIM", get_title
|
135
|
+
|
136
|
+
type "description", "Newly created Invoice"
|
137
|
+
|
138
|
+
@invoice = nil
|
139
|
+
@session.should_receive(:create_invoice).and_return {
|
140
|
+
@invoice = Invoice.new(10001)
|
141
|
+
@invoice.debitor = debitor
|
142
|
+
flexstub(invoice).should_receive(:odba_store)
|
143
|
+
@invoice
|
144
|
+
}
|
145
|
+
|
146
|
+
click "update"
|
147
|
+
wait_for_page_to_load "30000"
|
148
|
+
|
149
|
+
assert_equal("Newly created Invoice", invoice.description)
|
150
|
+
assert_equal(Date.today, invoice.date)
|
151
|
+
assert_equal("CHF", invoice.currency)
|
152
|
+
assert_equal(2, invoice.precision)
|
153
|
+
|
154
|
+
assert !is_text_present('Bitte geben Sie das Feld "Beschreibung" an.')
|
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
|
+
assert_equal "Newly created Invoice",
|
161
|
+
get_value("//input[@name='description']")
|
162
|
+
|
163
|
+
item = nil
|
164
|
+
@session.should_receive(:add_items).and_return { |invoice_id, items, invoice_key|
|
165
|
+
assert_equal(10001, invoice_id)
|
166
|
+
assert_equal(:invoice, invoice_key)
|
167
|
+
assert_equal(1, items.size)
|
168
|
+
hash = items.first
|
169
|
+
assert_instance_of(Hash, hash)
|
170
|
+
assert_equal(1, hash.size)
|
171
|
+
assert_instance_of(Time, hash[:time])
|
172
|
+
item = YDIM::Item.new(hash)
|
173
|
+
item.index = 0
|
174
|
+
@invoice.items.push(item)
|
175
|
+
item
|
176
|
+
}
|
177
|
+
click "create_item"
|
178
|
+
## waitForElementPresent:
|
179
|
+
assert !60.times {
|
180
|
+
break if (is_element_present("text[0]") rescue false)
|
181
|
+
sleep 1
|
182
|
+
}
|
183
|
+
assert is_element_present("quantity[0]")
|
184
|
+
assert is_element_present("unit[0]")
|
185
|
+
assert is_element_present("price[0]")
|
186
|
+
assert_equal "0.00", get_text("total_netto0")
|
187
|
+
|
188
|
+
assert is_element_present("update")
|
189
|
+
assert is_element_present("create_item")
|
190
|
+
assert !is_element_present("pdf")
|
191
|
+
assert !is_element_present("send_invoice")
|
192
|
+
|
193
|
+
@session.should_receive(:update_item).and_return { |invoice_id, item_index, data, invoice_key|
|
194
|
+
assert_equal(10001, invoice_id)
|
195
|
+
assert_equal(0, item_index)
|
196
|
+
assert_equal(:invoice, invoice_key)
|
197
|
+
data.each { |key, val|
|
198
|
+
item.send("\#{key}=", val)
|
199
|
+
}
|
200
|
+
item
|
201
|
+
}
|
202
|
+
|
203
|
+
type "text[0]", "Item 1"
|
204
|
+
type "quantity[0]", "2"
|
205
|
+
type "unit[0]", "pieces"
|
206
|
+
type "price[0]", "3.25"
|
207
|
+
sleep 0.1
|
208
|
+
assert_equal "6.50", get_text("total_netto0")
|
209
|
+
|
210
|
+
assert is_element_present("update")
|
211
|
+
assert is_element_present("create_item")
|
212
|
+
assert !is_element_present("pdf")
|
213
|
+
assert !is_element_present("send_invoice")
|
214
|
+
|
215
|
+
click "update"
|
216
|
+
wait_for_page_to_load "30000"
|
217
|
+
|
218
|
+
assert is_text_present("Total Netto")
|
219
|
+
assert is_text_present("MwSt. (7.6%)")
|
220
|
+
assert is_text_present("Total Brutto")
|
221
|
+
|
222
|
+
assert is_element_present("update")
|
223
|
+
assert is_element_present("create_item")
|
224
|
+
assert is_element_present("pdf")
|
225
|
+
assert is_element_present("send_invoice")
|
226
|
+
|
227
|
+
click "link=debitor@ywesee.com"
|
228
|
+
wait_for_page_to_load "30000"
|
229
|
+
assert is_text_present("Newly created Invoice")
|
230
|
+
)
|
231
|
+
end if false
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
# require 'simplecov'
|
4
|
+
# SimpleCov.start
|
5
|
+
$: << File.expand_path('../../lib', File.dirname(__FILE__))
|
6
|
+
require 'ydim/html/config'
|
7
|
+
require 'digest'
|
8
|
+
require 'minitest/autorun'
|
9
|
+
require 'flexmock/test_unit'
|
10
|
+
require_relative 'stub/http_server'
|
11
|
+
require 'ydim/html/util/server'
|
12
|
+
require 'watir'
|
13
|
+
require "watir-webdriver/wait"
|
14
|
+
begin
|
15
|
+
require 'pry'
|
16
|
+
rescue LoadError
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.mock_with :flexmock
|
21
|
+
config.expect_with :rspec do |c|
|
22
|
+
c.syntax = [:expect]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
BreakIntoPry = false
|
27
|
+
begin
|
28
|
+
require 'pry'
|
29
|
+
rescue LoadError
|
30
|
+
# ignore error for Travis-CI
|
31
|
+
end
|
32
|
+
|
33
|
+
@homeUrl ||= "http://localhost:8752"
|
34
|
+
YdimUrl = @homeUrl
|
35
|
+
ImageDest = File.join(Dir.pwd, 'images')
|
36
|
+
FileUtils.makedirs(ImageDest, :verbose => true) unless File.exists?(ImageDest)
|
37
|
+
$browser ||= Watir::Browser.new :firefox
|
38
|
+
WEBrick::BasicLog.new(nil, WEBrick::BasicLog::DEBUG)
|
39
|
+
|
40
|
+
def setup_ydim_test
|
41
|
+
@browser = $browser
|
42
|
+
include FlexMock::TestCase
|
43
|
+
YDIM::Html.config.email = 'test@ywesee.com'
|
44
|
+
YDIM::Html.config.md5_pass = Digest::MD5.hexdigest('secret')
|
45
|
+
YDIM::Html.config.config=['/tmp/ignore_if_not_exists']
|
46
|
+
|
47
|
+
debitors=[]
|
48
|
+
session = flexmock('session')
|
49
|
+
@ydim_server = flexmock('ydim_server')
|
50
|
+
@ydim_server.should_receive(:login).and_return(session).by_default
|
51
|
+
@ydim_server.should_receive(:logout)
|
52
|
+
session.should_receive(:debitors).and_return(debitors)
|
53
|
+
# created ssh-keygen -f id_dsa -t dsa (with empty-passphrase
|
54
|
+
@server = YDIM::Html::Util::Server.new(@ydim_server)
|
55
|
+
@server.extend(DRbUndumped)
|
56
|
+
drb_url = "druby://localhost:10081"
|
57
|
+
@drb = Thread.new {
|
58
|
+
@drb_server = DRb.start_service(drb_url, @server)
|
59
|
+
}
|
60
|
+
@drb.abort_on_exception = true
|
61
|
+
@http_server = YDIM::Html::Stub.http_server(drb_url)
|
62
|
+
@http_server.logger.level = WEBrick::BasicLog::DEBUG
|
63
|
+
@webrick = Thread.new { @http_server.start }
|
64
|
+
puts "setup_ydim_test #{@http_server.class} #{@drb_server.class}"
|
65
|
+
end
|
66
|
+
|
67
|
+
def teardown_ydim_test
|
68
|
+
@http_server ||= false
|
69
|
+
@drb_server ||= false
|
70
|
+
puts "teardown_ydim_test #{@http_server.class} #{@drb_server.class} @browser #{@browser.class}"
|
71
|
+
@drb_server.stop_service if @drb_server
|
72
|
+
@http_server.shutdown if @http_server
|
73
|
+
@ydim_server = nil
|
74
|
+
end
|
75
|
+
|
76
|
+
def small_delay
|
77
|
+
sleep(0.1)
|
78
|
+
end
|
79
|
+
|
80
|
+
def createScreenshot(browser=@browser, added=nil)
|
81
|
+
small_delay
|
82
|
+
if browser.url.index('?')
|
83
|
+
name = File.join(ImageDest, File.basename(browser.url.split('?')[0]).gsub(/\W/, '_'))
|
84
|
+
else
|
85
|
+
name = File.join(ImageDest, browser.url.split('/')[-1].gsub(/\W/, '_'))
|
86
|
+
end
|
87
|
+
name = "#{name}#{added}.png"
|
88
|
+
browser.screenshot.save (name)
|
89
|
+
puts "createScreenshot: #{name} done" if $VERBOSE
|
90
|
+
end
|
91
|
+
|
92
|
+
def login(debitors=[])
|
93
|
+
session = flexmock('session')
|
94
|
+
@ydim_server.should_receive(:login).and_return(session).by_default
|
95
|
+
session.should_receive(:debitors).and_return(debitors)
|
96
|
+
@ydim_server.should_receive(:logout)
|
97
|
+
# @browser.link(:name => 'logout').click if @browser.link(:name => 'logout').present?
|
98
|
+
@browser.goto "#{YDIM::Html.config.http_server}:10080/"
|
99
|
+
sleep 0.5
|
100
|
+
puts @browser.text
|
101
|
+
@browser.element(:name => 'email').wait_until_present(3) # wait at most 3 seconds
|
102
|
+
expect(@browser.title).to eql 'YDIM'
|
103
|
+
expect(@browser.text).to match /Email\nPasswort\n/
|
104
|
+
@browser.text_field(:name => 'email').set 'test@ywesee.com'
|
105
|
+
@browser.element(:name => 'pass').wait_until_present
|
106
|
+
@browser.text_field(:name => 'pass').set 'secret'
|
107
|
+
@browser.element(:name => 'login').wait_until_present
|
108
|
+
@browser.forms.first.submit
|
109
|
+
|
110
|
+
converter = flexmock('session')
|
111
|
+
converter.should_receive(:convert).and_return { |amount, from, to|
|
112
|
+
amount
|
113
|
+
}
|
114
|
+
session.should_receive(:currency_converter).and_return(converter)
|
115
|
+
session
|
116
|
+
end
|
117
|
+
|