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,124 @@
1
+ #!/usr/bin/env ruby
2
+ # Selenium::TestCase -- ydim -- 14.12.2006 -- hwyss@ywesee.com
3
+
4
+ $: << File.expand_path('../../lib', File.dirname(__FILE__))
5
+
6
+ if(pid = Kernel.fork)
7
+ at_exit {
8
+ Process.kill('HUP', pid)
9
+ $selenium.stop if($selenium.respond_to?(:stop))
10
+ }
11
+ else
12
+ path = File.expand_path('selenium-server.jar', File.dirname(__FILE__))
13
+ command = "java -jar #{path} &> /dev/null"
14
+ exec(command)
15
+ end
16
+
17
+ require 'delegate'
18
+ require 'selenium'
19
+ require 'ydim/html/config'
20
+
21
+ module YDIM
22
+ module Html
23
+ module Selenium
24
+ class SeleniumWrapper < SimpleDelegator
25
+ def initialize(host, port, browser, server, port2)
26
+ @server = server
27
+ @selenium = ::Selenium::SeleneseInterpreter.new(host, port, browser,
28
+ server, port2)
29
+ super @selenium
30
+ end
31
+ def open(path)
32
+ @selenium.open(@server + path)
33
+ end
34
+ def type(*args)
35
+ @selenium.type(*args)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ $selenium = YDIM::Html::Selenium::SeleniumWrapper.new("localhost",
43
+ 4444, "*chrome",
44
+ YDIM::Html.config.http_server + ":10080", 10000)
45
+
46
+ start = Time.now
47
+ begin
48
+ $selenium.start
49
+ rescue Errno::ECONNREFUSED
50
+ print "."
51
+ sleep 1
52
+ if((Time.now - start) > 15)
53
+ raise
54
+ else
55
+ retry
56
+ end
57
+ end
58
+
59
+ require "ydim/html/util/server"
60
+ require 'flexmock'
61
+ require 'logger'
62
+ require 'stub/http_server'
63
+ require "test/unit"
64
+
65
+ module YDIM
66
+ module Html
67
+ module Selenium
68
+ module TestCase
69
+ include FlexMock::TestCase
70
+ include SeleniumHelper
71
+ def setup
72
+ Html.config.email = 'test@ywesee.com'
73
+ Html.config.md5_pass = Digest::MD5.hexdigest('secret')
74
+ Html.logger = Logger.new($stdout)
75
+ Html.logger.level = Logger::DEBUG
76
+ @ydim_server = flexmock("ydim_server")
77
+ @server = Html::Util::Server.new(@ydim_server)
78
+ @server.extend(DRbUndumped)
79
+ drb_url = "druby://localhost:10081"
80
+ @drb = Thread.new {
81
+ @drb_server = DRb.start_service(drb_url, @server)
82
+ }
83
+ @drb.abort_on_exception = true
84
+ @http_server = Stub.http_server(drb_url)
85
+ @webrick = Thread.new { @http_server.start }
86
+ @verification_errors = []
87
+ if $selenium
88
+ @selenium = $selenium
89
+ else
90
+ @selenium = SeleniumWrapper.new("localhost", 4444, "*chrome",
91
+ Html.config.http_server + ":10080", 10000)
92
+ @selenium.start
93
+ end
94
+ @selenium.set_context("TestOddb")
95
+ end
96
+ def teardown
97
+ @selenium.stop unless $selenium
98
+ @http_server.shutdown
99
+ @drb_server.stop_service
100
+ assert_equal [], @verification_errors
101
+ super
102
+ end
103
+ def login(debitors=[])
104
+ session = flexmock('session')
105
+ @ydim_server.should_receive(:login).and_return(session)
106
+ session.should_receive(:debitors).and_return(debitors)
107
+ @ydim_server.should_receive(:logout)
108
+ @selenium.open "/"
109
+ assert_equal "YDIM", @selenium.get_title
110
+ @selenium.type "email", "test@ywesee.com"
111
+ @selenium.type "pass", "secret"
112
+ @selenium.click "login"
113
+ @selenium.wait_for_page_to_load "30000"
114
+ converter = flexmock('session')
115
+ converter.should_receive(:convert).and_return { |amount, from, to|
116
+ amount
117
+ }
118
+ session.should_receive(:currency_converter).and_return(converter)
119
+ session
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env ruby
2
+ # Stub.http_server -- de.oddb.org -- 21.11.2006 -- hwyss@ywesee.com
3
+
4
+ require 'sbsm/request'
5
+ require 'sbsm/trans_handler'
6
+ require 'webrick'
7
+
8
+ class Object
9
+ def meta_class; class << self; self; end; end
10
+ def meta_eval &blk; meta_class.instance_eval &blk; end
11
+ end
12
+
13
+ ## compatibility-brainfuck for integrating Apache-SBSM-Requests with WEBrick
14
+ module YDIM
15
+ module Html
16
+ YDIM_VERSION = "test-version"
17
+ module Stub
18
+ class Notes < Hash
19
+ alias :add :store
20
+ end
21
+ class Output < String
22
+ alias :write :<<
23
+ alias :print :<<
24
+ end
25
+ class HTTPServer < WEBrick::HTTPServer
26
+ attr_accessor :document_root
27
+ def method_missing(method, *args, &block)
28
+ @logger.warn "ignoring method: #{method}"
29
+ end
30
+ end
31
+ def Stub.http_server(drburi, log_level=0)
32
+ doc = File.expand_path('../../doc', File.dirname(__FILE__))
33
+ logger = WEBrick::Log.new
34
+ logger.level = log_level
35
+ config = { :Host => 'localhost', :Port => 10080,
36
+ :DocumentRoot => doc, :Logger => logger }
37
+ if(log_level == 0)
38
+ config.store(:AccessLog, [])
39
+ end
40
+ server = HTTPServer.new(config)
41
+ server.document_root = doc
42
+ application = Proc.new { |req, resp|
43
+ if(req.uri == '/favicon.ico')
44
+ resp.body = File.open(File.join(doc, req.uri))
45
+ else
46
+ ARGV.push('')
47
+ req.server = server
48
+ # ignore selenium/dojo-added GET-Parameters
49
+ req.uri = CGI.unescape(req.uri[/^[^?]*/])
50
+ SBSM::TransHandler.instance.translate_uri(req)
51
+ ## not Threadsafe!
52
+ SBSM::Apache.request = req
53
+ output = Output.new
54
+ sbsm = SBSM::Request.new(drburi)
55
+ sbsm.meta_eval { define_method(:handle_exception) { |e| raise e } }
56
+ sbsm.cgi.params.update(req.query)
57
+ sbsm.cgi.env_table['SERVER_NAME'] =
58
+ YDIM::Html.config.http_server.gsub('http://', '') + ':10080'
59
+ sbsm.cgi.env_table['REQUEST_METHOD'] = req.request_method
60
+ sbsm.cgi.cookies['_session_id'] = 'test:preset-session-id'
61
+ sbsm.cgi.output = output
62
+ sbsm.process
63
+ if(/^location:/i.match(output))
64
+ resp.status = 303
65
+ end
66
+ resp.rawdata = true
67
+ resp.body = output
68
+ end
69
+ }
70
+ server.mount_proc('/', &application)
71
+ server.mount_proc('/de', &application)
72
+ server.mount_proc('/de/.*', &application)
73
+ res = File.join(doc, 'resources')
74
+ server.mount('/resources', WEBrick::HTTPServlet::FileHandler, res, {})
75
+ server
76
+ end
77
+ end
78
+ end
79
+ end
80
+ module WEBrick
81
+ class HTTPRequest
82
+ attr_accessor :server, :uri, :notes
83
+ alias :__old_initialize__ :initialize
84
+ def initialize(*args)
85
+ __old_initialize__(*args)
86
+ @notes = YDIM::Html::Stub::Notes.new
87
+ end
88
+ def headers_in
89
+ headers = {}
90
+ if(@header)
91
+ @header.each { |key, vals| headers.store(key, vals.join(';')) }
92
+ end
93
+ headers
94
+ end
95
+ def uri
96
+ @uri || unparsed_uri
97
+ end
98
+ end
99
+ class HTTPResponse
100
+ attr_accessor :rawdata
101
+ alias :__old_send_header__ :send_header
102
+ def send_header(socket)
103
+ if(@rawdata)
104
+ _write_data(socket, status_line)
105
+ else
106
+ __old_send_header__(socket)
107
+ end
108
+ end
109
+ alias :__old_setup_header__ :setup_header
110
+ def setup_header()
111
+ unless(@rawdata)
112
+ __old_setup_header__
113
+ end
114
+ end
115
+ end
116
+ end
117
+ module SBSM
118
+ class Request
119
+ def handle_exception(e)
120
+ raise e
121
+ end
122
+ end
123
+ module Apache
124
+ DECLINED = nil
125
+ def Apache.request=(request)
126
+ @request = request
127
+ end
128
+ def Apache.request
129
+ @request
130
+ end
131
+ end
132
+ end
133
+ class CGI
134
+ attr_accessor :output
135
+ def stdoutput
136
+ output
137
+ end
138
+ public :env_table
139
+ end
data/test/suite.rb ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # suite.rb -- oddb -- 08.09.2006 -- hwyss@ywesee.com
3
+
4
+ require 'find'
5
+
6
+ here = File.dirname(__FILE__)
7
+
8
+ $: << here
9
+
10
+ Find.find(here) { |file|
11
+ if /test_.*\.rb$/o.match(file)
12
+ require file
13
+ end
14
+ }
metadata ADDED
@@ -0,0 +1,138 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ydim_html
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Masaomi Hatakeyama, Zeno R.R. Davatz
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-12-20 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: hoe
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 47
30
+ segments:
31
+ - 2
32
+ - 8
33
+ - 0
34
+ version: 2.8.0
35
+ type: :development
36
+ version_requirements: *id001
37
+ description: ywesee Distributed Invoice Manager HTML Interface, Ruby
38
+ email:
39
+ - mhatakeyama@ywesee.com, zdavatz@ywesee.com
40
+ executables:
41
+ - ydim-htmld
42
+ extensions: []
43
+
44
+ extra_rdoc_files:
45
+ - History.txt
46
+ - LICENSE.txt
47
+ - Manifest.txt
48
+ - README.txt
49
+ files:
50
+ - History.txt
51
+ - LICENSE.txt
52
+ - Manifest.txt
53
+ - README.txt
54
+ - Rakefile
55
+ - bin/ydim-htmld
56
+ - lib/ydim/html.rb
57
+ - lib/ydim/html/config.rb
58
+ - lib/ydim/html/state/ajax_values.rb
59
+ - lib/ydim/html/state/autoinvoice.rb
60
+ - lib/ydim/html/state/confirm.rb
61
+ - lib/ydim/html/state/debitor.rb
62
+ - lib/ydim/html/state/debitors.rb
63
+ - lib/ydim/html/state/global.rb
64
+ - lib/ydim/html/state/global_predefine.rb
65
+ - lib/ydim/html/state/init.rb
66
+ - lib/ydim/html/state/invoice.rb
67
+ - lib/ydim/html/state/invoices.rb
68
+ - lib/ydim/html/state/pdf.rb
69
+ - lib/ydim/html/util/lookandfeel.rb
70
+ - lib/ydim/html/util/server.rb
71
+ - lib/ydim/html/util/session.rb
72
+ - lib/ydim/html/util/validator.rb
73
+ - lib/ydim/html/view/ajax_values.rb
74
+ - lib/ydim/html/view/autoinvoice.rb
75
+ - lib/ydim/html/view/autoinvoices.rb
76
+ - lib/ydim/html/view/confirm.rb
77
+ - lib/ydim/html/view/debitor.rb
78
+ - lib/ydim/html/view/debitors.rb
79
+ - lib/ydim/html/view/htmlgrid.rb
80
+ - lib/ydim/html/view/init.rb
81
+ - lib/ydim/html/view/invoice.rb
82
+ - lib/ydim/html/view/invoices.rb
83
+ - lib/ydim/html/view/navigation.rb
84
+ - lib/ydim/html/view/pdf.rb
85
+ - lib/ydim/html/view/template.rb
86
+ - test/selenium.rb
87
+ - test/selenium/selenium-server.jar
88
+ - test/selenium/test_autoinvoice.rb
89
+ - test/selenium/test_debitor.rb
90
+ - test/selenium/test_debitors.rb
91
+ - test/selenium/test_init.rb
92
+ - test/selenium/test_invoice.rb
93
+ - test/selenium/test_invoices.rb
94
+ - test/selenium/unit.rb
95
+ - test/stub/http_server.rb
96
+ - test/suite.rb
97
+ has_rdoc: true
98
+ homepage: http://scm.ywesee.com/?p=ydim-html/.git;a=summary
99
+ licenses: []
100
+
101
+ post_install_message:
102
+ rdoc_options:
103
+ - --main
104
+ - README.txt
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ requirements: []
126
+
127
+ rubyforge_project: ydim_html
128
+ rubygems_version: 1.3.7
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: ywesee Distributed Invoice Manager HTML Interface, Ruby
132
+ test_files:
133
+ - test/selenium/test_autoinvoice.rb
134
+ - test/selenium/test_debitor.rb
135
+ - test/selenium/test_debitors.rb
136
+ - test/selenium/test_init.rb
137
+ - test/selenium/test_invoice.rb
138
+ - test/selenium/test_invoices.rb